Example: programmers' lists
Trade-offs; depends on use-case
What trade-offs will we need to consider?
Easy to write down examples:
Hard to define a set precisely!
By an ‘aggregate’ (Menge) we are to understand any collection into a whole $M$ of definite and separate objects $m$ of our intuition or thought. These objects are called the ‘elements’ of $M$.
Sets are unordered: $\{x, y\} = \{y, x\}$.
What if we want tuples, where $(x, y) \neq (y, x)$?
This generalises to ordinal numbers, which classify "well-ordered sets".
Constructing things using sets is mostly academic.
C.f. object-oriented programming: classes versus interfaces
A simple (naive) definition of a set causes problems.
A statement can't be true and false at the same time.
What could be wrong with our logic? Options:
Specify how sets should behave. Some highlights:
All together there are eight ZF axioms.
Workaround: use a different word.
A scary 9th axiom on top of ZF.
Let $\{S_i\}_{i \in I}$ be nonempty sets indexed by $I$. Then we can choose an element $x_i \in S_i$ for each $i \in I$.
What does "choose" mean when $I$ or $S_i$ is infinite?
The axiom of choice (AC) is powerful, but gives nonconstructive proofs.
AC tells us something exists, but not how to find it.
AC implies or is equivalent to many reasonable, and many unreasonable statements.
AC is used begrudgingly and with suspicion.
Any object $x$ either does or does not belong to a set $V.$
Membership is binary: true or false.
Can define unions, intersections and complements of fuzzy sets which take into account the fuzziness described by $\mu_A$.