Skip to content

Unions: the members of the members form a set

Level: 201 · for anyone reading ∀v₀∃v₁∀v₂(v₂ ∈ v₁ ⇔ ∃v₃(v₃ ∈ v₀ ∧ v₂ ∈ v₃)) and seeing no ∪ in it

One line: The axiom of unions does not mention a ∪ b; it gives ∪a, the set of everything that is a member of some member of a, from which a ∪ b is the special case ∪{a, b}; it never fails in a finite universe, because opening a set one level lowers its rank, and its mirror image, the intersection ∩a, is only safe when a is not empty.

The axiom, read aloud

∀v₀ ∃v₁ ∀v₂ (v₂ ∈ v₁ ⇔ ∃v₃ (v₃ ∈ v₀ ∧ v₂ ∈ v₃))

For every set a there is a set b such that z is a member of b exactly when there is some set w with w a member of a and z a member of w. In words, b collects the members of the members of a: it opens every member of a one level and pours out what is inside. The book writes it ∪a, or ∪ₓ∈ₐ x, and calls it the union of the family a.

Notice what the formula does not say. There is no a ∪ b in it. The two-set union everyone knows is derived: a ∪ b = ∪{a, b}, the pair first, then the axiom, which is section 3 of the program and page 112 of the book. Writing the axiom for a whole family at once costs nothing extra and buys the union of infinitely many sets, which a ∪ b repeated could never reach.

What it is for

Everything finite. {a, b, c} = {a, b} ∪ {c}, then {a, b, c, d}, and so on. With pairs, this axiom makes every finite set of sets you can write down.

Everything infinite, in one step. ∪ of a family of intervals, ∪ of the sets in a sequence, the union of all the sets a construction has produced so far: each is a single application. The successor n ∪ {n} of a von Neumann number, and ∪ of a set of ordinals, which Cori and Lascar prove is their least upper bound (Proposition 7.26), are unions of this kind, and section 1 shows ∪3 = 2, the union undoing a successor.

Its mirror image needs care. The intersection ∩a, the set of things in every member of a, is not an axiom but a consequence of comprehension: pick one member c of a and keep those members of c that are in every member of a. That needs a member to pick. For a = ∅, "x is in every member of a" is true of every x, since there is no member to fail, so ∩∅ would be the set of all sets, which does not exist. Section 5 shows the vacuous truth in one line of Python. The book makes the same point at the top of page 115.

Why it never fails in a finite universe

Opening a set one level makes it shallower: rank(∪a) is at most rank(a) − 1. So whatever a is in V₄, ∪a is a set of lower rank and already in V₄. Section 2 checks all sixteen. This is the opposite of pairs and power set, which go one rank up and break every V_n, and it is why the chapter's table has True in this row for every finite universe. An axiom can be needed without ever being the one a small universe lacks: unions are needed because the sets they build, such as the union of an infinite family, are not reachable by the other axioms, not because any V_n refuses them.

What the program prints

Verified output of unions.py — regenerated by tools/run_examples.py, never hand-typed.

1. THE AXIOM, AND WHAT ∪a IS
   ∀v0 ∃v1 ∀v2 (v2 ∈ v1 ⇔ ∃v3 (v3 ∈ v0 ∧ v2 ∈ v3))
   for every a there is a b such that z is in b exactly when z is in
   some member of a. That b is ∪a, the union of the family a.
   a = ∅                      ∪a = ∅
   a = {∅}                    ∪a = ∅
   a = {{∅}}                  ∪a = {∅}
   a = {{∅}, {{∅}}}           ∪a = {∅, {∅}}
   a = {∅, {∅}, {∅, {∅}}}     ∪a = {∅, {∅}}
   ∪3 = 2: for a von Neumann number, ∪(n + 1) = n.

2. WHY IT NEVER FAILS IN V_n: A UNION HAS LOWER RANK
   ∪a is in V_4 for all 16 sets a of V_4: True
   and rank(∪a) ≤ rank(a) - 1 for every non-empty a: True
   Pairs and power sets go one rank up and break V_n; unions go
   one rank down and never do.

3. a ∪ b AND {a, b, c} FROM PAIRS AND UNIONS, THE BOOK'S WAY
   a = {∅},  b = {{∅}},  c = {∅, {∅}}
   {a, b}            = {{∅}, {{∅}}}
   a ∪ b = ∪{a, b}   = {∅, {∅}}
   {a, b, c} = {a, b} ∪ {c} = {{∅}, {{∅}}, {∅, {∅}}}
   Python: a | b is a ∪ b, and set().union(*a) is ∪a.
   a | b == ∪{a, b}: True

4. THE TRAP: ∪a IS NOT a
   a = {{1, 2}, {3}}   has 2 members, both sets
   ∪a = [1, 2, 3]   has 3 members, the numbers
   ∪ opens every member one level. Applied to {1, 2, 3} it would
   open the numbers, which in set theory are sets too.

5. THE DUAL, ∩a, NEEDS a ≠ ∅
   a = {{1,2,3}, {2,3,4}, {3,4,5}}:  ∩a = {x : x is in every member of a} = [3]
   For a = ∅ the condition 'x is in every member of a' holds for every x,
   because there is no member to fail it, so ∩∅ would be the set of all
   sets, which does not exist. ∩a comes from comprehension inside one
   member of a, and that needs a member.
   x in every member of ∅, for x = 7: True

Section 4 is the mistake everyone makes once: ∪a is not a. Applied to a set of numbers it would open the numbers, and in set theory numbers are sets, so ∪{1, 2, 3} is a real set, and it is not {1, 2, 3}. Python's set().union(*a) is ∪a and a | b is a ∪ b, and the two agree where both make sense.

Po polsku, w skrócie

Aksjomat sumy nie mówi o a ∪ b. Mówi: dla każdego zbioru a istnieje zbiór ∪a, którego elementami są elementy elementów a, czyli to, co wysypie się z członków a po otwarciu każdego o jeden poziom. Suma dwóch zbiorów to przypadek szczególny: a ∪ b = ∪{a, b}, najpierw para, potem aksjomat. Dzięki temu jeden aksjomat daje też sumę nieskończenie wielu zbiorów. W uniwersum skończonym V₄ aksjomat zawsze zachodzi, bo otwarcie zbioru obniża jego rangę; para i zbiór potęgowy podnoszą rangę i psują każde V_n, suma nie. Odbicie lustrzane, przekrój ∩a, wymaga a ≠ ∅: dla a = ∅ warunek „x należy do każdego elementu a" jest spełniony pusto przez wszystko, więc ∩∅ byłby zbiorem wszystkich zbiorów, którego nie ma. Pułapka: ∪a to nie a; ∪{{1, 2}, {3}} = {1, 2, 3}.

Auf Deutsch: Stichwörter

Vereinigungsaxiom: die Elemente der Elemente bilden eine Menge; ⋃A, und daraus A ∪ B.

Stichwörter: Vereinigungsaxiom, große Vereinigung ⋃, Vereinigung zweier Mengen, Elemente der Elemente, Nachfolger.

Run it yourself

From the root of your clone of this repository:

python3 13_Axioms_of_Set_Theory/unions/examples/unions.py

See also