3
$\begingroup$

I am confused about an issue in set theory.

Tychonoff's theorem says that "an arbitrary product of compact topological spaces is compact". We often talk of an index set $I$ and then for each $n\in I$ we have a compact topological space $X_n$, and the claim is that $\prod_{n\in I}X_n$ is compact. There's a really cool super-short proof of this using filters by the way ;-)

My question is about how one might formalise this in ZFC. In Lean I just found myself writing X : I → Type for the family, and in the set theory model of Lean this is a "function" from a set $I$ to "the universe of all sets". This can't be done in ZFC, so one might want to start brandishing the axiom of replacement around a bit. My question is I think on the details of this.

Let's say I'm talking to you, a set theorist, and I ask you what your definition of a topological space structure is. You say it's an ordered pair consisting of a set $X$ and a topology $\mathcal{T}$ on $X$, which is a collection of subsets of $X$ satisfying some axioms. I say great, I write a few lines of computer code (just a small interface corresponding to your definition), run a proof checking system on my code, and it outputs a Haskell function which takes as input a natural number n and then prints out two strings which uniquely define a set X n and a topology T n on X n. To be more precise, for an input n it actually prints out a term which a set theory-based theorem prover such as Mizar or Metamath can understand -- it makes no "external" assumptions about the explicit model of ZFC we're working in, and X n and T n are provably well-defined unique objects. Furthermore I can prove that X n is compact for all n and indeed a computer has checked my proof, but I won't bore you with the details. The question is how now to state that the product of the X n is compact in ZFC, because I have not given you a function in the internal sense of a set which happens to be a function in the sense that it's a set of ordered pairs blah blah blah.

What I am unclear about is whether one can make the set of pairs $(n,X_n)$ in ZFC in order to be able to form the product needed to state Tychonoff's theorem.

$\endgroup$
10
  • $\begingroup$ Instead of X : I →Type, may I suggest using $\rm\LaTeX$'s own \texttt and having $\texttt{X:I}\to\texttt{Type}$, if you prefer a distinct font (the $\to$ is outside the \texttt environment). For subscripts you can use \texttt X_{\texttt n}, for example. $\endgroup$
    – Asaf Karagila
    Commented Mar 16, 2021 at 13:45
  • $\begingroup$ @Asaf Could \mathtt be better than \texttt in the math-environment? $\endgroup$
    – Hanul Jeon
    Commented Mar 16, 2021 at 14:00
  • $\begingroup$ @Hanul: It could. You're right. In previous version of MathJax the \text* and \math* were the same function. But I see now that \mathtt will compile the other symbols. Thanks! $\endgroup$
    – Asaf Karagila
    Commented Mar 16, 2021 at 14:01
  • 1
    $\begingroup$ What is the actual question? Is it that in your code you find yourself having to go up one universe level, and you would like to understand how to avoid that? Somehow currently the question seems very ill-phrased, as you tell us nothing about what $X_n$ is (and go back and forth between ZFC and a type theory that isn't really specified). Surely your construction of $X_n$ can also be written down in ZFC and defines a function $n\mapsto X_n$ in ZFC. $\endgroup$ Commented Mar 17, 2021 at 15:42
  • 1
    $\begingroup$ I think that I need to do some kind of recursive analysis on my program to prove that there's some first order formula which expresses X_n and then I use replacement. I see. So basically I need to check that my program "conforms to some minimum standard" (e.g. doesn't start referring to things it shouldn't do, stopping the induction from working) $\endgroup$ Commented Mar 17, 2021 at 17:36

1 Answer 1

7
$\begingroup$

This seems to require Replacement, as you point out. But not really, as you're about to find out.

What $\sf ZFC$ proves is that if $f$ is a function, i.e. a set of ordered pairs etc. (or however you choose to encode a function, really), such that for every $i$ in the domain of $f$, $f(i)$ is a topological space, that is an ordered pair $(X_i,T_i)$ satisfying the axioms of a compact topological space, then the topological space defined as $\prod X_i$ with the product topology, is also compact.

What $\sf ZFC$ does not prove is that if you, living in the meta-theory, specify for each $i$ in some index set, a topological space, in the meta-theory, then the product is compact, or even exists. If $M$ is a countable model of $\sf ZFC$, you can enumerate all the compact spaces inside of it, and consider for each $n<\omega$, the $n$th compact space. Obviously the product is not going to be in the model, since from the internal point of view this is a proper class.

So you, writing in Haskell1 need to decide what you want to do. If type theory is your meta-theory, then the function $\tt X\colon I\to Comp$ is not really inside the universe of set theory, and is not subject to the definitions and consequences of $\sf ZFC$.

But if your type theory is taking place inside a universe of set theory, then $\tt X$ is a function, internal to the universe of sets. So you don't even need Replacement anymore, since by positing that $\tt X$ "exists" you already posits that it is a set, and therefore has a domain and range, as wanted.

This is similar to saying that as a professor you can answer each of the questions, and quite possibly make a mistake in your solution. But you're not module to failing the course and being kicked out of the degree. You're only subject to the scorn of your angry students (and possibly other issues on a faculty level).


  1. We are currently not accepting Haskell code. Come back when you wrote it in Common Lisp. But let's put that aside for the moment.
$\endgroup$
7
  • $\begingroup$ It's just a computer program takes in a number and prints out a string. How do I know whether what it's doing is taking place in a metatheory? I'm still confused :-( $\endgroup$ Commented Mar 17, 2021 at 11:14
  • $\begingroup$ The meta-theory is where you prove statements about ZFC. If you are formalising ZFC inside type theory, e.g. as requiring that objects of type $\mathtt{Set}$ have certain properties, then your computer program is in the meta-theory. If you're formalising type theory internal to ZFC, then your computer program is an algorithm that runs inside a universe of ZFC, in which case you can consider its outputs as "completed" (since the universe is static, all the results are already there), and just apply Tychonoff's theorem. $\endgroup$
    – Asaf Karagila
    Commented Mar 17, 2021 at 11:30
  • $\begingroup$ Many thanks for these comments. Ok I understand now. I can confirm that the output of my program is a sequence of tokens which can be interpreted as a term in the underlying logic in a sane way. I will edit my question to clarify what I am asking. Just to be clear -- the point I am not clear on is how to make a function (in the sense of ZFC) from my Haskell program. $\endgroup$ Commented Mar 17, 2021 at 15:29
  • $\begingroup$ This makes sense except for the analogy involving the professor at the end which leaves me feeling more confused. $\endgroup$
    – JoshuaZ
    Commented Mar 17, 2021 at 16:11
  • 2
    $\begingroup$ @Kevin: Yes. That's correct. And now, arguably, you do need a bit of Replacement. $\endgroup$
    – Asaf Karagila
    Commented Mar 17, 2021 at 19:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .