Every cell of the 16 × 16 × 16 gates-of-gates grid is a lambda term, λp.λq.λa.λb. G (X p q) (Y p q) a b. Reducing all 4,096 of them gives 506 different normal forms, each behaving like one of the 16 gates. Here is every one, as a Tromp diagram and in eight notations. Numbers #1–506 match the Gates of Gates page.
Where it comes from maps, for each program, the cells that reduce to it: all 16 squares, laid out 4 × 4 as on the Gates of Gates page, with each marked cell coloured for the chosen quarter (one truth-table row). Coloured means the program is TRUE on that row, grey means FALSE.
Short form drops brackets by convention. Fully bracketed shows every application.
De Bruijn replaces names with “how many λs up”. Tromp binary writes that in bits: 00 = λ, 01 = apply, n ones and a zero = variable n.
Polish puts @ (apply) and λx before their parts; reverse Polish puts them after.
SKI uses no variables at all: S, K and I combined. JavaScript is arrow functions, runnable as written.
Where it comes from:TRUE in this quarter FALSE in this quarter
p => q => a => b => p(q(p(q(a)(b))(q(b)(a)))(p(q(b)(a))(q(a)(b))))(q(p(q(b)(a))(q(a)(b)))(p(q(a)(b))(q(b)(a))))
Where it comes from
XOR ×2 · XNOR ×2
Built from the verified gates-of-gates data. For every program, the short form, de Bruijn form, binary, Polish and reverse Polish forms were each read back and compared with the original term, and the lambda term, its SKI translation and its JavaScript version were each run on all four inputs and gave the gate's truth table. Tromp diagrams are drawn from the same terms. The maps come from the same verified grid, and every program's marked cells add up to its cell count, all 4,096 in total.