It’s often that a student’s first exposure to rigorous mathematics is through set theory, as originally studied by Georg Cantor. This means we will not treat set theory axiomatically (as in ZF set theory), but rather we will take the definition of a set for granted, and allow any operation to be performed on a set. This will be clear when we present examples, and it will be clear why this is a bad idea when we present paradoxes.

## The Basics of Sets

**Definition**: A *set * is a collection of distinct objects, each of which is called an *element* of S. For a potential element , we denote its membership in and lack thereof by the infix symbols , respectively. The proposition is true if and only if is an element of .

**Definition**: The *cardinality* of , denoted , is the number of elements in S.

The elements of a set can in principal be anything: numbers, equations, cats, morals, and even (especially) other sets. There is no restriction on their size, and the order in which we list the objects is irrelevant. For now, we will stick to sets of numbers and later we will move on to sets of other sets.

There are many ways to construct sets, and for finite sets it suffices to list the objects:

Clearly this set has cardinality six. The left and right curly braces are standard notation for the stuff inside a set. Another shorter construction is to simply state the contents of a set (let be the set of even numbers between 0 and 10, inclusive). Sometimes, it will be very important that we construct the sets in a more detailed way than this, because, as we will see, sets can become rather convoluted.

We may construct sets using an implied pattern, i.e. for the positive evens:

For now, we simply allow that this set has infinite cardinality, though we will revisit this notion in more detail later. In this way we define two basic sets of numbers:

We name the *natural numbers*, and the *integers*. Yet another construction allows us to populate a set with all values that satisfy a particular equation or proposition. We denote this . For example, we may define , the *rational numbers* (fractional numbers) as follows:

This is not quite a complete description of how rational numbers work: some fractions are “equivalent” to other fractions, like 2/4 and 1/2. There is an additional piece of data called a “relation” that’s imposed on this set, and any two things which are related are considered equivalent. We’re not going to go into the details of this, but the interested reader should look up an equivalence relation.

Next, we want to describe certain pieces of sets:

**Definition**: A set is a *subset *of a set , denoted , if all elements of are in . i.e., for all implies .

And we recognize that under our standard equality of numbers (i.e. ), we have .

We may now define equality on sets, extending the natural idea that two sets are equal if they contain precisely the same elements:

**Definition**: Two sets are equal if and .

A natural set to construct now is the *power set *of a given set:

**Definition**: the *power set* of , denoted , is the set of all subsets of . i.e. .

Elements of this set are sets themselves, and there are two trivial, yet important sets to recognize are in , namely itself and , the *empty set* which contains no elements, is vacuously a subset of every set.

For a finite set , power sets are strictly larger in size, since there exists a *singleton* set for each . As an exercise for the reader, determine the size of for any finite set , expressed in terms of . For infinite sets, we simply admit that their power sets are also infinite, since we don’t yet have a way to describe “larger” infinities.

## Building Sets From Other Sets

We have a couple of nice operations we may define on sets, which are rather trivial to define.

**Definition**: The *union* of two sets , denoted , is .

**Definition**: The *intersection* of two sets , denoted , is .

As an exercise, try to prove that .

The next definition requires one to remember what an *ordered tuple* is. Specifically, an ordered pair is just like a set which allows for repetition and respects the presented order of elements. So .

**Definition**: The *direct product *(or simply *product*) of two sets , denoted , is .

This is just like in defining the Cartesian Plane as ordered pairs of real numbers. We can extend this even further by defining to be the set of all -tuples of elements in .

## Functions, and Their -Jections

Now that we have sets and ways to build interesting sets, we may define mathematical objects which do stuff with them.

**Definition**: A *relation* on and , is a subset of . Denotationally, we write as shorthand for .

Relations are natural generalizations of on numbers. In general relations need no additional properties, but they are not very interesting unless they do. For more discussion on relations, we point the reader to the Wikipedia page on *equivalence relations*. As an exercise to the reader, prove that set equality (defined above) is an equivalence relation, as expected.

Now, we get to the meat of our discussion on sets: functions.

**Definition**: A *function * is a relation on and , a subset of , with the additional properties that for each , there is exactly one element of the form .

Colloquially, functions ‘accept’ a value from and output something in . This is why we may only have one ordered pair for each , because functions are deterministic. Furthermore, we must be able to put every value from into our function, so no values may be without a corresponding element of .

We have special notation for functions, which was established long before set theory was invented. If , we write to denote the corresponding element in . In addition, we say that a value *maps to* to mean . If the function is implicitly understood, we sometimes just write . Then we have the following definitions:

**Definition**: The *domain* of a function , sometimes denoted , is the set of input values . The *codomain*, denoted , is the set . Since not every value in must be in a pair in , we call the subset of values of which are produced by some input in the *range* of . Rigorously, the range of is .

Now we may speak of some “interesting” functions:

**Definition**: A function is a *surjection* if its range is equal to its codomain. In other words, for every , there is some with , or, equivalently, .

Note that being a surjection on finite sets implies that the domain is at least as big as the codomain. Though it seems trivial, we can use functions in this way to reason about the cardinalities of their domains and codomains.

**Definition**: A function is an *injection *if no two different values map to the same . In other words, if , then .

Similarly, for finite domains/codomains an injection forces the codomain to be at least as big as the domain in cardinality.

Now, we may combine the two properties to get a very special kind of function.

**Definition**: A function is a *bijection *if it is both a surjection and an injection.

A bijection specifically represents a “relabeling” of a given set, in that each element in the domain has exactly one corresponding element in the codomain, and each element in the codomain has exactly one corresponding element in the domain. Thus, the bijection represents changing the label into the label .

Note that for finite sets, since a bijection is both a surjection and an injection, the domain and codomain of a bijection must have the same cardinality! What’s better, is we can extend this to infinite sets.

## To Infinity, and Beyond! (Literally)

**Definition**: Two infinite sets have equal cardinality if there exists a bijection between them.

Now we will prove that two different infinite sets, the natural numbers and the integers, have equal cardinality. This is surprising, because despite the fact that the sets are not equal, one is a subset of the other and they have equal cardinality! So here we go.

Define as follows. Let . Continuing in this way, we see that , and for all . This is clearly a bijection, and hence .

We can extend this to any bijection between an infinite set of positive numbers and the set .

Let’s try to push bijections a bit further. Let’s see if we can construct a bijection between the natural numbers and the positive rationals (and hence the set of all rationals). If integers seemed bigger than the naturals, then the rational numbers must be truly huge. As it turns out, the rationals also have cardinality equal to the natural numbers!

It suffices to show that the natural numbers are equal in cardinality to the nonnegative rationals. Here is a picture describing the bijection:

We arrange the rationals into a grid, such that each blue dot above corresponds to some , where is the x-coordinate of the grid, and is the y-coordinate. Then, we assign to each blue dot a nonnegative integer in the diagonal fashion described by the sequence of arrows. Note these fractions are not necessarily in lowest terms, so some rational numbers correspond to more than one blue dot. To fix this, we simply eliminate the points for which their greatest common divisor is not 1. Then, in assigning the blue dots numbers, we just do so in the same fashion, skipping the places where we deleted bad points.

This bijection establishes that the natural numbers and rationals have identical cardinality. Despite how big the rationals seem, they are just a relabeling of the natural numbers! Astounding.

With this result it seems like *every *infinite set has cardinality equal to the natural numbers. It should be totally easy to find a bijection between the naturals and the real numbers .

Unfortunately, try as we might, no such bijection exists. This was a huge result proven by Georg Cantor in his study of infinite sets, and its proof has become a staple of every mathematics education, called Cantor’s Diagonalization Proof.

First, we recognize that every real number has a representation in base 2 as an infinite sequence of 0’s and 1’s. Thus, if there were such a bijection between the natural numbers and reals, we could list the reals in order of their corresponding naturals, as:

Here each corresponds to the th digit of the th number in the list. Now we may build a real number , the diagonal elements of this matrix. If we take and flip each digit from a 0 to a 1 and vice versa, we get the complement of , call it . Notice that differs from every real number at some digit, because the th real number shares digit with , and hence differs from at the same place. But is a real number, so it must occur somewhere in this list! Call that place . Then, differs from at digit , a contradiction.

Hence, no such bijection can exist. This is amazing! We have just found two infinite sets which *differ* in size! Even though the natural numbers are infinitely large, there are so many mind-bogglingly more real numbers that it is a larger infinity! We need new definitions to make sense of this:

**Definition**: An infinite set is *countably infinite* if there exists a bijection . If no such bijection exists, we call it *uncountably infinite*, or just *uncountable*.

Georg Cantor went on to prove this in general, that there cannot exist a bijection from a set onto its power set (we may realize the reals as the power set of the naturals by a similar decimal expansion). He did so simply by extending the diagonalization argument. But since we are dealing with infinite sets, we need even more definitions of “how hugely infinite” these infinite sets can be. These new measures of set cardinality were also invented by Cantor, and they are called transfinite numbers. Their investigation is beyond the scope of this post, but we encourage the reader to follow up on this fascinating subject.

We have still only scratched the surface of set theory, and we have even left out a lot of basic material to expedite our discussion of uncountability. There is a huge amount of debate that resulted from Cantor’s work, and it inspired many to further pick apart the foundations of mathematics, leading to more rigorous formulations of set theory, and extensions or generalizations such as category theory.

## Sets of Sets of Sets, and so on Ad Insanitum

We wrap up this post with a famous paradox, which makes one question whether all of the operations performed in set theory are justified. It is called Russell’s Paradox, after Bertrand Russell.

Suppose we define a set , which contains itself as an element. This does not break any rules of Cantor’s set theory, because we said a set could be any collection of objects. We may even speak of the set of all sets which contain themselves as elements.

Now let us define the set of all sets which *do not* contain themselves. Call this set . It must be true that either or . If , then is contained in itself, obviously, but then by the definition of , it does not contain itself as an element. This is a contradiction, so . However, if , then satisfies the definition of a set which does not contain itself, so . Again, a contradiction.

This problem has no resolution within Cantor’s world of sets. For this reason (and other paradoxes based on wild constructions of sets), many have come to believe that Cantor’s set theory is not well-founded. That is not to say his arguments and famous results are wrong, but rather that they need to be reproved within a more constrained version of set theory, in which such paradoxes cannot happen.

Such a set theory was eventually found that bypassed Russell’s paradox, and it is called Zermelo-Fraenkel set theory. But even that was not enough! Additional statements, like the Axiom of Choice (which nevertheless does lead to some counter-intuitive theorems), were found which cannot be proved or disproved by the other axioms of ZF set theory.

Rather than give up all that work on axiomatizing set theory, most mathematicians today accept the Axiom of Choice and work around any oddities that arise, resulting in ZFC (ZF + Choice), doing their mathematical work there.

So along with paradoxical curiosities, we have laid all the foundation necessary for reasoning about countability and uncountability, which has already shown up numerous times on this blog.

Until next time!