← WP48 · Five Conjectures · WP49 · Combinators · WP50 · Church-Turing →
Working Paper 49 · Principia Orthogona Vol VI

Combinators

Three rules. No variables. All of computation. And the gate was already there, wearing a different name.

Pablo Nogueira Grossi · August 2026 · Series: WP46 · WP47 · WP48

Moses Schönfinkel gave one lecture. It was 1920, in Göttingen, and in it he introduced something he called "combinators" — a way of expressing all of logic and mathematics without variables. Not fewer variables. None. The entire machinery of substitution, application, and abstraction, built from three primitive operations.

He called them S, K, and I.

Then he vanished. He spent years in a psychiatric institution, then resurfaced in Moscow, then disappeared again. He died sometime around 1942 — the year is uncertain, the circumstances unknown. His entire published output fits in a handful of papers. Haskell Curry rediscovered the same ideas independently, spent decades developing them, and gave his name both to the operation of partial application and to a programming language that did not exist until after his death. Raymond Smullyan turned the whole edifice into a forest of birds and wrote the most readable book about it.

Schönfinkel, Curry, Smullyan. One idea, three lives, sixty years.

· · ·

§1 · The Three Rules

Combinatory logic begins with function application. Write f x to mean "f applied to x." That is the only operation. No addition, no assignment, no variables. Just application, written left-to-right, left-associative: f x y means (f x) y.

Now add three combinators — three specific functions whose behavior is given by their reduction rules:

I x= xidentity
K x y= xconstant
S f g x= f x (g x)substitution

That is the entire system. From these three rules, every computable function follows. There is no simpler complete foundation — you cannot remove any of the three and retain completeness. S and K together suffice (I is derivable: I = S K K). But S and K alone: that is the irreducible minimum.

The result is a combinatorially complete system. Schönfinkel's claim — which took decades to fully establish — is that lambda calculus, with all its variables and abstractions, is equivalent to this. Every lambda term translates to an SKI expression. Variables are not fundamental. They are notation for something that does not require them.

· · ·

§2 · K Is the Gate

LENS What follows is a structural observation, not a formal identification. The K combinator and the gate operator K in the GTCT / dm³ / TOGT framework are different mathematical objects — one is a higher-order function on terms, the other is multiplication by an indicator on a function space. What they share is an intuition, stated as clearly as possible:

K selects one thing and discards the other. K x y = x — given two inputs, the first passes, the second does not. The second argument is not processed, not transformed, not stored. It is ignored. K is the operation of gating: this one through, that one not.

The gate operator in dm³ is a multiplication by an indicator function θ(η* − η) — it sets to zero everything outside the selected region. It is a different formalism doing the same thing: selecting what passes, silencing what does not.

Schönfinkel named his combinator K from Konstante — the German word for constant. A constant function is a function that ignores its input and returns the same value regardless. K x is the constant-x function: feed it anything, it returns x. The gate is a constant-zero function on the excluded region: feed it any state outside the threshold, it returns zero. Same structure.

The name was not coincidence — it was the right name. K is what you call the thing that holds.

· · ·

§3 · S Is the Fold

LENS The S combinator — S f g x = f x (g x) — takes an argument x and distributes it to two functions simultaneously, then composes the results. It is the combinator of interaction: the same input reaches both f and g, and what comes out is entangled by that shared origin.

The fold F in dm³ takes a state and acts on it non-locally — not sitewise, not pointwise, but across the coupling structure of the system. F changes not just the value at one site but the relationship between sites. S does this at the level of functions: it takes one input and makes it speak to two different functions at once, coupling them through that shared argument.

The operator non-commutativity — K∘F ≠ F∘K — has a clean combinator reading: K applied before S (or before any non-trivial function) is not the same as S applied before K, because K discards its second argument and S requires both of its function arguments to be applied before the shared x can do its distributing work. The order is structural. The order is in the grammar.

· · ·

§4 · The Chain Is Already Point-Free

The GTCT / dm³ operator chain is written

G = U ∘ F ∘ K ∘ C

There is no state variable in that expression. It does not say "G applied to state ψ equals U applied to F applied to K applied to C applied to ψ" — even though that is what it means. The state ψ is implicit. The chain is defined by the composition of operators, not by their action on any particular input.

This is point-free style. It is the same thing as combinator notation. In combinatory logic, you define functions without naming their arguments. In the dm³ framework, you define the generative operator without naming the state it acts on. The state is the argument that gets threaded through when you apply G. The chain is the combinator expression.

Schönfinkel's insight was that you can do all of mathematics this way — without ever naming an intermediate variable. The chain G = U∘F∘K∘C is written exactly the way Schönfinkel would have written it. Not because the framework borrowed from combinatory logic. Because both found the same underlying structure.

· · ·

§5 · The Fixed Point

The Y combinator is the fixed-point combinator. It takes a function f and returns a value x such that f(x) = x. A fixed point: the thing that the function maps to itself.

Y f= f (Y f)fixed point

Y is not in the SKI basis. It requires self-application — a function applied to itself — which is not directly expressible in the simply-typed version of the theory. But in untyped combinatory logic, Y exists, and it is what makes recursion possible without a recursive definition. You do not need to say "let f be the function that calls itself." You apply Y and get back a value that already satisfies that equation.

The dm³ attractor τ = 2 is a fixed point. The system — started from any initial condition within the basin — converges to a state that the generative operator maps to itself. Not because the state is static, but because it satisfies G(τ) = τ in the dynamical sense: the attractor is reproduced by the dynamics that defined it.

LENS Y is the operator that produces the fixed point from the function. τ = 2 is the fixed point the dm³ dynamics produces. Different domains; the same shape of question: what does the system return to itself?

· · ·

§6 · Curry-Howard and the Lean Connection

The Curry-Howard correspondence says: propositions are types, proofs are programs. Every logical proposition corresponds to a type in a programming language; every proof of that proposition corresponds to a program of that type. The correspondence is not a metaphor — it is a theorem about the structure of both systems.

In this correspondence, K corresponds to the logical axiom A → (B → A): given A, you can derive "if B then A" — because you already have A and can ignore whatever B says. K discards its second argument; the axiom discards its second premise. Same rule, two readings.

S corresponds to the distributive law (A → B → C) → (A → B) → A → C — the rule that lets you take a function-that-needs-two-things and two separate functions-that-produce-those-things and compose them into a single pipeline. S distributes; the axiom distributes. Same rule.

The Lean 4 kernel-verified proofs in this series — the gate commutation theorems, the fixed-point attractor, the operator-order noncommutativity — are programs of specific types. When the Lean kernel accepts a proof, it is confirming that the program has the right type, which is the same as confirming that the proposition is provable. Schönfinkel's three rules are running underneath every proof this series has ever checked.

· · ·

§7 · Smullyan's Forest

Raymond Smullyan published To Mock a Mockingbird in 1985. It is a book about combinatory logic written entirely as a series of puzzles about birds in a forest. Each bird, when it hears another bird's call, responds with its own call. The response is the function application. The birds are the combinators.

Kestrel · K
K x y = x
Hears x and y; returns x. The second bird is not heard from again.
Starling · S
S f g x = f x (g x)
Sends x to both f and g, then composes. The distributor.
Identity Bird · I
I x = x
Returns exactly what it hears. The transparent relay.
Mockingbird · M
M x = x x
Applies x to itself. Self-application. Defined as S I I.

The Mockingbird applied to itself — M M — reduces to M M again. It is the combinator that does not terminate, the loop without exit, the recursion without base case. From this, the Y combinator: Y = S (K (S I I)) (S (K (S I I)) I) — the fixed-point finder, encoded in birds.

Smullyan's decision to write it as a forest was not a simplification. It was the correct register. The birds do not know they are implementing a Turing-complete computation system. The forest does not know it contains all of mathematics. The knowledge is in the structure, not in the names.

This series has been making the same argument. The operator chain G = U∘F∘K∘C does not know it is implementing a generative contact mechanics framework. The operators commute or they do not based on what they are, not on what they are called. The attractor exists because the dynamics require it, not because we named it τ = 2. The knowledge is in the structure.

· · ·

§8 · What Schönfinkel Left

Schönfinkel left one idea, fully formed, and then disappeared. The idea was this: that the fundamental unit of mathematics is not the object, not the variable, not even the function — but the act of application itself. That everything else is derived. That you can build all of logic from two behaviors: one that selects (K), one that distributes (S).

He did not live to see his idea become the foundation of functional programming, the basis of type theory, the substrate of every proof assistant ever built. Curry developed it. Church formalized the equivalent. Turing proved what it meant computationally. Smullyan made it legible. Howard connected it to logic. Martin-Löf connected it to mathematics.

The idea did not need Schönfinkel to survive. That is the other thing about a structure that is right: it does not depend on the person who found it. The Kestrel selects its first argument regardless of who named it. The gate opens or closes regardless of who holds it. The attractor exists regardless of who proved it.

This is what mathematics offers that nothing else does: the finding survives the finder.

Schönfinkel is buried — if he is buried, if there is a marker — somewhere in Moscow, in a year that was not recorded by anyone who later wrote it down. His idea is in every program you have ever run.

WP49 — Principia Orthogona · Combinators · Vol VI
Series: WP46 · WP47 · WP48 · WP49 (here)
Zenodo community: zenodo.org/communities/principia-orthogona