A working prototype of the MIP*=RE compression step

Compress, Explained

Ji, Natarajan, Vidick, Wright and Yuen prove MIP* = RE by building a machine that eats a verifier's source code and returns a verifier that does the same job exponentially faster. This page is a tour of that machine as we have actually built it in Julia — every instrument below runs on objects the test suite printed, and every number is stamped with what it is allowed to claim.

The one law of this page: nothing is stated more strongly than claims/CLAIMS.md allows. One chapter describes machinery that runs end to end only as a toy-policy checkpoint whose critic verdict is still pending (the composed Compress and the halting fixed point, claim C15, still a CONJECTURE); it says so in the margin, in the figure, and in the text. Sixteen instruments, six clips, one machine room.

§0

The shape of the thinggt-12-compression.tex fig:compress

Compress is one line. Everything hard lives in the contracts its three parts must satisfy.

Write V for a verifier — a program that, given an index n, samples a pair of questions and then decides whether a pair of answers is acceptable. The paper's compression machine is a composition:

⟨V⟩ a description Introspect level 9 → 5 executes AnswerReduce level 5 → 7 executes Repeat level 9 → 9 executes ⟨V′⟩ shorter runtime the Halting verifier feeds its own compressed code back in: D = Y Ψ Green = the prototype executes it on real objects (Repeat since TB5, Introspect since TB6). The composition itself runs at TB7 as a toy-policy checkpoint (C15 CONJECTURE). Compress(V, λ) = RepeatL,τ ∘ AnswerReduceL,μ,γ ∘ IntrospectL,9 (V)
The composition is trivial; the content is that each stage must preserve perfect completeness, keep the question distribution inside one closed algebra, and shrink runtime — all at once. Repeat became executable at TB5 (chapter 13) and Introspect at TB6 (chapter 12); the end-to-end Compress of chapter 14 is TB7, which executes as a checkpoint under a toy policy with its critic verdict still pending.

executed

12730 passed

assertions in test/runtests.jl, plus 1 deliberate @test_broken (the production symbolic description), exit 0. The TB0 timing gate is a clock-calibrated body/kernel ratio < 100, not a bare wall time.

red-capable

235 / 235

registered mutants KILLED, 93/93 baselines OK, 2/2 runner probes refused. Established by full runs on the tree before one arbitrary memory-bound assertion was removed, plus a focused run after it — not one single run on the final tree.

still open

no lanes open

TB7 (C15, still a CONJECTURE) sits at a work-in-progress checkpoint awaiting its first critic round (brief 85, not yet launched), which also covers a TB6 round 4 on the scope of C14. TB4 converged at verdicts/tb4-r3.md (PASS); the TB3, TB5 and TB6 claims were promoted inside their verdicts. TB0, TB1, TB2, the design and the analytic document have converged.

§1

Turing machinesdocs/analytic part1a §1.2

A verifier is a finite transition table. Everything the paper says about its code, time and simulation refers to this object.

The analytic document opens with a machine so small it fits in five rows: M₌, which reads one bit off each of two input tapes and writes their equality bit to an output tape. It has two non-halting states and one halting state, four tapes, and a catch-all row that makes the table total. On legal one-bit inputs it halts after exactly three transitions.

Instrument · the equality machinepart1a §1.2 · five rows, verbatim
i = 0 · q₀

Configuration (q, (L, s, R)) per tape: the amber cell is the scanned symbol s, the strings left and right of it are L and R. The rule that fires is named beneath.

transitions to halt on (1,1)
3
rows in the table
5the fifth is the catch-all
non-halting states
2q₀, q₁, plus q_h
M₌ on (1,1). Four time rows; the amber cells are exactly the scanned symbols of the configuration, the triangles are the heads. Equal inputs write 1 to the work tape, the copy row moves it to the output, the halt row enters q_h.
What the paper needs from this

A verifier's description ⟨V⟩ is a finite string spelling out such a table, and Time counts transitions. Compression is a statement about that string and that count — not about the function the machine computes. A universal machine U reading ⟨M⟩ and x simulates M on x; the whole construction is bookkeeping about how long that takes and how long the strings are.

docs/analytic/parts/part1a.tex §1–§2 · gt-05-games-normalform.tex def:decider
§2

Lambda terms and quotationpart1b §3–§4C18 SKETCH

Recursion is not a name pointing at itself. It is a finite term that grows only when you run it.

The self-referential verifier at the heart of the Halting reduction is a fixed point. In the lambda calculus that is Y = λF.(λx.F(xx))(λx.F(xx)): no recursive name appears anywhere in the syntax, and recursion is produced when two copies meet. The project's evaluator is deterministic call-by-value, so its constructor must behave like the eta-delayed Z, and the implementation closes a single self_code hole rather than materialising the unfolding.

Instrument · β-reduction with de Bruijn indicespart1b §4.3 · λx.λy.x y ≡ λ.λ.(1 0)

A bound occurrence is replaced by the number of binders between it and its binder, counting the nearest as zero. Both λa.λb.a b and λx.λy.x y serialise to the same tree — which is why canonical bytes exist at all, and why inserting a closed term can never capture a name.

Instrument · the real 33 bytessrc/ir/programs.jl · TB3 · fnv1a64 f8561ef8c5761695

This is the canonical serialisation of the trivial decider λ n x y a b . true, printed by the package. Hover or focus a byte to see what field it belongs to.

Every field is prefix-free: a tag byte, then fixed-width big-endian counts, then children. Decoding is total; decode_cl and decode_program invert it exactly.

header & sort constructor tag payload child count
|D| trivial decider
33 bytes
|D| equality decider
64 λ n x y a b . (a == b)
fnv1a64
f8561ef8c5761695
gallery term sizes
13 28 22 42 43 46 58 37 88 66 52
Y F applied to 3. Normal order exposes exactly one demanded Y F call per numeral level; the amber box is that call. Under call-by-value the same term diverges, which is why the evaluator uses the eta-delayed Z.
What is claimed, and what is not

C18 (SKETCH) records the s-m-n transformer, Kleene's e_Q = s(p,p), and the statement that the paper's explicit F(F,M,λ,…), the Kleene fixed point and DM,λ = YCode(ΨM,λ) are three descriptions of the same partial function, all of size O(|M| + log λ + 1). That is a written derivation, not a verified one. The extensional fixed-point value argument stays CITED. Note also that §8's constant is c_Y = 3 while the TB3 implementation charges c_Y = 1 — TB3 is evidence for that instantiation, not for §8's constants.

claims/CLAIMS.md C18 · verdicts/tb3-r1.md N3 · part2a §10.1–§10.3
§3

Fuel and the CEK machinepart2a §8.5C16 SKETCH

Every reduction costs one unit. That is what turns "number of steps" into a resource the compression theorem can budget.

Evaluation is a deterministic call-by-value CEK machine with a fuel counter. One charged transition is one fuel unit, so a bounded trace has exactly one row per unit spent. Running out is not an error — it is the outcome OutOfFuel, alongside Value and SortError. The evaluator never throws.

Instrument · the fuel metermeasured by probe on src/ir/programs.jl
f = 0

trivial decider needs
3 closure + beta + prim
equality decider needs
5 two lookups cost 1 each
Eval overhead h(d,u)
63 = 3 + |d| + |enc(u)|
looping Fix
OutOfFuelin 0.001 s — never a host hang
The charge tablesrc/ir/programs.jl · PRIMITIVES + step!
charged contractionchargenote
BoundVar lookup1a lexical address, resolved by frame traversal
closure creation1
beta (application)1
If selection1only the selected branch is entered
not and or eq lt add sub length bit1every registered primitive, and every literal
Quote1reifies syntax; does not run it
Fix unfolding1closes the self_code hole
Eval front endh(d,u)3 + description_size(d) + encoded_size(u)
Specialize1 + |t| + Σ|env|term sizes in canonical bytes
context navigation0folded into the same transition
What is claimed, and what is not

C16 (SKETCH): the CEK relation is a function, so evaluation is single-valued; fuel is monotone; and Eval_L(Quote(t), u; f + h(d,u)) = eval_L(t, u; f). TB3's tests (a) and (b) are the first machine evidence for it — on fixtures, with a coarser charge than §8's, byte units rather than the ν-encoding's bits, and c_Y = 1. There is no verdict promoting C16, so it stays SKETCH.

claims/CLAIMS.md C16 · briefs/23-tb3.last.md · part2a §8.3–§8.4
§4

Descriptions, not closuresgt-04-cl.tex def:samplerC4a TESTED

Compress consumes code. A Julia closure with a hidden environment is not code, and the type system says so out loud.

This is the requirement that shapes the whole prototype. Compress must measure a verifier's length, substitute static parameters into it, and emit new code — so a runtime function value will not do. Every sampler in the package is therefore asked four questions, and a sampler that cannot answer them from its own bytes is returned as NotDescribable rather than silently working.

Instrument · the four-query sampler APITB1 · real answers from test/tb1_ld_sampler.jl

the query

what the package answers

description_size L_Point
75 bytes
L_ALine
132 bytes
L_DLine
156 bytes
closures, direct_sum, concatenate
NotDescribable

the four sorts a description must keep apart

a closurehost environment; length unmeasurable
quoted syntaxa finite tree with canonical bytes
a compiled circuitgates, refused past a budget
a universal evaluatorreads bytes, charges h(d,u)

what the round trip actually checks

decode_cl inverts canonical_bytes; the suite asserts canonical_bytes(describe_cl(decode_cl(b))) == b, apply(decode_cl(b), z) == apply(L, z) on all 8⁵ seeds, and equal depth-3 factor spaces. An independently written parser and evaluator — not the package's decoder — reproduced 648 comparisons with 0 disagreements at TB2.

Scope, verbatim: the bytes are not yet checked to carry the stage-matrix index order — every matrix serialised at this rung is diagonal, so a transposed encoder changes no described map and no test notices.

Why the paper cares

The compression machine's output sampler must depend only on λ and universal constants — never on the input verifier's bytes — or the recursion does not close. That is a statement about code dependencies, and it can only be tested on objects that have code.

handoff.md “Representation requirements” · gt-12-compression.tex lem:compress-independent-samplers
§5

Conditionally linear samplersgt-07-ldt.tex:203–237C4a TESTED

The question distribution is not arbitrary: a seed is read in stages, and each stage's linear map may depend only on what earlier stages produced.

This is the structural constraint the whole construction is organised around. A conditionally linear map of level ℓ splits the ambient space into ℓ factor registers; it reads the first, applies a linear map to it, and only then chooses the linear map for the second. For (q,m,d) = (8,2,1) the ambient space is Vpt ⊕ Vcoord ⊕ Vdir, of dimension 5, and the three maps of the low-degree test sit at levels 1, 2 and 3.

Instrument · seeds into questionsreal apply(L, z) for all 32,768 seeds, extracted from the package
L_Point question L_ALine — axis line L_DLine — diagonal line

the three questions this seed produces

stage structure (C4a, verbatim)

maplevelfactor registerschains
L_Point1{1,2,3,4,5}1
L_ALine2{3,4,5}, {1,2}8
L_DLine3{3}, {4,5}, {1,2}288
seeds enumerated
32,768all of 8⁵
axis joint support
512every mass exactly 64
diagonal joint support
18,432masses 1 or 8
zero-direction points
512carrying 2,304 seeds
The two exact histogramsrecomputed on this page from the extracted table

Each bar is one distinct (line question, point question) pair, ordered by how many of the 32,768 seeds produce it. The axis distribution is flat — 512 pairs of mass 64. The diagonal distribution is not: 18,432 pairs split between mass 1 and mass 8, and the 512 zero-direction pairs are exactly the ones carrying 2,304 seeds between them.

Support growth over the exhaustive sweep. Both curves are computed from the same table this page uses; they land on 512 and 18,432, which is what the suite prints.
Scope, verbatim from C4a

The comparison against the transcribed source is not χ-independent, and on the 512 zero-direction points the equality additionally rests on a DESIGN SOURCE_REPAIR: Llnf0 = id, which def:cl-canonical does not define. That repair is emitted as its own certificate node under the CHECKED histogram node, so it is visible rather than assumed. No claim is made here about any other (q,m), nor about concatenate, direct_sum, product or TypedSampler.

claims/CLAIMS.md C4a · verdicts/tb1-r1.md O1, O3 · verdicts/tb1-r4.md §1.1–§1.3
§6

The classical low-degree testgt-07-ldt.tex fig:ld-deciderC4c TESTED

Ask for a point and a line through it. A cheating prover must either break the degree bound or contradict itself where they meet.

Claim C4c was created at TESTED by verdicts/tb1-r6.md (the TB1 lane's closing round, PASS). Along the way the r5 critic found a genuine divergence from the ground truth — on a zero-direction diagonal line the decider compared the line answer at t = 0 only, where gt-07-ldt.tex:379–384 requires every t; 1,024 of the 37,888 line-vs-point decisions — which brief 65 fixed source-exactly. One MINOR residue stands in the row's scope: the admissible set on a degenerate line is asserted, not yet mutation-owned.

The decider Dld sees two typed questions and two answers. If the types are equal it demands equal answers. If one is a point and the other a line through that point, it demands that the line polynomial has degree at most d (axis) or md (diagonal) and that evaluating it at the point reproduces the point answer. If nothing applies, it accepts.

Instrument · the degree bound and the meeting pointhonest polynomial g = 1 + x₁ + x₁x₂ over GF(8), modulus x³+x+1
d = 1

The amber cell is the point question (3, 5) — the separator the suite prints. The teal row or column is the line question.

the line answer

what Dld does

support decisions swept
71,360nine ordered type pairs, all 8⁵ seeds
non-noop
40,7682,880 tautologies + 37,888 line-vs-point
honest prover rejected
0 times
degenerate diagonal lines
1,024 checked at one parameter instead of eight (tb1-r5 N29)
Where the 71,360 decisions sitper ordered type pair · verdicts/tb1-r4.md §1.6
left \ rightPointALineDLine
Point6451218,432
ALine5126415,296
DLine18,43215,2962,752

The diagonal entries are identical-question tautologies. The 15,296 ALine×DLine decisions are the ones where the two line families meet and nothing applies — the decider accepts, and that acceptance is counted, not skipped.

The degree separator. Bending one entry of an otherwise honest line answer raises its interpolated degree to 2 against a claimed d = 1, and the format rule ld_axis_degree fires before the point rule ever runs. The clip's polynomial is illustrative; the separator point, the degrees and both rule names are the suite's own printout.
One repair worth knowing about

The source accepts vacuously when no t with line(t) = point exists. The executable rejects instead — strictly stricter than the paper — and carries that decision as a SOURCE_REPAIR :ld_off_line_rejects node. The branch is reached zero times in the sweep, which is exactly why it needs a mutant of its own before anything may be claimed about it.

gt-07-ldt.tex:377–384 · verdicts/tb1-r4.md N23 · verdicts/tb1-r5.md N29
§7

Tseitin and arithmetizationgt-10-answer-reduction.tex prop:tseitin-arith-degreeC8 TESTED

Individual degree is fan-out. On the real six-gate circuit one variable reaches degree 6, not 2.

Tseitin turns a circuit into a formula by giving every gate a wire variable and asserting each gate's local relation; arithmetization turns that formula into a polynomial by sending ∧ to ×, ¬ to 1−·, and ∨ through De Morgan. The arithmetization of a formula tree is multilinear in its leaf occurrences, so a variable's individual degree is bounded by how many times it appears — which grows with the fan-out of the gate that produced it.

Instrument · the real six-gate TB0 circuitsrc/ir/circuits.jl tb0_circuit()

Click a wire variable to see where its occurrences come from. w₁ = ¬x₁ feeds both w₂ and w₃ — fan-out 2.

occurrence vector, printed by the suite

max individual degree of F_arith
6the paper's proposition says 2
at w₁, fan-out 2
2 + 2·2 = 6
at the output wire w₆
3 + 2·0 = 3
two-gate regression (x₁,x₂,x₃,w₁,w₂)
(2, 2, 2, 4, 3)
Finding F1 — stated softly, on purposedocs/findings.md · C8 TESTED (scoped)

Our reading of the NW19 Tseitin gadget may be wrong. With that caveat first: reading z_i := (g_i ∧ w_i) ∨ (¬g_i ∧ ¬w_i) and arithmetizing along the formula tree gives occ(w_i) = 2 + 2·fanout(gate i) and occ(x_j) = 2·fanout(input j), so a fan-out-2 gate already reaches individual degree 6. The proposition in gt-10 states 2.

The theorem survives. The surviving weaker statement is deg_v(F_arith) ≤ 2(1 + fanout_max); with copy gates enforcing fan-out ≤ 2 that is ≤ 6, so c₀ has individual degree ≤ 7 and the Schwartz–Zippel bounds become (6+5d)m′/q and (2+d)m′/q — fine as long as d ≥ 7, and the paper's d = k ≥ 11. The individual-degree-3 statement for c₀ in the completeness proof inherits the same correction.

A second note, F2: NW19's F := z₁ ∧ … ∧ z_s constrains w to be the wire values but never asserts the output wire is 1, so it is satisfiable for every x. The MIP*=RE definition states the contract rather than the construction, so the implementation adds the conjunct w_out — one more occurrence, giving 3 + 2·fanout.

Exactly what C8 is allowed to say

TESTED, and scoped: the individual degrees of a real Tseitin arithmetization were computed, they equal the occurrence counts, and the mutants that would hide the discrepancy are killed. It is not a claim that the paper is wrong — it is a claim about what this arithmetization does on these circuits.

claims/CLAIMS.md C8 · verdicts/tb0-r1.md (PROMOTE, scoped), r2, r3 re-affirmed
§8

The zero basisgt-10-answer-reduction.tex prop:zero-basisC2 TESTED

"Vanishes on the Boolean cube" becomes a coefficient identity — an object the verifier can check with a handful of point queries.

The PCP's central object is a polynomial c₀ built so that it vanishes on {0,1}n exactly when the underlying circuit is satisfied. Vanishing on the cube is equivalent to lying in the ideal generated by z_i(1 − z_i), so the prototype divides c₀ by that ideal and keeps the quotients as part of the proof. If the division leaves a remainder, no certificate is issued.

Instrument · the three retained witnessesTB0 · 16 Tseitin variables · 65,536 Boolean points

One pixel per Boolean point of {0,1}16. Green where the suite checked c₀ vanishes.

Boolean points checked
65,536
quotients c₁ … c₁₆
16seven of them zero at witness (i)
arbitrary-coefficient quartics
512 / 512rewrite correct
max inddeg(c_i)
6 ≤ d
Cube vanishing against φ_C. At the satisfying witness the identity closes with remainder 0; at the all-zero witness the remainder is two monomials and the coefficient-identity replay fails. Vanishing on the cube tracks φ_C exactly on all three retained witnesses.
What stays CITED

The general circuit / Tseitin / F_arith correspondence is cited, not proved here. What is machine-checked is the exhaustive 2¹⁶ truth table on this circuit, the rewrite on arbitrary GF(8) coefficients, and the three witnesses. The 1,024-witness loop is a clause-relation count (512 satisfying) — a surrogate, explicitly not a remainder computation.

claims/CLAIMS.md C2 · verdicts/tb0-r3.md (PROMOTE)
§9

The PCP verifiergt-10-answer-reduction.tex fig:pcpverifierC1 TESTED

Five low-degree extensions, one polynomial that must vanish on the cube, and a verifier that reads a handful of points and lines.

The proof string is Π = (g₁,…,g₅, c₀, c₁,…,c_{m′}): five low-degree extensions of the witness blocks, the composite polynomial, and its quotients. The verifier picks a random point, restricts the proof to axis-parallel and diagonal lines through it, checks degrees, and then checks two algebraic identities — the formula test and the zero-on-subcube test. Everything below is measured on the six-gate instance.

Instrument · walking fig:pcpverifierTB0 · witness (i) and (ii), GF(8) and GF(2¹¹)
β₀ at the separator, GF(8)
2honest; 1 with g₂−o₂ deleted
β₀ at the separator, GF(2¹¹)
96honest; 48 with g₂−o₂ deleted
points on the 16 named lines
128all accepted for witness (i)
polynomials in Π
225 + c₀ + 16 quotients

the budget, honestly

Witness (i) has 33,432 monomials in c₀; the five per-block products cost 37,240 / 33,432 / 33,432 / 33,432 / 33,432, so the cumulative 170,968 exceeds the 160,000-monomial budget while the peak 37,240 does not. The builder therefore streams rather than materialising — and when a real generated instance blows the budget it says ExpansionRefused instead of allocating (chapter 11).

the policy report, verbatim

policy γ=1
small = (PASS, FAIL, FAIL, FAIL, FAIL, FAIL)
sampled = (PASS, NOT_EVALUABLE, PASS, PASS, PASS, PASS)
degree_formula = 6

Failed hypotheses are printed as FAIL and unmeasured costs as NOT_EVALUABLE; neither is ever folded into a PASS. That discipline is what makes the toy-regime chapters below readable at all.

What C1 is and is not

It is completeness evidence on named points and lines, replayed node by node from the constructor's own sub-terms, with an object-identity check so a certificate borrowed from another proof is refused with :certificate_binding. It is not an exhaustive all-z statement and not a soundness claim. No uniform z in GF(2¹¹)¹⁶ are sampled — that gap is tracked as an open issue.

claims/CLAIMS.md C1 · verdicts/tb0-r4.md (PROMOTE)
§10

Answer reductiongt-10-answer-reduction.tex fig:decider-pcpC9, C4b TESTED

Three roles times eighteen question types is 2,916 ordered pairs — and on 2,736 of them the decider is required to check nothing at all.

Answer reduction replaces long answers with short ones by making the provers answer a PCP about their own long answers. The verifier's question type set becomes a product: each of the three oracularised roles (alice, bob, oracle) carries the eighteen PCP question types {Point_i, ALine_i, DLine_i}i=1..6. The decider is a dispatch table over the resulting 54 types, and the striking fact is how sparse it is.

Instrument · the 54 × 54 guard mapevery cell computed by answer_reduce_guard_branches on the real reduction

ordered type pairs
2,91654 types, both orders
trigger no check at all
2,736= 76/81 = 93.827 %
trigger the original game
10792 of them alone
trigger global consistency
5453 of them alone
The nine replay casesTB2 · three seeds · honest 27 / corrupted-rejected 27
caserule that firesexample type pair from the suite trace
global_consistencyglobal_consistency(alice,Point_1) × (alice,Point_1)
input_consistencyinput_consistency(oracle,Point_6) × (alice,Point_1)
input_axisld_axis_point(alice,Point_1) × (alice,ALine_1)
input_diagonalld_diagonal_point—
proof_consistencyproof_consistency—
proof_individual_diagonalld_diagonal_point(oracle,Point_3) × (oracle,DLine_3)
proof_simultaneous_axisld_axis_point—
proof_simultaneous_diagonalld_diagonal_point(oracle,Point_6) × (oracle,DLine_6)
gamepcpverifier(oracle,Point_6) × (bob,Point_2)

Each of the nine certificate cases is replayed at three seeds (the zero seed, tb2_seed 5, and RNG 0x9E): 27 honest outcomes accepted, 27 corrupted outcomes rejected. Separately, the decider's trace was compared against an independent enumerator on all 2,916 pairs at the zero seed and again at tb2_seed 5 with honest TB0-proof answers — 2,736 silent, 180 guarded, no mismatches. Brief 69 ran all nine cases in both orientations (54 outcomes, the rejecting player asserted); brief 73 then covered every one of the 37 guard keys with a 19-case × 3-seed × 2-orientation block (114 outcomes, rejecting keys set-equal to the expected 37). TB2's critic loop closed at r8 with no MAJOR objection after eight rounds.

what the 18 PCP maps cost to describe

Point_1..63,009 B each
ALine_1..52,893 B each
ALine_610,228 B
DLine_1..52,754 B each
DLine_610,479 B

The copy-6 maps are four times larger because they carry a 16-way BranchByAxis table. All 18 round-trip; the 18 byte strings are pairwise distinct.

the gap that is still open

The 54 product maps are NotDescribable: direct_sum wraps host closures. Their four queries and the lem:cl-kth replay do work, but description-level DL9-direct-sum is not implemented. So the typed layer is describable and the product layer is not — and the compression recursion needs the product layer.

The detyping "+2 levels" and every quantum soundness statement remain CITED.

One load-bearing repair

eq:V-pcp gives dim V6,coord = 6 while table:tpcp supplies one scalar. The implementation reads Vaux,coord and zeroes the other five components — SOURCE_REPAIR :PCPCopy6CoordinateScalar. The convention is load-bearing: reading the copy-1 scalar instead makes step 4(c) reject.

claims/CLAIMS.md C4b · verdicts/tb2-r3.md NE2
§11

The quoted front endgt-10:237–273 prop:standard-succinct-satC10 TESTED · verdicts/tb3-r2.md

From 33 bytes of quoted decider to a PCP instance, with nothing hand-written in between.

Claim C10 was promoted to TESTED by verdicts/tb3-r2.md. One MAJOR was left open there (N11): it was the orchestrator's, not the code's — the instantiation clause on C16/C18 had been narrowed before adjudication and has since been corrected. The remaining minors (N12–N17) were carried into the TB4 round, which converged at verdicts/tb4-r3.md (PASS).

This is the rung that makes the pipeline real: the decider is quoted to canonical bytes, evaluated under fuel to produce a bounded trace, the trace is turned into succinct 3SAT by a Cook–Levin encoding, the shared 3SAT data is decoupled into five blocks, the result is padded and compiled to a circuit, and that generated circuit goes through the same PCP builder chapter 8 used — and then through chapter 10's decider.

Instrument · the front end on two real decidersTB3 · all values printed by test/tb3_frontend.jl
The honest failurethe equality decider never reaches build_pcp

Three fuel units instead of one, and the instance explodes: 15 3SAT clauses become 47 decoupled 5SAT clauses (15 formula + 4 copy + 28 equality), the padded instance has 423 live gates against 3 for the trivial one, and the arithmetization refuses at the seventh gadget:

ExpansionRefused(279,936 > 160,000)

The refusal is the point. A budget that is silently exceeded produces a number nobody can trust; a budget that refuses produces a fact. The F_arith candidate count at that stage is bounded by 669·7423 ≈ 6.8 × 10412, and c₀ by about 2.2 × 10414 — so nothing here was going to be materialised.

The two leaves that are not CHECKED

[CITED] CookLevinGeneral — field alphabets are enumerated over all four answer inputs rather than decoded from an O(log T + log σ)-bit window, and the enc_Γ answer format is not enforced. [ASSUMED] RawAnswerBlocks — answer blocks are read as raw bits of widths 1, 1; the enc_Γ format and the (10)L/2−T padding clauses of gt-10:1036–1130 are not emitted. Both sit in the certificate tree where a reader can find them.

docs/tutorial/build/data/suite59q.log · briefs/23-tb3.last.md
§12

Introspectiongt-08-introspection.texC14 TESTED (scoped)

The verifier stops sending questions and instead asks the provers to sample their own — which only works because entanglement lets it check that they sampled honestly.

executed at TB6 — C14 TESTED (scoped); critic round 4 pending

Everything in this chapter is transcribed into docs/DESIGN.md §11 with source line references, and as of TB6 it runs: the Pauli sampler and decider, the introspection sampler (typed, then downsized and detyped to level 5 with dimension 142 on fixture E and 179 on fixture M), and the introspection decider, which reads the input verifier only through the four sampler queries on the paper's schedule and meters every child call in units of one primitive interpreter step. Under the paper's budget R = Nλ every honest child call on fixture M times out at exactly 16 steps — so acceptance under the source gate is withdrawn, printed as toy_child_fuel = FAIL(owner=tb6-child-meter) — and under the explicit toy budget of 65,536 steps every call returns (measured costs 5 to 60 steps per mode). The honest strategy is simulated exactly on a stabilizer tableau of 6 (E) and 26 (M) qubits; every one of the 14,378 enumerated outcomes on E carries an exact dyadic probability (structural to the enumerator, so total mass one is an identity and not evidence). The paper's literal ≥ 3Q guard rejects exactly 10 of 116 and 22 of 128 oriented type pairs, which is why the operative guard reads > 3Q. Two further places where the source as written does not typecheck surfaced as red tests and are carried as SOURCE_REPAIR nodes (the dual-map complement and the hiding suffix register); both are disclosed and repaired in the C14 row. It is here because it is the piece that makes compression exponential: a verifier of index n would need 2n-bit questions, so instead the provers are made to generate their own questions from shared randomness, and the verifier checks the generation with a Pauli test.

Instrument · the Pauli basis and the 3Q boundaryDESIGN §11.1–§11.4 · executed at TB6 on fixtures E and M

Two provers share EPR pairs and are asked to measure in the X or the Z basis. Anticommuting observables cannot both be determined; the test uses exactly that to certify the measurement, not the outcome.

the type graph, counted exactly

|TypePauli|26
Gpauli oriented pairs86 = 30 non-loop + 26 loops
|TypeIntro| at level ℓ32 + 2ℓ
Gintro oriented pairs6ℓ + 110
Ŝintro typedfield 2, level 3, dim (3m+3)·log₂q
Sintro untypedfield 2, level 5, + 4·(32+2ℓ)

These are literal finite reconstructions of fig:type-graph-ms, fig:type-graph-pauli and fig:type-graph-intro, checked at TB6a against hand-transcribed edge lists (26 types, 86 oriented Pauli pairs; 34/38/50 types and 116/128/164 oriented pairs at ℓ = 1, 3, 9) — an audit of the transcription, not of the theorem.

child fuel budget
R = Nλone metered interpreter step per unit
TB6b substitutes
65,536toy_child_fuel = FAIL(owner=tb6-child-meter); honest calls time out at exactly R under the source budget
capacity chain
s(N) ≤ R ≤ M ≤ Qthe predicate is M ≥ R, not Q ≥ R
a, b (thm:pauli constants)
symbolsa numeric instance is NOT_EVALUABLE
The fuel gate, and why it is not a formalitygt-08-introspection.tex:417–419

Every call the introspection decider makes into the input verifier — sampler or decider, including Dimension(N) — gets exactly R = Nλ units, and the counter rejects before executing step R+1; a return at step R is permitted. λ-boundedness is two separate conditions — a byte-size bound on |V| and a runtime bound — and neither discharges the other. The design records that every child-call record must carry fixture, quote hash, mode, role, stage, exact metered cost, the source R, the supplied budget, and the timeout/return; until a quoted-interpreter trace exists, costs stay NOT_EVALUABLE(owner=tb6-child-meter) and no dependent acceptance may pass.

What an honest child call costsDESIGN §11.6 · exact metered steps, the finite maximum per slot
fixturemodesource Rtoy F_childmeasured stepsfits R?fits F_child?
TB6b-EDimension465,5365FAILPASS
TB6b-EMarginal465,53613FAILPASS
TB6b-EFactor465,53610FAILPASS
TB6b-ELinear465,53613FAILPASS
TB6b-Echild decider465,53610FAILPASS
TB6b-MDimension1665,5365PASSPASS
TB6b-MMarginal1665,53653FAILPASS
TB6b-MFactor1665,53660FAILPASS
TB6b-MLinear1665,53650FAILPASS
TB6b-Mchild decider1665,53622FAILPASS

Only the measured fit to the supplied toy budget enables the operative-toy acceptance check; the general source time bound stays NOT_EVALUABLE(owner=tb6-child-meter) and never inherits a toy PASS.

Status, precisely

C14 is TESTED, scoped in the claims table (verdicts/tb6-r1.md, PROMOTE with scope; verdicts/tb6-r2.md, row replaced). Critic round 3 (verdicts/tb6-r3.md, FAIL(R1,R2,R3)) found three defects and a repair round (brief 84) fixed them: non-Pauli answers are now checked for membership in V once, before dispatch, on every oriented pair including the self-loops of Gintro (R1); the out-of-V witnesses cover the whole tail of coordinates, s+1, s+2 and Q (R2); and the mutation runner credits a kill only for a failed assertion, so an error or crash alone no longer counts (R3). Timed-out nested children are now pinned part-way charged (S1). The row stays on HOLD for the strike of its N1/N2 scope sentences and for the test-only scope of D1(d) until a round 4 (brief 85, not yet launched) rules on them, so it stays scoped. Both fixtures fail the paper's own |V| ≤ λ hypothesis, so every hypothesis audit refuses and no theorem conclusion is invoked; what the rung establishes is construction behaviour with every failed predicate printed with an owner. Quantum rigidity — the actual content of thm:pauli — remains CITED.

claims/CLAIMS.md C14 · docs/DESIGN.md §11 · gt-07-ldt.tex:1426–1447
§13

Anchoring and repetitiongt-11-parallel-repetition.texC13 TESTED

Compression costs soundness; parallel repetition buys it back — and the toy diagnostic in this repo shows why naive repetition cannot.

executed at TB5 — C13 TESTED (scoped), C12 TESTED

Each stage of Compress degrades the soundness gap, so the last stage restores it by running k(n) copies in parallel. Anchoring comes first: a second question type whose only legal answer is the canonical bit 0, which gives the repetition theorem the structure it needs. TB5 built both as description-level transformations: the anchored sampler on the V_copy fixture has level 3 and dimension 9, the 81-fold repetition is one compact loop term of 85 bytes whose size does not change with k, the repeated decider computes the component bound before reading any payload and rejects an oversized component with an empty child-call log, and two byte-distinct deciders yield the identical repeated-sampler hash. What stays CITED is exactly what the paper proves analytically: PCC completeness and the entanglement relation of thm:repetition.

Instrument · the 81-fold direct sumDESIGN §10.3 · TB5 fixture · executed: |S^rep| = 85 bytes, 128/128 honest pairs, four named transcripts

The repeated decider takes the logical AND of the copies, so one corrupted component rejects the whole transcript. It also computes the component bound B(n) = (λn)τ before reading any payload, so a hostile length prefix cannot force an unbounded scan.

k(n)
(λn)(1+c′)τ
at n = 9, λ = τ = c′ = 1
k = 81B = 9
dimensions
1 → 9 → 729
level
3 → 3direct sums do not raise level
The diagnostic that rules out the naive routeC6, N1 — both PROVED

The one thing on this page with a proved status is a negative result. A recursive midpoint protocol verifies y = f2ⁿ(x) in O(n) verifier time and has perfect completeness — but for a false claim the optimal acceptance probability is exactly 1 − 2−n, and adaptive r-copy sequential repetition gives exactly (1 − 2−n)r. So amplification needs Θ(2ⁿ) repetitions and destroys the compression. That is the precise sense in which an iteratable, gap-preserving transformation is the hard requirement.

C6 and N1 are PROVED via verdicts/midpoint-r2.md, with 1,380 exact values checked over ℤ/5 and friends. The verdict struck the stronger phrasing "cannot serve as a compression step" (objection O15) — the negative result is about sequential repetition.

A source inconsistency the code refuses to smooth over

gt-12:70 prints k(n) = (λn)τ inside ComputeParrepVerifier, conflicting with gt-11:200 and gt-12:355, which both say (λn)(1+c′)τ. The description retains the latter two and reports the inconsistent line without using it. The source also calls k(n) an integer while declaring only c′ > 0; production keeps the symbolic term plus an ASSUMED integrality witness rather than silently rounding.

docs/DESIGN.md §10.2 · gt-11-parallel-repetition.tex:200–215
§14

Compress, the fixed point, and MIP*=REgt-12-compression.tex fig:compressC15 CONJECTURE

A verifier that asks whether a machine halts, by compressing its own code and asking the smaller version.

checkpoint: executes under a toy policy — critic verdict pending (C15 CONJECTURE)

The machine roomone continuous scene · the ladder and the certificate tree

Five platforms, one per stage of Compress, with radius set by the toy-regime dimension and height by the level; the branching structure beside them is the TB0 certificate tree of chapter 16, lit by grade. Amber marks the stage the flythrough is at. If WebGL is unavailable a painted still of the same scene is shown instead.

The structural bookkeepingDESIGN §12.2 · every row a LawCert
stagefieldlevelexact dimension lawtoy value
input V29s₀(n)9
V₁ = Intro(V, λ, 9)25(3m_I+3)·log q_I + 200206
typed AR25s₁ + (2m′_A+6)·log q_A—
V₂ = detype(typed AR)27s₁ + (2m′_A+6)·log q_A + 216840
anchored V₂29s₂ + 8848
V₃ = repeat29k(n)·(s₂+8)1,696

The level chain 9 → 5 → 7 → 9 is CONSTRUCTED and checked against the parameter table: detyping adds 2, so answer reduction gives max(5+2, 5) = 7; anchoring adds 2 again; direct sums do not raise the level. |TypeIntro| = 50 at ℓ = 9 and |TypeAR| = 3·18 = 54.

The predicate report — built to fail visiblyDESIGN §12.5 · printed by the TB7 checkpoint · n = 2, λ = 32,768, s₀ = 9
predicateresult
input field/level/λ-bounded; n ≥ 2PASS
intro field admissible, m_I divides q_I, d_I = 1PASS
intro embedding Q_I ≥ s₀(N): 2 ≥ 9FAIL (owner Q_I<s₀)
intro canonical tuple equality; source M_I ≥ RFAIL
non-Pauli answer schemas: Introspect, Sample, Read, every Hide stageVACUOUS (owner Q_I<s₀)
AR P_shape, P_formula_paper, P_tail, P_divisibility, P_degreePASS
AR P_growth, universal μ/γ/τ, n ≥ C₀NOT_EVALUABLE
P_pcp_encodes_D1FAIL (owner pcpverifier-D1-trace)
enu:ar-game against the actual D₁NOT_EXECUTED
fixed-width σ₁ = length(canonical_bytes(D₁))PASS
repeat k_toy = (λn)(1+c′)τFAIL
repeat question and answer component guardPASS

At this tuple M_I = 2, Q_I = 2 and 3Q_I = 6 < 9: a nine-bit input space cannot embed in the two-bit register the source's answer format requires. Rather than shrink the fixture until everything passes, the design prints the failure and marks every dependent sub-test VACUOUS. A toy result can establish construction behaviour; it cannot satisfy a theorem contract when a required predicate fails.

The toy-regime ladder. Levels 9 → 5 → 7 → 9 and dimensions 206 → 840 → 848 → 1,696, with the largest declared line answer at 3,894 field symbols = 42,834 bits over F2¹¹ and the Repeat component guard at (λn)τ = 65,536.
D = Y Ψ, and the last stephandoff.md · gt-12-compression.tex:426–492

Now the fixed point. Define, for a machine M and a bound λ,

ΨM,λ(d)(n, x, y, a, b) = 1  if M halts within n steps,
                       = DCompress((Sλ, d), λ)(n, x, y, a, b)  otherwise.

Then DM,λ = Y ΨM,λ. If M never halts, the verifier at index n defers to the compressed verifier at a larger index, forever, and the game has a perfect entangled strategy at every level; if M halts at step T, the deferral bottoms out and the value drops. Deciding the value of the game therefore decides the halting problem — which is MIP* = RE.

Chapter 2's Y is exactly this combinator, and the implementation's Fix closes one self_code hole at constant charge rather than materialising the unfolding — which is what keeps |DM,λ| = O(|M| + log λ + 1) instead of unbounded. The TB7 checkpoint constructs Compress end to end under the printed toy policy (n = 2, λ = 32,768), with the level chain and dimensions of the table above checked, and performs one finite unfold of DM,λ = Y ΨM,λ; its fixed-point checks pass 5/5 (briefs/44-tb7-compress.last.md). It is a work-in-progress checkpoint: its critic round has not yet been run, and claim C15 stays a CONJECTURE.

What this page does not claim. The checkpoint makes no aggregate “16 honest accepts” claim, executes no all-description run, proves no sampler-independence, and gives no production soundness claim; enu:ar-game against the actual D₁ is NOT_EXECUTED and the non-Pauli introspection schemas are VACUOUS at this fixture, each printed with an owner above. One description-level self-reference is not the infinite fixed-point value argument. The general value and λ-bounded conclusions of gt-12:502–519, 569–576 stay CITED, and so does every quantitative soundness and entanglement-dimension bound in the composition.

§15

How these claims were earnedverdicts/ · test/mutations/

A status only ever rises because an adversarial critic said so, and every green test has a mutant proving it can go red.

Each rung of the ladder is written by a proposer and then attacked by a critic that recomputes the numbers independently. The critic files a verdict with numbered objections; the proposer repairs; the next critic adjudicates the repairs and files fresh objections. A claim's status moves up only inside such a verdict — never because the author says so.

Objection trajectories, by lane39 verdict files · MAJOR objections, the count each verdict itself tracks

The chart above has not been refreshed since TB5. Seven lanes (design, design-v2, midpoint, TB0, the analytic document, TB1, TB2) converged to zero MAJOR objections and a PASS, and TB4 has since converged at verdicts/tb4-r3.md. TB3, TB5 and TB6 verdict lines read FAIL(…) — TB3 FAIL(N11), TB5 FAIL(O1,O2), TB6 FAIL(O1,O2) at r1, FAIL(N1,N2,N3) at r2, FAIL(R1,R2,R3) at r3, the last repaired by brief 84 — yet their claims (C10, C13, C14) were promoted inside the per-claim decision sections. No verdict line ever reads PROMOTE — only PASS or FAIL(…).

verdict files
398 PASS · 31 FAIL(…)
mutants killed
235 / 23593/93 baselines OK, 2/2 runner probes refused; full runs before the memory-bound removal plus a focused run after
suite assertions
12730 passed1 broken (@test_broken); exit 0
TB0 timing gate
ratio < 100body over a calibration kernel, so it tracks CPU clock
The mutation runnerbaseline-first, each mutant in an isolated copy

Before any mutant runs, the runner establishes that the targeted test file passes unmutated — 93 baselines. Then each of the 235 registered mutants is applied in isolation and the target must fail an assertion. A kill is credited only for a failed assertion: a mutant that merely makes the test error out or crash is recorded as KILLED-BY-ERROR or KILLED-BY-CRASH and not counted, and two permanent probes check that the runner refuses such deaths. A mutant that survives is a test that proves nothing; a mutant that kills the wrong test is recorded as UNATTRIBUTABLE rather than counted. The recorded runs: no survivors, no load errors, nothing unattributable.

a representative mutanttargetoutcome
TB1 M-χ shift_bucket_boundarytb1_chi_boundaryKILLED
TB2 NF2 step1_compares_first_entry_onlytb2_lockstepKILLED
TB3 M-fuel eval_ignores_fueltb3_evalKILLED
TB0 R4M2 certified_views_bypass_ev_zcertificateKILLED
TB1 N4-off-line line_point_test_never_agreestb1_deciderKILLED
The claims ratchet, as it standsclaims/CLAIMS.md · statuses verbatim
idwhat it says, in one linestatusdepends onverdict

Legend, from the file: PROVED = adversarially verified derivation · TESTED = machine-checked on explicit instances, red-capable · SKETCH = derivation written, not yet verified · CONJECTURE · REFUTED (kept as a negative result). The low-degree decider (C4c, verdicts/tb1-r1.md…tb1-r6.md) and the front end (C10, verdicts/tb3-r2.md) are both TESTED.

§16

The certificate treesrc/certificates.jl

Every bound in the prototype carries a derivation tree, and the leaves say honestly which of them were only cited.

Nothing returns a bare number. A construction returns a Checked{T,C} — the term together with a certificate whose nodes are graded. verify_certificate replays every CHECKED node against the constructor's own sub-terms, and refuses a certificate borrowed from another proof with :certificate_binding. These are the two real trees the suite printed.

Instrument · the trees, as printeddata/suite59q.log · click a node

Select a node to see its grade, what it asserts, and where its authority comes from.

CHECKED replayed from the constructor's own sub-terms CONSTRUCTED true by the datatype's invariants CITED an analytic theorem, not reproduced here ASSUMED a gap the code does not fill SOURCE_REPAIR the source as written does not typecheck; this is the repair
The point of the grades

A tree in which every leaf is CHECKED would be a lie. The value of the discipline is that CookLevinGeneral is visibly CITED, RawAnswerBlocks is visibly ASSUMED, and the five SOURCE_REPAIR nodes are visibly repairs — so a reader can locate exactly where this prototype stops being evidence and starts being transcription.

src/MIPStarLambda.jl:107 · grades CONSTRUCTED, CHECKED, CITED, ASSUMED, SOURCE_REPAIR