Most of the axioms of ZF set theory are pretty easy to understand. They tell which sets exist, creating a rich universe of objects for set theory to talk about.

**Null.**There is a set with no elements.**Pair.**Given two sets`a`and`b`, there is a set that contains exactly those two sets.**Union.**Given a set of sets`S`, there is a set that’s the union of the sets in`S`. In other words, a set that contains exactly the elements of the elements of`S`.

Even if you stopped here, you’ve already agreed to the existence of infinitely many sets, and sets of every finite size!

**Infinity.**There is a set that corresponds to the natural numbers. It contains the empty set, and for each set`x`in it, it also contains a set with one more element, consisting of all`x`’s elements, plus`x`itself.**Subsets.**Given a set`S`, there is a set of all subsets of`S`.**Comprehension.**Given a set`S`and a function`F`, there is a set that contains exactly`F`(`x`) for all`x`in`S`.**Separation.**Given a set`S`and a predicate`P`, there is a set that contains exactly those elements of`S`that satisfy the predicate.

In the formal language of mathematics, these axioms are mostly phrased quite similarly: “[For all `<given ingredients>`,] there exists a set `A` such that, for all `x`, `x` is in `A` if and only if `<properties>`.” The basic linguistic technology of populating a universe.

The other two axioms of ZF that are not like these. I’m saving those for later.

#### Exercises

Over the past couple of years, my notebooks are increasingly full of questions. I wonder more, and read even slower.

Stars mark questions that are at least a bit beyond my grasp so far.

There is a mathematical notation for the sets postulated by each of these axioms. For example,

**Null**points to the empty set, which is written ∅. How do you write the others?Does your favorite programming language have anything like sets? Sure it does—arrays or lists are close enough. How many of the axioms does your language satisfy? How can you write those sets? For example, the null set could be written

`[]`

in JavaScript. Most languages I know provide at least**Null**,**Pair**,**Union**,**Comprehension**and**Separation**, though not necessarily under those names!Famously, if there were a “set of all sets”, then you could use

**Separation**to obtain a contradiction. How? (Answer.)If you apply

**Union**to the null set, you get the null set. (There are no elements of elements of ∅.) Is there any other kind of set that is the union of its own elements?Which axioms can take a set and prove the existence of a larger set? Do these axioms imply the existence of any sets larger than the one postulated by

**Infinity**? If so, how?✻ How is it that these axioms, applied finitely many times, can construct objects such as non-computable numbers?

✻ What does “exist” mean here?

✻ The standard version of

**Infinity**is rather particular. Is it possible to write “there is a set that is infinite” in the language of set theory? Is that not sufficient?✻ The last two axioms,

**Comprehension**and**Separation**, require funny ingredients: a “function” and a “predicate”, respectively. This produces a strong sympathetic vibration deep in the computer science part of my brain. It seems like these axioms are ways to turn mathematical expressions into sets. In programming terms, they turn code into data. Can this be made precise? Do the axioms in effect say “There is an oracle that serves as an ‘interpreter’ for mathematical expressions”? Is this like the relationship between lambdas and the functions they compute?✻ Why can’t

**Comprehension**and**Separation**be written in terms of sets? All functions you could productively use with**Comprehension**are sets, right? (Functions are relations, and relations are sets of ordered pairs, which can be expressed using sets.)✻ Why isn’t

**Separation**redundant? Doesn’t**Subsets**postulate the existence of*all*subsets of a set? And**Separation**the existence of a*particular*subset?✻ It’s pretty common in math to say, “Let X be the smallest set satisfying the following conditions:” and provide a list of rules like the axioms above. Why wouldn't this work for defining the universe of sets? That is, “Let V be the smallest class of sets satisfying the following axioms: ...”. Is this kind of approach inexpressible in the language of set theory, or just logically unsound?