Skip to the reading
Quodlibeta standalone study · propositions, types, proofs

The trinity completed  — the type-theoretic face

The Correspondence

There is a dictionary, due to Curry and Howard and completed by Lambek, in which three subjects turn out to be one. A type is a proposition is an object; a program is a proof is a morphism; to run a program is to simplify a proof. The Substrate gave the corpus the categorical leg of this trinity and the applicative genus gave it the computational leg, but the logical leg has gone unwritten — and it holds the sharpest statement of the whole corpus. For under this dictionary the fixed-point combinator Y, which the Forge read as the engine of recursion, has a second reading, and the second reading is logical inconsistency. The same term that lets every program recurse lets every proposition be proved. Recursion and paradox are not analogous here; they are the identical term, separated only by whether its types are read as data or as propositions. This study writes the missing leg: it sets out the correspondence, proves that Y is a proof of falsity, shows that typing is precisely the discipline that bans the diagonal and strong normalization the receipt that the ban held, watches recursive types buy the diagonal back at the cost of consistency, and ends where the boundary between proof and computation is drawn — finding, at the last, that a single modality is what lets self-reference be sound.

type = proposition·Y = ⊥·the box tames

The constructive face has two workshops and one wall missing. The Forge took the least fixed point and built recursion; the Loom took the greatest and wove the infinite; both worked in the order-theoretic genus, where fixed points are values to be constructed. But there is a third genus the Substrate only gestured at — the type-theoretic one, where the objects are not values but propositions, and a fixed point is not a value to be built but a proof to be scrutinized. In that genus the diagonal wears its starkest face. Read as a program, the fixed-point combinator is the heart of computation; read as a proof, it is the collapse of logic. The corpus has shown the diagonal forbids and builds; here it does both at once, in one term, and which you see depends only on how you read the type.

Five movements. First the dictionary itself — propositions as types, the Curry–Howard–Lambek trinity, the three languages for one structure. Then the central theorem, that Y is a proof of falsity and the untyped calculus a logic that proves everything — Curry’s paradox in its purest form. Then the discipline: how simple types ban the diagonal by making self-application untypable, and how strong normalization certifies that the ban consists. Then the price and its repeal: how recursive types reinstate the reflexive object and the diagonal with it, trading consistency for Turing-completeness, so that the diagonal is revealed as the exact boundary between the two. And last, the modality that tames what types only banish — where this study meets The Box, and the trinity closes.

1 · propositions as types

The dictionary in which three subjects are one

A type is a proposition; a term is a proof; running a program is simplifying a proof. The Curry–Howard correspondence, completed to the cartesian closed categories by Lambek, makes computation, logic, and category theory three notations for a single structure — and the fixed point sits at all three vertices.

The correspondence is a table, and the table is exact. To each type-forming operation there answers a logical connective and a categorical construction, and the match is not loose analogy but equivalence of structure. The function type A → B is implication: a term of that type takes any proof of A to a proof of B, and to apply it is to perform modus ponens. The product A × B is conjunction, its terms the pairs; the sum A + B is disjunction, its terms the tagged alternatives; the unit type is truth, with its single trivial inhabitant; and the empty type ⊥, the type with no terms at all, is falsity. To reduce a program to normal form is to eliminate the detours from a proof — Gentzen’s cut-elimination, seen through the looking-glass as computation. Lambek’s contribution closes the triangle: each construction is also the corresponding universal object in a cartesian closed category, so that the same structure speaks three languages at once.

the Curry–Howard–Lambek trinity — one structure in three languages
Curry–Howard Curry–Howard–Lambek Lambek 1968 one structure type = proposition = object term = proof = morphism → = ⊃ = exponential COMPUTATION the λ-calculus · types, terms LOGIC natural deduction · proofs CATEGORY cartesian closed · objects the fixed point lives at all three vertices — and §2 names its logical face
Computation, logic, and category theory are three readings of one structure: a type is a proposition is an object, a term is a proof is a morphism, implication is the function type is the exponential. The Forge worked the computation vertex; The Substrate worked the category vertex; this study supplies the logic vertex, and with it the one reading under which the diagonal’s true severity becomes visible. The fixed point lives at every vertex — as Y in computation, as the reflexive object in category theory, and, as the next movement shows, as inconsistency in logic.
the dictionary, entry by entry — select a construction to see its three faces
Each row is one structure under three readings. The last entry is the one that matters: the fixed point Y, whose computational face is recursion and whose categorical face is the reflexive object — and whose logical face the dictionary here leaves open, for §2 to fill in with the single word the whole corpus has been circling.

One feature of the table deserves marking before we use it, because the entire study turns on it. The empty type ⊥ is falsity exactly because it has no terms; a logic is consistent precisely when ⊥ remains uninhabited, when no proof of falsity can be written. Consistency, in this dictionary, is a statement about which types have terms. And so the question the corpus has asked of every limitative result — can the diagonal be drawn? — becomes, in the type-theoretic genus, a question with teeth: if the diagonal can be drawn, can a term of type ⊥ be written? The next movement answers yes, and the answer is the heart of this study.

2 · Y is falsity

The fixed-point combinator is a proof that everything is true

In the untyped calculus every term has a fixed point, by the combinator the Forge read as recursion. Read instead through the dictionary of §1, the same combinator proves falsity — and then proves every proposition. The untyped λ-calculus, as a logic, is the trivial one, and this is Curry’s paradox stripped to its mechanism.

Begin with the fact the Forge established. In the untyped λ-calculus, every term f has a fixed point, exhibited by the combinator Y = λf.(λx.f(xx))(λx.f(xx)), for which Yf =β f(Yf) — the First Recursion Theorem. The Forge read this as the engine of recursion: given the body of a recursive definition, Y ties the knot and returns the function that calls itself. That reading takes the types as data — Y turns a function-transformer into the function it describes. Now take the types as propositions, and read the very same term again.

As an operator, Y has type (A → A) → A: it accepts something of type A → A and returns something of type A. Under the dictionary, that is a procedure which, from a proof of A → A, manufactures a proof of A. The damage is immediate. Let A be ⊥, falsity. The proposition ⊥ → ⊥ is provable — indeed λx.x, the identity, proves P → P for any P whatsoever. Feed that proof to Y, and out comes a term of type ⊥: a proof of falsity. The logic that admits Y is inconsistent.

the inconsistency — five lines from the fixed-point combinator to the collapse of logic
Y : (A → A) → A from any proof of A→A, a proof of A A := ⊥ take the proposition to be falsity λx.x : ⊥ → ⊥ but P→P is always provable — the identity Y(λx.x) : ⊥ so falsity has a proof for every A: Y(λx:A.x) : A every proposition is provable — the logic is trivial
The derivation needs nothing exotic: only that Y inhabits (A→A)→A and that P→P is always provable by the identity. Setting A = ⊥ yields a proof of falsity; setting A to anything yields a proof of it. The untyped λ-calculus, read as a deductive system, proves every proposition — it is the trivial logic, the one in which truth and falsity have collapsed together.

This is not a curiosity at the edge of the calculus; it is the same paradox the corpus has met under other names. The combinator Y is, in the words of the literature, the untyped skeleton of the paradoxes — and here it is wearing the costume of Curry’s. Curry’s paradox is the derivation of an arbitrary conclusion from a sentence asserting “if I am true, then that conclusion”; the corpus catalogued it among the seven, the benign-looking member of the family whose twist is implication rather than negation. Stripped of its sentential clothing, Curry’s paradox is the fixed-point combinator typed as (A→A)→A — a proof of A from a proof of A→A, for any A at all. What the untyped calculus shows is that this is not a special feature of any clever sentence; it is what self-application does the instant its types are read as claims.

one term, two readings — the Fulcrum made literal

The decisive point is the identity of the two Y’s. The Forge’s recursion and this study’s inconsistency are not analogous constructions, not cousins, not two members of a family. They are the same term, the same λf.(λx.f(xx))(λx.f(xx)), and the only thing that differs is whether its types are read as data or as propositions. Read as data, Y is the most useful object in computing; read as propositions, it is the destruction of logic. The Fulcrum proved that the forbidding and building readings of the diagonal are one proposition seen from two sides, and The Prism made that the first of its three modes; the Curry–Howard correspondence turns that abstract identity into a concrete and visible one. Here the two modes are not merely the same construction — they are the same string of symbols, and the parameter that selects between forbidding and building is nothing more than the choice of how to read a type. There is no sharper statement of the corpus’s thesis than this.

And there is a shadow of the inconsistency on the computational side, which says the same thing in the other language. If a proof of ⊥ can be written but falsity is genuinely false, what does that proof compute? Nothing. The canonical inhabitant of ⊥ built this way is Ω = (λx.xx)(λx.xx), the term that reduces to itself forever and never reaches a normal form. Logical inconsistency, viewed as computation, is non-termination: the proof of falsity is exactly the program that never returns an answer. The two costs the diagonal exacts — inconsistency in logic, divergence in computation — are not two costs but one, read in the trinity’s two lower languages. This is why the discipline that the next movement describes can be stated either way: to forbid the proof of falsity is to forbid the non-terminating program, and a calculus in which every program halts is a calculus in which ⊥ has no proof.

3 · the ban

Typing forbids the diagonal; normalization certifies the ban

Simple types escape the collapse of §2 not by a rule against paradox but by making the diagonal ill-formed: self-application cannot be typed, so Y cannot be written, so falsity has no proof. Strong normalization is the receipt — every typed term halts, every proof reduces, and the empty type stays empty.

The escape is structural, and it strikes at the one place the construction is vulnerable: the self-application. Look again at λx.xx, the diagonal’s heart, inside Y. The left occurrence of x stands in function position, applied to something, so it must have a function type σ → τ. The right occurrence stands in argument position, so it must have type σ. But it is the same variable, so its one type must satisfy σ = σ → τ — a type that is its own function type. In the simply-typed λ-calculus, where every type is a finite tree built from base types and arrows, no such type exists; the equation has no solution, the occurs-check fails, and λx.xx is simply not a well-typed term. The diagonal is not outlawed by decree. It is rendered unsayable by the grammar of types.

why the diagonal cannot be typed — self-application forces a type to equal its own function type
λx . x x function here x : σ → τ argument here x : σ same variable x, so σ = σ → τ no finite type solves this — λx.xx is untypable … unless σ is allowed to be a recursive type. That is §4.
Self-application asks one variable to be at once a function and the value it consumes, forcing σ = σ → τ. Among finite types there is no fixed point of the operation “take the function type into τ,” so the term has no type and Y, which contains it, has none either. The proof of falsity from §2 cannot be written down. This was precisely Church’s purpose in introducing simple types in 1940: to bar the paradoxical use of the untyped calculus by making its paradoxes ungrammatical.

That the ban consists — that it does not merely block this one term while leaking elsewhere — is the content of a theorem, and it is one of the deepest in the subject. The simply-typed λ-calculus is strongly normalizing: every well-typed term, reduced in any order, reaches a normal form after finitely many steps. No typed term loops. The result is due to Tait, whose method of reducibility — interpreting each type as a set of “well-behaved” terms closed under reduction, and proving every typed term lands in its type’s set — became the template for every strong-normalization proof since. And strong normalization is not a convenience about termination; through the dictionary it is the consistency proof. Every proof reduces to a normal one; a normal proof of ⊥ would be a canonical, irreducible inhabitant of the empty type; the empty type has no such inhabitant; therefore ⊥ has no proof, and the logic is consistent. The receipt that the diagonal is banned is exactly the receipt that falsity is unprovable.

two senses of “forbid” — kept apart

A distinction must be marked here, because the word “forbid” does two opposite jobs in this corpus and conflating them would muddle everything. In the limitative results, the diagonal forbids: it is the active agent, the construction whose existence proves that some enumeration or decider or naming cannot be. Curry’s paradox in §2 is exactly this — the diagonal, typed as (A→A)→A, forbidding the consistency of the untyped logic. Here in §3 the direction is reversed: typing forbids the diagonal. The diagonal is now the patient, the thing barred, and the type discipline is the agent doing the barring. The Prism’s three modes — forbid, build, circle — are things the diagonal does; the type-theoretic ban is something done to it, a meta-level discipline imposed to prevent the forbidding mode from trivializing the logic. So §2 is the diagonal in the Prism’s forbidding mode, written in the language of proofs; §3 is the first of the disciplines by which mathematics chooses to live without that mode. The two are not the same kind of thing, and the rest of the study keeps them apart.

The ban has a price, and naming it sets up everything that follows. A calculus in which every term halts cannot express every computation — strong normalization and Turing-completeness are incompatible, since a Turing-complete language must be able to write programs that fail to halt. The simply-typed λ-calculus computes only total functions, and not even all of those: its expressible functions form a strict and rather small class. So typing buys consistency with expressive power. It forbids the diagonal, and with the diagonal it forfeits the ability to write the universal machine — which is to say it forfeits exactly what the reflexive object provided. The question that remains is whether one can have the diagonal back without the catastrophe, and the answer, given by recursive types, is the subject of the next movement: one can have it back, but the price returns with it, and the price is consistency itself.

4 · the reflexive object regained

Recursive types buy the diagonal back — and the price is consistency

To recover recursion in a typed calculus, admit a type that is its own function type. That recursive type is the reflexive object of the Substrate made syntax; it makes self-application typable, returns Y, and with Y returns inconsistency. The diagonal is thereby exposed as the exact boundary between consistency and Turing-completeness.

The simply-typed calculus failed to type λx.xx because no finite type solves σ = σ → τ. The remedy is plain once stated: add a type that solves it. A recursive type μα.(α → α) is, by definition, a type D with D ≅ [D → D] — a type isomorphic to its own function space. Recursive types were introduced by Morris in 1968 for exactly this purpose, to recover from a typed calculus the divergence that simple typing had removed. With D ≅ [D → D] in hand, a variable x : D can be unfolded to a function D → D and applied to x : D itself; self-application types; and Y is once more definable. Everything §2 derived now follows, proof of falsity and all.

What has been added is not a trick but an old friend. The recursive type D ≅ [D → D] is precisely the reflexive object — the same D ≅ D^D that The Substrate identified as the home of the untyped calculus, the same Scott D∞ built as the limit of a tower, now presented syntactically as the fixed point of the type-level operation α ↦ α → α. The fold and unfold that mediate the isomorphism are the roll and unroll of iso-recursive types, and they are exactly the structure maps the Loom studied: [D→D] → D is the algebra, D → [D→D] the coalgebra, and that the two compose to the identity is Lambek’s lemma in the syntax. The reflexive object is the one place where building and observing coincide; that is why it alone hosts the full diagonal, and why admitting it as a type readmits the whole machine.

The cost is exact and it is the deepest fact of the study. To take a fixed point at the level of types — to admit D ≅ [D→D] — is to take a fixed point of every term, and a fixed point of every term is, by §2, a proof of every proposition. Recursive types are unsound under the Curry–Howard reading: a calculus with them is Turing-complete, but its types no longer correspond to consistent propositions. So the calculus designer faces a single switch, and the switch is the diagonal. Throw it one way — forbid the reflexive object — and the calculus is strongly normalizing, consistent, total, and unable to express the universal machine. Throw it the other — admit the reflexive object — and the calculus is Turing-complete and logically trivial. There is no setting in between, because D ≅ [D→D] either exists as a type or it does not. The explorer below walks the spectrum; watch the diagonal column, and watch consistency follow it like a shadow, inverted.

the trade-off explorer — choose a calculus; the four properties move together, hinged on the diagonal
Across every calculus the pattern is rigid: wherever the diagonal is typable, strong normalization fails, Turing-completeness holds, and consistency is lost; wherever it is barred, the reverse. Simple types, System F, and the other normalizing calculi forbid the reflexive object and keep consistency at the price of completeness; PCF and recursive types admit it and pay in consistency for completeness; and System U shows the diagonal can slip back in through the types alone, by Girard’s paradox, even where no recursive type was added — the frontier where a type system becomes too strong to stay consistent. The diagonal is the hinge on which all four properties turn.
the boundary, in type-theoretic form

This is The Horizon’s boundary rewritten in the language of types. The Horizon located the irreducible core of the limitative results in contraction — the doubling that lets the diagonal be drawn — and observed that removing it makes naive comprehension consistent. Here the same boundary appears as the typability of self-application: a calculus is consistent exactly when it cannot type λx.xx, and Turing-complete exactly when it can. The diagonal is therefore not one phenomenon among the calculi but the very line that divides them — the boundary between proof and computation, between the languages in which every program halts and the languages in which every function can be written. One cannot have a calculus that is both a consistent logic and a universal machine, and the reason is the single construction the whole corpus has tracked: the reflexive object that the universal machine needs is exactly the proof of falsity that the consistent logic forbids.

5 · the box that tames

A single modality makes self-reference sound — and the trinity closes

Banning the diagonal costs Turing-completeness; readmitting it costs consistency. There is a third way that costs neither: interpose a modality. The catastrophic rule “A from A→A” becomes the sound rule “A from □A→A” — Löb’s rule — and the corpus’s diagonal is revealed as one fixed point standing at all three vertices of the trinity.

The whole catastrophe of §2 lives in a single inference: from a proof of A → A, conclude A. It is explosive for one reason — A → A is provable for every A, by the identity, so the rule hands back every proposition. Simple typing answers by forbidding the rule’s witness; recursive types answer by accepting the rule and surrendering consistency. But there is a third answer, and it is the one The Box already discovered from the side of provability: weaken the rule’s antecedent just enough that it stops being free. Replace “A” in the antecedent with “A is provable.” The rule becomes: from a proof of □A → A, conclude A. This is Löb’s rule, and it is sound.

the catastrophic rule

A from A → A

The type of Y, read as logic: (A→A)→A. Because A→A holds for every A by the identity, the rule proves every proposition.

Explosive. This is the diagonal in its forbidding mode — Curry’s paradox — and it is what types and recursive types must each pay to manage.

the sound rule — boxed

A from □A → A

Löb’s rule. The antecedent □A→A — “if A is provable then A” — is not free; asserting it for all A would itself be unsound, by Gödel.

Sound. The fixed point survives, but only the intensional one, about provability. The single mark □ is the whole difference.

The contrast is the cleanest lesson the corpus can offer about self-reference. □A → A is the reflection principle — the claim that what is provable is true — and Löb’s theorem is exactly the statement that this principle is provable only in the trivial case where A is already a theorem. So the boxed rule cannot be set loose the way the unboxed one can; the modality holds the fixed point to soundness. The Box proved that the modal fixed point of the de Jongh–Sambin theorem is unique and that GL is consistent; seen from here, that is the statement that the diagonal, wrapped in □, is a sound proof principle rather than an explosive one. Provability logic is self-reference with the modality left on — the diagonal disciplined not by banishment but by being made to speak only of provability, never directly of truth.

three disciplines of the one diagonal

So the type-theoretic face resolves into three ways of living with the construction the whole corpus has tracked, and naming them is the study’s synthesis. Ban it — simple types, System F: make self-application ungrammatical, and keep a consistent, total logic at the cost of the universal machine. Readmit it as data — PCF, recursive types: keep the diagonal but read the types as guards on programs rather than as propositions, buying Turing-completeness with the loss of logical soundness. Box it — provability logic, GL: interpose a modality, and keep the fixed point as a sound principle about provability, surrendering only the extensional reading that spoke directly of truth. Three disciplines, one diagonal — and each is a choice about which of the irreconcilable goods, consistency or completeness or direct self-reference, to keep. The hierarchy of type theory, from Church’s simple types through Girard’s polymorphism to the recursive and the modal, is the record of mathematics making this choice over and over, always against the same single construction.

And the trinity closes. The fixed point that this study began by seeking at the logic vertex is now visible at all three: it is Y, the engine of recursion, at the computational vertex; it is the reflexive object D ≅ [D→D], Scott’s D∞ and the recursive type alike, at the categorical vertex; and it is inconsistency, Curry’s paradox, the proof of falsity, at the logical vertex. One fixed point, three correspondents — which is The Prism’s one construction in three modes, told now in the three languages of Curry, Howard, and Lambek. The corpus’s thesis, in its type-theoretic form, is the sharpest it ever becomes: the diagonal is the boundary between proof and computation; under the correspondence, recursion and paradox are not two things but one term read two ways; and the entire architecture of types is the discipline mathematics imposes on that one term to keep it from proving everything. A program is a proof — and the proof that must be watched is the one that refers to itself.

A type is a proposition, a program is a proof, and the fixed-point combinator Y is the place the dictionary turns dangerous. Read as data it is recursion, the Forge’s engine; read as a proposition it has type (A→A)→A, and since A→A holds for every A, it proves every proposition — Curry’s paradox, the trivial logic, the proof of falsity that is, on the computational side, just the program that never halts. Simple types escape by making the diagonal ungrammatical, and strong normalization is the receipt; recursive types buy it back as the reflexive object D ≅ [D→D], trading consistency for Turing-completeness, so that the diagonal stands exactly on the boundary between a logic and a universal machine; and a single modality, the □ of provability, tames what types only banish, turning the explosive rule A-from-A→A into the sound Löb rule A-from-□A→A. Three disciplines of one construction; one fixed point at all three vertices of the trinity. Under the correspondence, recursion and inconsistency are the same term, read two ways.