Previous: All About Countable Saturation
After I had finished writing up and illustrating the proof of countable saturation in the last post, I came up with a significantly simpler proof. Darn! I don’t want to erase all those pretty pictures I already made, so I’ll just include this proof as a separate little bonus.
I’m also going to be a little more careful with notation that I have been thus far, by distinguishing structures from their universes. The fancy π will refer to a structure, which has both a universe as well as an interpretation of all the constant, function, and relation symbols. The universe of π will be written with a non-fancy M.
The Proof
Let π be the ultraproduct β(πk)kββ/U.
Let S = {Ο1(x), Ο2(x), Ο3(x), β¦} be any countable set of formulas with countably many parameters.
Suppose S is finitely realizable in π.
Then for each n, π β¨ βx (Ο1(x)β§β¦β§Οn(x)).
So by ΕoΕβs theorem, for each n, the set of models that realize Ο1(x)β§β¦β§Οn(x) is U-large.
So for each n, { k | πk β¨ βx (Ο1(x)β§β¦β§Οn(x)) } β U.
Here’s a visualization:

In this image, π1 realizes Ο1(x)β§β¦β§Ο5(x), π3 realizes all of S, and π5 doesn’t realize Ο1(x).
The finite realizability of S tells us that {1, 2, 3, 4, 6, 7, …} (the indices of models realizing Ο1) is U-large. So are {1, 2, 3, 4, 7, …}, {1, 3, 4, 7, …}, {3, 4, 7, …}, and so on.
Now we add a new constant c to L.
We want to define c on each πk in such a way that in π, c refers to an element of M that realizes all of S.
We do this by saying that in πk, c refers to an element of Mk that realizes as large an initial segment of S as possible. More precisely:
For each finite k, consider the largest n for which πk β¨ βx (Ο1(x)β§β¦β§Οn(x)). (In the above example, for k = 1 we’d have n = 5. For k = 2 we’d have n = 2. And so on.)
In πk, c will refer to any object in Mk that realizes Ο1 through Οn. Let’s call this object ak.
In other words, ak is an element of Mk that realizes as large of an initial segment of S as possible, and c refers to this element.
Two special cases:
What if πk realizes all of S? Then in πk, c will refer to any ak β Mk that realizes all of S.
And if πk doesnβt realize Ο1? Then in πk, c will refer to any arbitrary element of Mk.
One important consequence of this way of defining the “ak“s is that for any k and n, ak realizes Ο1(x)β§β¦β§Οn(x) in πk if and only if πk β¨ βx (Ο1(x)β§β¦β§Οn(x)). This’ll be used in a few lines, marked by a blue =.
The ultraproduct construction now tells us exactly what c refers to in π: the equivalence class [a1, a2, a3, β¦].
All that’s left to do is to prove that this element of π realizes all of S. Here’s the argument:
Let Οn(x) be any arbitrary formula in S.
{ k | ak realizes Οn in πk } β { k | ak realizes Ο1(x)β§β¦β§Οn(x) in πk } = { k | πk β¨ βx (Ο1(x)β§β¦β§Οn(x)) } β U.
Since ultrafilters are closed under supersets, { k | ak realizes Οn(x) in πk } β U
Since c refers to ak in πk, { k | πk β¨ Οn(c) } β U.
So by ΕoΕβs theorem, π β¨ Οn(c).
So in π, [a1, a2, a3, β¦] realizes Οn.
Since Οn was an arbitrary formula in S, [a1, a2, a3, β¦] realizes all of S.
And we’re done! Since [a1, a2, a3, β¦] realizes all of S, S is realizable!
Concluding thoughts
This proof is pretty similar to the one in the last post, but with some unnecessary bells and whistles removed. Unlike the last one, this one was designed by me personally, so it’s possible there’s something important missing. But I doubt it!
It has a similar “constructive” character to the last proof, in that it doesn’t just say that S is realizable in M, it also tells you exactly what the element of M that realizes S is. I’ve noticed that this “constructiveness” is a common feature of proofs in this area of logic. Look back at our proofs of the compactness theorem. They didn’t just tell us that our starting set of sentences was satisfiable; they actually gave us a recipe for constructing a model of that set of sentences.
Now, why am I putting constructive in quotation marks? The thing is, on the traditional notion of constructiveness, none of these proofs are really constructive, because free ultrafilters canβt be shown to exist for arbitrary infinite sets without the axiom of choice. (Remember our usage of Zorn’s lemma in Part 3 of the series?) The axiom of choice is a big no-no for the constructivist, and there is a sense in which you canβt super concretely βget your hands onβ a free ultrafilter. Thereβs no nice general procedure for specifying whatβs in the ultrafilter and what’s not; if there was we wouldn’t need choice, we’d just define the ultrafilter with this procedure!
Nonetheless, I think thereβs a nice notion of βconditional constructivenessβ, where you say βassuming that you somehow get your hands on an ultrafilter, then what can you construct with itβ. And in this sense, you can construct all the things I gave examples of earlier.
Not all nonconstructive objects are equally scary or hard-to-comprehend in my eyes, so it’s nice to be able to say something like “these are both nonconstructive in the absolute sense, but the first is constructive conditional on the existence of a free ultrafilter on the naturals, and the second is constructive conditional on the ZFC-independent existence of a large cardinal.” An approach like this frees you up to care about constructiveness without having to ascribe to the full strict Brouwerian philosophy.