The canonical decider, as a program #
Paper II, II:1757–1787: the canonical decider of a tailored normal form verifier, on the questions
x, y and the answers a, b of index n, runs the answer-length calculator L on (n, x, κ) and
(n, y, κ) for both kinds κ of variables, checks that |a| = ℓ^R(x) + ℓ^L(x) and
|b| = ℓ^R(y) + ℓ^L(y), runs the linear-constraints processor LP on the readable parts
(n, x, y, a^R, b^R), and accepts when every constraint c it outputs satisfies
⟨c, (a, b, 1)⟩ = 0. This file writes it as a program of the ambient model.
Prog.pushProg F P: from a states, runningPon an inputF sbuilt from it and pushing the output onto the state — with its runs and its inversion, and that ofCost.seqProg.- The polynomial-time pieces: the readings of
Cost.Data.spineListandCost.Data.bitsListDas programs, the length check,satF(one linear constraint, through the parity dot productLowDegree.BinaryLinear.dotBitsProg) andallSatF(all of them). canonProg L LP: the four runs ofL, the run ofLP, and the final check, in sequence;canonProg_accepts: it accepts exactly when the five runs halt and the check passes.
Running programs in sequence #
From a state s: build the input F s, run the closed program P on it, and push its
output onto the state, cons (P (F s)) s.
Equations
- F.pushProg P = F.let_ (((MIPRE.Cost.Prog.var 0).let_ P).let_ ((MIPRE.Cost.Prog.var 0).cons (MIPRE.Cost.Prog.var 2)))
Instances For
Steps, as polynomial-time functions #
A step followed by the rest: running pushProg F P and then Q from the state s is
running P on F s, to some output r, and Q on the new state (r, s).
Reading data, as programs #
Every datum encodes its spineList.
Equations
Instances For
A datum read as a bit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A datum read as a list of bit strings.
Equations
Instances For
A datum read as a length in unary.
Equations
Instances For
A datum read as a length, written as that many falses.
Equations
Instances For
A bit string's length, written as that many falses.
Instances For
One linear constraint, and all of them #
The parity of the number of common ones is the parity dot product of
LowDegree.BinaryLinear.
One constraint: c and v have the same length and ⟨c, v⟩ = 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The step of allSatF: conjoin one more constraint, keeping the vector.
Equations
- One or more equations did not get rendered due to their size.
Instances For
All constraints of a list are satisfied by v.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical decider #
The input of a decider, (n, x, y, a, b).
Equations
Instances For
The input of the first run of L, (n, x, false).
Equations
Instances For
The input of the second run of L, (n, x, true).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input of the third run of L, (n, y, false).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input of the fourth run of L, (n, y, true).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input of the run of LP: (n, x, y, a^R, b^R), the readable parts cut at the lengths
the first and the third run of L wrote.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical decider after the fourth run of L: run LP, then check.
Equations
Instances For
After the third run of L.
Equations
Instances For
After the second run of L.
Equations
Instances For
After the first run of L.
Equations
Instances For
The canonical decider of a tailored verifier with answer-length calculator L and
linear-constraints processor P (II:1757–1787), on encode (n, x, y, a, b): four runs of L,
one of P, and the final check, in sequence.
Equations
Instances For
The final check, read: the two lengths, and every constraint.
The canonical decider accepts exactly when the five runs halt and the check passes.