The axiom of pairing asserts that for any two objects a and b, there exists a set {a, b} containing exactly those two elements. From pairing alone one can form singletons ({a} = {a, a}) and, together with extensionality, construct the Kuratowski ordered pair: (a, b) = {{a}, {a, b}}. This encoding reduces ordered pairs — and therefore relations, functions, and Cartesian products — to pure sets. Without pairing, the ZFC universe could not bootstrap from individual sets to structured collections.
Start by applying the axiom explicitly: given sets x and y, invoke pairing to obtain {x, y}. Then build the Kuratowski pair and prove the characteristic property: (a, b) = (c, d) if and only if a = c and b = d. This exercise reveals how a seemingly trivial axiom enables the encoding of order within an unordered framework.
From your study of the ZFC axioms, you know that the entire edifice of set theory must be built from a bare, sparse foundation — the empty set and a handful of rules. The Axiom of Pairing is the first constructive axiom: it says that for any two sets *a* and *b*, you are guaranteed that the set {*a*, *b*} exists. This sounds almost trivially obvious, but remember that in ZFC nothing exists unless an axiom explicitly licenses it. Without pairing, you could not even form a two-element collection, and the universe of sets would be nearly useless for mathematics.
A subtle but important consequence of extensionality (which you already know states that sets with the same elements are equal) is that pairing also gives you singletons. If you apply pairing to *a* and *a*, you get {*a*, *a*} — but extensionality says this is the same set as {*a*}, since the only element is *a*. So {*a*} exists for any set *a*. With singletons in hand, you can also form the singleton of a singleton: {{*a*}} is a set, and so is {*a*, {*a*}}. These nested structures are the raw material for building more complex sets.
The most important application of pairing is the Kuratowski ordered pair. Because sets are inherently unordered — {*a*, *b*} = {*b*, *a*} — there is no obvious way to encode the distinction between (*a*, *b*) and (*b*, *a*) using bare sets. The Kuratowski solution is elegant: define (*a*, *b*) = {{*a*}, {*a*, *b*}}. To see why this works, try to prove the characteristic property: (*a*, *b*) = (*c*, *d*) if and only if *a* = *c* and *b* = *d*. The proof turns on the fact that the singleton {*a*} uniquely identifies the first coordinate, while {*a*, *b*} encodes the pair. The ordered structure is hidden inside nesting depth.
Why does this matter? Because relations and functions are formally defined as sets of ordered pairs. When your calculus textbook defines a function *f* as a rule assigning one output to each input, the set-theoretic version requires ordered pairs to exist as sets. The full chain is: pairing → Kuratowski pair → Cartesian product → relation → function. Every structure you will encounter in mathematics — graphs, sequences, bijections, morphisms — ultimately rests on this axiom. One modest-sounding guarantee that {*a*, *b*} exists turns out to be the hinge on which ordered mathematics swings.