I'm reading a set theory textbook by Pinter, and this book follows the spirit of NBG set theory and talks about sets and (proper) classes in a very early stage. This is quite satisfactory because the book can (and does) talk about 'functions' whose domains are classes, and 'partially ordered classes' and so on.

But the problem is, when Pinter defines functions, he goes on like

A function is a triple of objects $<f,A,B>$ such that...

and similarly, he also says

By a partially ordered class we mean a pair of objects $<A,G>$, where...

without defining what 'a triple of objects' and 'a pair of objects' is.

Of course, this is not a 'serious' defect, but as a set theory book, this is not quite satisfactory. He had given the Karatowski definition of an ordered pair early on,


but it is clear that this does not make sense when $a,b$ are proper classes. For similar reasons, defining a triple of objects as $((a,b),c)$ would not work.

Is there a way to explain all this in a satisfactory manner?

P.S. This reminds of the situation I had faced when learning category theory for the first time. Almost every algebra or algebraic topology books define category by saying "a category consists of following three data..." without explaining what 'data' really is. Of course this is also not a serious defect when learning, say, algebraic topology, but I would like to resolve the curiosity that I've always had.

  • $\begingroup$ good question $\phantom{}$ $\endgroup$
    – user394255
    Aug 5, 2017 at 14:05
  • $\begingroup$ Aside: in logic, one can introduce pairs in a purely formal way; e.g. by conventionally always using a pair of variables together in formula. This can be systemized, e.g. via type theory. $\endgroup$
    – user14972
    Aug 5, 2017 at 22:13

3 Answers 3


Any reasonable coding mechanism suffices. If $X$ and $Y$ are proper classes, you might define the ordered pair $(X, Y)$ as $X \times \{0\} \cup Y \times \{1\}.$ In fact you could code a transfinite sequence of proper classes $\langle X_{\alpha}: \alpha<\beta \rangle$ as $\bigcup X_{\alpha} \times \{\alpha\},$ where $\beta$ is an ordinal or $Ord.$ This kind of situation arises, for example, when iterating a proper class model by an ultrafilter. The coding scheme isn't usually specified since the specific encoding doesn't really matter.


There are several ways you can handle this, though so far as I know there isn't any particularly standard way to do it analogous to how Kuratowski ordered pairs are standard. The basic idea is that you can encode a pair of classes using a single class. For instance, given two classes $X$ and $Y$, you can form their disjoint union $X\times\{0\}\cup Y\times \{1\}$ (where $\times$ is defined as taking the class of Kuratowski ordered pairs, which is fine since we're only taking ordered pairs of sets). Since the classes $X$ and $Y$ are definable from $X\times \{0\}\cup Y\times\{1\}$, it is adequate to represent the ordered pair $(X,Y)$.


There is a useful generalization of this: One can encode a class-valued function as an object by flattening it to the relation $R_f$ given by

$$ y \in f(x) \Longleftrightarrow (x,y) \in R_f $$

So if you encode an ordered pair as a function $\{ 0, 1 \} \to \mathbf{Cls}$, this transposition into a relation gives the encoding described in the other posts.

This is maybe more appealing in a functional formulation. Any class may be viewed as a function $\mathbf{Set}\to \{ \text{true}, \text{false} \}$. Therefore, any function $f:S \to \mathbf{Cls}$ can be transposed into a function $g:S \times \mathbf{Set} \to \{ \text{true}, \text{false} \}$ given by

$$ g(x,y) = f(x)(y) $$


You must log in to answer this question.

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