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.
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:
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.
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.
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
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:deciderLambda 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.
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.
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.
- |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
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.3Fuel 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.
- 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
| charged contraction | charge | note |
|---|---|---|
| BoundVar lookup | 1 | a lexical address, resolved by frame traversal |
| closure creation | 1 | |
| beta (application) | 1 | |
| If selection | 1 | only the selected branch is entered |
not and or eq lt add sub length bit | 1 | every registered primitive, and every literal |
| Quote | 1 | reifies syntax; does not run it |
| Fix unfolding | 1 | closes the self_code hole |
| Eval front end | h(d,u) | 3 + description_size(d) + encoded_size(u) |
| Specialize | 1 + |t| + Σ|env| | term sizes in canonical bytes |
| context navigation | 0 | folded into the same transition |
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.4Descriptions, 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.
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 closure | host environment; length unmeasurable |
| quoted syntax | a finite tree with canonical bytes |
| a compiled circuit | gates, refused past a budget |
| a universal evaluator | reads 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.
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-samplersConditionally 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.
the three questions this seed produces
stage structure (C4a, verbatim)
| map | level | factor registers | chains |
|---|---|---|---|
| L_Point | 1 | {1,2,3,4,5} | 1 |
| L_ALine | 2 | {3,4,5}, {1,2} | 8 |
| L_DLine | 3 | {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
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.
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.3The 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.
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.
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)
| left \ right | Point | ALine | DLine |
|---|---|---|---|
| Point | 64 | 512 | 18,432 |
| ALine | 512 | 64 | 15,296 |
| DLine | 18,432 | 15,296 | 2,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 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 N29Tseitin 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.
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)
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.
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-affirmedThe 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.
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
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)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.
- β₀ 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.
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)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.
- 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
| case | rule that fires | example type pair from the suite trace |
|---|---|---|
| global_consistency | global_consistency | (alice,Point_1) × (alice,Point_1) |
| input_consistency | input_consistency | (oracle,Point_6) × (alice,Point_1) |
| input_axis | ld_axis_point | (alice,Point_1) × (alice,ALine_1) |
| input_diagonal | ld_diagonal_point | — |
| proof_consistency | proof_consistency | — |
| proof_individual_diagonal | ld_diagonal_point | (oracle,Point_3) × (oracle,DLine_3) |
| proof_simultaneous_axis | ld_axis_point | — |
| proof_simultaneous_diagonal | ld_diagonal_point | (oracle,Point_6) × (oracle,DLine_6) |
| game | pcpverifier | (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..6 | 3,009 B each |
| ALine_1..5 | 2,893 B each |
| ALine_6 | 10,228 B |
| DLine_1..5 | 2,754 B each |
| DLine_6 | 10,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.
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 NE2The 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.
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.
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.
[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.mdIntrospectiongt-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.
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 pairs | 86 = 30 non-loop + 26 loops |
| |TypeIntro| at level ℓ | 32 + 2ℓ |
| Gintro oriented pairs | 6ℓ + 110 |
| Ŝintro typed | field 2, level 3, dim (3m+3)·log₂q |
| Sintro untyped | field 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
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.
| fixture | mode | source R | toy F_child | measured steps | fits R? | fits F_child? |
|---|---|---|---|---|---|---|
| TB6b-E | Dimension | 4 | 65,536 | 5 | FAIL | PASS |
| TB6b-E | Marginal | 4 | 65,536 | 13 | FAIL | PASS |
| TB6b-E | Factor | 4 | 65,536 | 10 | FAIL | PASS |
| TB6b-E | Linear | 4 | 65,536 | 13 | FAIL | PASS |
| TB6b-E | child decider | 4 | 65,536 | 10 | FAIL | PASS |
| TB6b-M | Dimension | 16 | 65,536 | 5 | PASS | PASS |
| TB6b-M | Marginal | 16 | 65,536 | 53 | FAIL | PASS |
| TB6b-M | Factor | 16 | 65,536 | 60 | FAIL | PASS |
| TB6b-M | Linear | 16 | 65,536 | 50 | FAIL | PASS |
| TB6b-M | child decider | 16 | 65,536 | 22 | FAIL | PASS |
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.
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.
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.
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 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.
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–215Compress, 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)
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.
| stage | field | level | exact dimension law | toy value |
|---|---|---|---|---|
| input V | 2 | 9 | s₀(n) | 9 |
| V₁ = Intro(V, λ, 9) | 2 | 5 | (3m_I+3)·log q_I + 200 | 206 |
| typed AR | 2 | 5 | s₁ + (2m′_A+6)·log q_A | — |
| V₂ = detype(typed AR) | 2 | 7 | s₁ + (2m′_A+6)·log q_A + 216 | 840 |
| anchored V₂ | 2 | 9 | s₂ + 8 | 848 |
| V₃ = repeat | 2 | 9 | k(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.
| predicate | result |
|---|---|
| input field/level/λ-bounded; n ≥ 2 | PASS |
| intro field admissible, m_I divides q_I, d_I = 1 | PASS |
| intro embedding Q_I ≥ s₀(N): 2 ≥ 9 | FAIL (owner Q_I<s₀) |
| intro canonical tuple equality; source M_I ≥ R | FAIL |
| non-Pauli answer schemas: Introspect, Sample, Read, every Hide stage | VACUOUS (owner Q_I<s₀) |
| AR P_shape, P_formula_paper, P_tail, P_divisibility, P_degree | PASS |
| AR P_growth, universal μ/γ/τ, n ≥ C₀ | NOT_EVALUABLE |
| P_pcp_encodes_D1 | FAIL (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 guard | PASS |
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.
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.
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.
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
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 mutant | target | outcome |
|---|---|---|
| TB1 M-χ shift_bucket_boundary | tb1_chi_boundary | KILLED |
| TB2 NF2 step1_compares_first_entry_only | tb2_lockstep | KILLED |
| TB3 M-fuel eval_ignores_fuel | tb3_eval | KILLED |
| TB0 R4M2 certified_views_bypass_ev_z | certificate | KILLED |
| TB1 N4-off-line line_point_test_never_agrees | tb1_decider | KILLED |
| id | what it says, in one line | status | depends on | verdict |
|---|
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.
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.
Select a node to see its grade, what it asserts, and where its authority comes from.
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