Skip to the reading
Quodlibeta deep-dive companion · drawn from The Combinators, §III

The same song, sung at different speeds

The Clock

There is not one fixed-point combinator but an endless population of them, bred by a single operator. The deep fact about that population is that its members are indistinguishable to every ordinary instrument: each has the same Böhm tree, the same denotation, the same infinite unfolding. What tells two combinators apart is not what they compute but how fast — the tempo of their reduction, recorded by a clock. This companion catalogues the family, proves why it looks uniform, and follows the one invariant fine enough to see the differences, out to the questions that are still open and the boundary where no algorithm can follow.

the aviary · the same tree · the clock · the open frontier · the undecidable family

The Combinators established that the term we casually call Y is one of infinitely many, all of them fixed points of a single generator δ. That was a headcount. This companion is the natural history: how the family is bred, how its members are named, and — the question that turns out to run deepest — how, or whether, they can be told apart. For the family hides a genuine surprise, and the surprise is what makes it worth a volume.

The surprise is that the combinators all look identical. Every fixed-point combinator satisfies Y f =β f(Y f), and that single equation forces head reduction to drive each of them into the same infinite unfolding f(f(f(…))). They share one Böhm tree — the standard semantic fingerprint of a λ-term — and so they are equal in the models the Böhm tree induces, equal to every instrument that reads only the eventual shape of a computation. The whole apparatus of separation that distinguishes ordinary terms falls silent here. And yet the combinators are not the same term: Curry's and Turing's are not interconvertible, and the tower Y, Yδ, Yδ², … is a genuine tower. Something distinguishes them that no Böhm tree can see.

That something is tempo. Two combinators with one Böhm tree differ in the speed at which they produce it — how many reduction steps fall between one f and the next — and that speed, annotated onto the tree, is the clock. The clock is the finest instrument the subject has, and it is the through-line of this volume. Five movements: the aviary, Smullyan's enchanted forest of birds, where the generator turns out to be an Owl and the fixed-point combinator a Sage bird assembled from three others; the same tree, where Böhm trees are built and the uniformity proven; the clock, where the tempo is defined, computed, and shown to slow by a fixed amount at each turn of the generator; the open frontier, where some of the most elementary questions about the family remain unanswered; and the undecidable family, where we find that no procedure can so much as recognise a combinator. A population that all sings one song, at speeds no algorithm can sort.

I · the aviary

An enchanted forest of birds

Smullyan recast combinatory logic as ornithology: every combinator is a bird, application is one bird calling the name of another, and the fixed-point theorem becomes the claim that every bird is fond of some bird. The generator of our family turns out to be an Owl, and the fixed-point combinator a Sage bird built from three others.

birds, and the fondness relation  In Raymond Smullyan's To Mock a Mockingbird the combinators live as birds in a forest. To call A to B — to apply one to the other — is to call out the name B to the bird A, which answers with the name of some bird AB. A bird A is said to be fond of a bird x when calling x to it returns x itself: A x = x. In this dialect the Fixed-Point Theorem reads as a fact of natural history — every bird is fond of at least one bird — and a fixed-point combinator is a Sage bird (Smullyan writes Θ): a single bird that, called to any bird x, names a bird that x is fond of, since x(Θ x) = Θ x. The forest has a small founding population. The Mockingbird M repeats what it hears, M x = x x; the Lark L obeys L x y = x(y y); the Bluebird B composes, B x y z = x(y z); the Kestrel K x y = x and the Starling S x y z = x z(y z) are the two from which, with the Identity bird I, every other bird can be derived.

the Sage bird is three birds in a row — Θ = B M L
The fixed-point combinator is not a primitive of the forest; it is assembled. Compose the Bluebird, the Mockingbird and the Lark: B M L f = M(L f) = (L f)(L f) = f((L f)(L f)) — so B M L f reduces to (L f)(L f), a fixed point of f, making Θ = B M L a fixed-point combinator. And it is exactly Curry's: since the Lark gives L f = λy.f(y y), the term (L f)(L f) is (λx.f(x x))(λx.f(x x)), the body of Y f. Curry's combinator is the Mockingbird's self-application wrapped around the Lark — the knot tied by three birds calling each other's names.
the generator is an Owl — δ = S I = O
The operator whose fixed points are the fixed-point combinators has a name in the aviary too. The Owl obeys O x y = y(x y), and a single derivation identifies it: S I x y = I y(x y) = y(x y), so O = S I; and O is precisely the generator δ = λy.λf.f(y f). So Y is a fixed-point combinator exactly when it is a fixed point of the Owl, Y =βη O Y; and Böhm's observation that Y δ is again a combinator becomes the rule that postfixing the Owl breeds new ones. The whole infinite family Y, Y O, Y O O, … — the Böhm sequence — is one combinator with the Owl's name called after it, again and again.
the Böhm sequence — postfix the Owl δ = S I to breed the next combinator
each is a distinct fixed-point combinator · checked by running its call-by-value image on the factorial functional
each row is a genuinely new combinator — and each still computes the factorial, because each is still a fixed-point combinator. The terms lengthen without bound; the recursion they perform never changes. The next movement asks the question this raises: if they all do the same thing, in what sense are they different birds?
II · the same tree

Every combinator, one Böhm tree

The Böhm tree is the standard fingerprint of a λ-term — the infinite record of its head normal forms. Read it off any fixed-point combinator and you get the same answer, the unbroken spine λf.fω. This is why the family looks uniform, and why the usual means of telling terms apart cannot touch it.

head normal form, and the tree of them  A λ-term is solvable when it has a head normal form — when it reduces to λx₁…xₙ. y M₁…Mₖ, an abstraction over a variable y (the head) applied to arguments. The head is the one stable thing a computation commits to first; everything else can still change. The Böhm tree BT(M) records exactly this, recursively: head-reduce M to its head normal form, write down the head, and hang beneath it the Böhm trees of the arguments M₁, …, Mₖ — descending forever if the term never stops producing heads. A term with no head normal form at all (an unsolvable term, like Ω) contributes nothing, a bare ⊥. The Böhm tree is the term's eventual skeleton, the part of its behaviour that survives all further reduction.

the spine is forced — BT(Y) = λf.fω for every fixed-point combinator
Compute the tree of any fixed-point combinator and the answer is fixed in advance. Because Y f =β f(Y f), the term Y f head-reduces to a head normal form whose head is f, with a single argument that is again (convertible to) Y f; so its tree is f over f over f, without end, and BT(Y) = λf.f(f(f(…))), written λf.fω. Every combinator in the family yields this one tree — Curry's, Turing's, every rung of the Böhm sequence — because the defining equation alone determines it. They are therefore equal in the model that Böhm trees induce, equal to any observer who reads only the eventual shape of the unfolding. On this evidence the family is a single point.
head-reduce Y f and watch the spine appear — one f at a time
switch combinators: the spine is the same for every one of them
the head structure is identical for all three — only the inner term differs (Y hides (λx.f(xx))(λx.f(xx)) where Θ hides Θ f), and the Böhm tree forgets exactly that difference. Same tree, different terms.

why this silences the usual instrument  The reason the shared tree matters is that the Böhm tree is normally decisive. Böhm's separation theorem (1968) says that two terms with different Böhm trees can always be pulled apart by some context — fed to a surrounding term that sends one to true and the other to false — and this “Böhm-out” technique is the engine behind the standard models, where two terms are equal precisely when their Böhm trees agree (up to the infinite η-expansions that D∞ also identifies). For ordinary terms, the tree is the verdict. But separation only separates trees that differ, and the combinators' trees do not differ. The single most powerful instrument for distinguishing λ-terms returns, for this family, no reading at all. If the combinators are genuinely distinct — and they are — the difference must live in something the tree throws away.

III · the clock

The tempo that tells them apart

If the combinators are distinct yet share a tree, the difference must be in something the tree discards — and what it discards is timing. Annotate each node of the Böhm tree with how long it took to produce, and the family separates: the combinators sing one song at audibly different speeds, and the generator slows the song by a fixed amount each time it is applied.

putting a clock on the tree  The Böhm tree records which heads appear and forgets when. Restore the timing and you have the instrument the modern theory turns on: the clocked Böhm tree of Endrullis, Hendriks and Klop, in which every node carries the number of head-reduction steps it cost to expose. The bare tree of a fixed-point combinator is the featureless spine f, f, f, …; its clock is the sequence of waits between one f and the next. That sequence is not featureless at all. It is a genuine invariant of the term — coarse enough to ignore the cosmetic choices of bound-variable names, fine enough to register a real difference in the rhythm of computation — and on this family it speaks where the tree was silent.

the clocks, computed — and the Owl slows them by two
Read the head-step count to each successive f and the four most familiar combinators come apart cleanly:
Curry  Y :  2 1 1 1 1 1 …
Turing Θ :  2 2 2 2 2 2 …
Y δ     :  4 3 3 3 3 3 …
Y δ δ   :  6 5 5 5 5 5 …

Curry's settles to one step per f, Turing's to two; and each postfixing of the Owl δ = S I raises the steady tempo by exactly two — from 1 to 3 to 5. This is what “δ slows the clock” means, made quantitative: the generator does not change the song, only its speed, and it always slows it by the same amount. Distinct clocks force β-inconvertibility, so this single table proves all four combinators pairwise non-convertible — a fact, recall, that no Böhm tree could establish.
the clock, computed live — bar height is the head-step wait before each f
identical Böhm tree, four different tempos · the Owl lifts every bar by two
every bar marks one wait; taller means slower — the four combinators write the same word f f f … at four speeds. Curry's hurries after its first step; Turing's keeps an even two; the Owl, postfixed, drags each successive combinator two steps slower. The tree saw none of this.

a third equality, between the two we knew  The clock is not merely a trick for this family; it occupies a precise place in the order of distinctions. Plain β-convertibility is the finest relation — interconvertible terms are identical for every purpose — and Böhm-tree equality is among the coarsest, identifying everything with the same eventual skeleton. The clocked tree sits strictly between them: convertible terms always have the same clock, terms with the same clock always have the same tree, and both implications can fail in reverse. So the clock catches differences the tree misses — enough to split the entire Böhm sequence, proving it has no duplicates — without claiming to decide convertibility outright, for there are combinators that keep the same simple clock yet remain inconvertible. For those the theory sharpens the instrument further, to an atomic clock that times individual reduction events, and reaches still finer with Lévy–Longo and Berarducci trees, which remember more of what ordinary Böhm trees discard about non-terminating subterms. The discrimination of the family is a ladder of ever-finer clocks, climbing toward convertibility without ever quite arriving.

the first movement's question, returned as a question of speed

This closes a circle opened in The Combinators. There the distinction between Curry's combinator and Turing's was that Turing's reduces to its unfolding in a fixed number of steps while Curry's only converts to it — a difference in the tempo of reaching f(Y f), though it was not yet named as one. The clock names it. Convertibility asked whether two combinators reach a common form; the clock asks how fast each reaches it, and that finer question is the one that actually separates the family. What looked like a footnote about reduction strategy turns out to be the only thing distinguishing an infinity of combinators that are, in every other respect, the same bird.

IV · the open frontier

Questions the family has not answered

The combinators are easy to breed and hard to tell apart, and that asymmetry leaves some of the most elementary questions about them unsolved. New ones can be generated by infinitely many schemes; proving any two of them genuinely different is the labour, and at the edge of that labour sit problems open for decades.

how many fixed points?  Begin with a question that sounds too simple to be open. The Fixed-Point Theorem hands every λ-term at least one fixed point. How many are there? The fixed-point property conjectures a stark dichotomy: every term has either exactly one fixed point or infinitely many — never two, never seventeen. It is known to hold in two important cases — when the term has a fixed point in normal form (Intrigila and Statman, 2000), and when open fixed points are allowed (Manzonetto, Polonsky, Saurin and Simonsen, 2019) — and it is known to fail in every sensible λ-theory, where some term can be made to have an intermediate count. But for closed terms in the pure calculus the general question — can a λ-term have a finite number of fixed points greater than one? — remains, after all this time, unanswered.

the double combinator — conjectured impossible, still undecided
Every fixed-point combinator satisfies δ Y =β Y by definition. Statman asked whether any combinator can also satisfy the mirror equation Y δ =β Y — a double fixed-point combinator, invariant under postfixing the Owl as well as prefixing it. His intuition was that the Owl, postfixed, must slow the clock (as the previous movement confirms it does, by two), so that Y δ and Y could never share a reduct; he conjectured no such combinator exists. Intrigila published a proof in 1997. But in 2011 Endrullis found the argument wanting, and the question reopened; the 2019 study of the problem proves only that the theory generated by the double-combinator equation is consistent (a conservative extension of the λ-calculus) and proposes a technique that might settle it negatively. Whether a double fixed-point combinator exists is, today, open — a clean equation about the most studied term in the subject, unresolved for thirty years.

breeding faster than discriminating  The asymmetry runs deeper than two famous problems. Postfixing the Owl is only the simplest way to breed combinators; working in the infinitary λ-calculus, Endrullis and Klop exhibit infinitely many other generation schemes, modular building blocks that assemble new fixed-point combinators at will. Creation is cheap. The cost is always the same: having made a new combinator, one must prove it is new — prove it β-inconvertible with every combinator already in hand — and that is exactly the discrimination problem, where, as Intrigila remarked, the techniques are remarkably few. Even the most natural follow-up to the previous movement is open: the standard Böhm sequence from Curry's Y is proven duplicate-free by its clocks, but whether the sequence Z, Z δ, Z δ², … begun from an arbitrary combinator Z ever repeats is not known. The family grows faster than we can sort it, and the clock — the finest instrument we have — runs out before the questions do.

V · the undecidable family

A flock no algorithm can survey

After breeding and discriminating, one last hope: perhaps the family can at least be recognised — perhaps some procedure can decide, of a given term, whether it is a fixed-point combinator. It cannot. The combinators form a class no algorithm can pick out, and even the larger class that merely shares their tree is beyond enumeration.

the recognition question  We have a generator that breeds combinators, a clock that distinguishes them, and a frontier of open problems. The most basic computational question remains: is there an algorithm that, handed a closed λ-term, decides whether it is a fixed-point combinator? Membership in the family is a Π-shaped condition — Y F =β F(Y F) must hold for every F — and conditions of that shape are rarely decidable. Here they are provably not, and the reason is a theorem at the foundation of the subject's undecidability.

no procedure recognises a combinator — Scott and Curry
The Scott–Curry theorem states that any two disjoint, non-trivial sets of λ-terms, each closed under β-conversion, are recursively inseparable — no decidable set lies between them. A set is non-trivial when it is neither empty nor everything. The fixed-point combinators form exactly such a set: it is closed under β-conversion (if Y is a combinator and Y =β Y' then Y' F =β Y F =β F(Y F) =β F(Y' F), so Y' is one too), and it is non-trivial. Taken with its complement, recursive inseparability forces the conclusion: the set of fixed-point combinators is not decidable. No algorithm can tell a genuine combinator from an impostor. The term that solves every recursive equation cannot itself be recognised by any mechanical test.

even the look-alikes escape enumeration  The undecidability is not an artefact of the strict fixed-point equation; it survives loosening. Call a term a non-standard fixed-point combinator if it merely has the same Böhm tree as one — the spine λf.fω — whether or not it satisfies the equation. Every genuine combinator is non-standard, but not conversely: there are strictly non-standard combinators, terms that unfold into f(f(f(…))) and yet fail to be fixed-point combinators at all — the tree, once more, underdetermining the term. And the set of these look-alikes is not even recursively enumerable; one cannot so much as list the terms that share the combinators' tree. So the family is hemmed by undecidability on every side: infinite, bred by a single Owl, rigid enough that a clean clock separates its members, and yet impossible to recognise, impossible to enumerate even in its loosest form. The most surveyed term in the λ-calculus heads a population that admits no census.

The fixed-point combinator was supposed to be a single term, a tool reached for and set down. It is instead a boundless flock, hatched from an Owl, every bird of it singing the one endless note f(f(f(…))) — the same Böhm tree, the same denotation, the same eventual shape, indistinguishable to every instrument that listens for what is sung. Only the tempo betrays them: the wait between one note and the next, the clock, which the Owl drags two beats slower at every postfixing, and which is the lone invariant fine enough to prove that Curry's bird and Turing's and all their descendants are truly different birds. Yet the clock that tells them apart cannot count them, and no algorithm can take the roll. What began in The Combinators as a question of whether a term converts or reduces to its unfolding ends here as a question of speed — the one difference between an infinity of combinators that are, in every other respect, the same. One song, sung at every speed, and beyond all counting.