Clause indices and the five Boolean PCP blocks #
The describer reads five little-endian indices followed by their signs. This module identifies that input format with the Boolean coordinates used by the low-degree PCP, including both directions of the index encoding.
A Boolean cube point as a little-endian index.
Equations
Instances For
The Boolean cube point named by a little-endian index.
Equations
- MIPRE.SAT.indexCube i j = (↑i).testBit ↑j
Instances For
The concrete bijection used when decoding the five answer assignments.
Equations
- MIPRE.SAT.cubeIndexEquiv m = { toFun := MIPRE.SAT.cubeIndex, invFun := MIPRE.SAT.indexCube, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equal-width clause encodings lose neither an index nor a sign.
Equations
- MIPRE.SAT.Clause5.ofLiterals l = { l₁ := l 0, l₂ := l 1, l₃ := l 2, l₄ := l 3, l₅ := l 4 }
Instances For
The five Boolean disjuncts are precisely the satisfying-literal condition in the algebraic PCP completeness and decoding lemmas.
The clause described by the first five blocks and sign coordinates of a point.
Equations
- P.pointClause y = MIPRE.SAT.Clause5.ofLiterals fun (i : Fin 5) => { var := MIPRE.SAT.cubeIndex (P.block i y), pos := y (P.signIndex i) }
Instances For
The describer's actual input order agrees with the five PCP blocks and signs.
Extend a described clause to a PCP point, initially setting all gate coordinates to false. Those coordinates may subsequently be replaced by a witness.
Equations
- P.pointFromClause c j = (MIPRE.SAT.clauseInput5 P.m P.m c).getD (↑j) false