The tailored halting verifier: the linear-constraints processor #
Paper II, II:1887–2001 (the map F, the verifier V^{M,λ}, lem:dhalt-values), along the
route of MIPRE/Foundations/Halting/Paper/Decider.lean, which this file parallels with the
linear-constraints processor in the role of the decider. For a tailored gap compression TG, a
machine M, a search program S' and a parameter λ, the verifier is
Vhalt TG U UT S' M λ = (S^λ, L^λ, lp M λ),
the compressed sampler and answer-length calculator at λ with the linear-constraints processor
lp M λ, the efficient Kleene fixed point (Cost.kleeneFix) of
P ↦ hardcode body (encode (M, (λ, P))). On (n, x, y, a^R, b^R) it runs body on its own
description and the input, and body:
- runs
Mon the empty input for the budgetNat.size n; if it halts, outputs the empty list of constraints, which accepts every answer pair of the right lengths; - otherwise runs the search program
S'on the descriptiondescOf λ (lp M λ)for the budgetNat.size n; if it halts, outputs the list[J](rejectConstraint 0), which rejects every answer pair; - otherwise computes the compressed linear-constraints processor
Compress ((S^λ, L^λ, lp M λ), λ)of its own verifier and runs it on the input through the universal machine.
Branches 1 and 3 are the paper's F (II:1900), with "accept" the empty list and "reject" the
list {J}. Branch 2 is Lin's search branch, which the existing halting layer has too: the value
form of compression has no base case for soundness, and the search supplies it.
lp_runs_iff(lem:dhalt-values): the processor's output, branch by branch.hasPerfectZPC_of_branch1,valStar_eq_zero_of_branch2: the first two branches decide the level outright — a perfect ZPC strategy, the trivial one (hasPerfectZPC_of_accepts_zero), and value0.hasPerfectZPC_iff_W,valStar_eq_W: otherwise the level is that of the compressed verifierW, the output ofTGon the verifier's own programs, with which it shares the sampler and the answer-length calculator, and whose processor outputs the same constraints there.
The construction #
The program outputting the empty list of constraints, which accepts every answer pair of the right lengths.
Instances For
The program outputting the list [J], which rejects every answer pair.
Equations
Instances For
The compressed linear-constraints processor of the verifier (S^λ, L^λ, P).
Equations
Instances For
The three branches, as a polynomial-time function of the description (M, (λ, P)) and
the input (n, rest): the program to run and its input.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The body of the processor: run prep, then the universal machine on its output.
Equations
- MIPRE.Tailored.Halting.body TG U UT S' = (MIPRE.Tailored.Halting.prep TG UT S').code.let_ (MIPRE.Cost.Prog.callVar 0 U.univ)
Instances For
The map whose fixed point is the processor: P ↦ hardcode body (encode (M, (λ, P))).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The linear-constraints processor LP^{M,λ}: the efficient Kleene fixed point of F.
Equations
- MIPRE.Tailored.Halting.lpProg TG U UT S' M lam = MIPRE.Cost.kleeneFix U (MIPRE.Tailored.Halting.F TG U UT S' M lam)
Instances For
LP^{M,λ}, as a closed program.
Equations
- MIPRE.Tailored.Halting.lp TG U UT S' M lam = { prog := MIPRE.Tailored.Halting.lpProg TG U UT S' M lam, closed := ⋯ }
Instances For
The tailored verifier V^{M,λ} (II:1925): the compressed sampler and answer-length
calculator at λ, and the processor LP^{M,λ}.
Equations
- MIPRE.Tailored.Halting.Vhalt TG U UT S' M lam = { sampler := TG.sampler lam, len := TG.len lam, lp := MIPRE.Tailored.Halting.lp TG U UT S' M lam }
Instances For
The compressed verifier of V^{M,λ}: the output of TG on its own programs, the same at
every level.
Equations
- MIPRE.Tailored.Halting.W TG U UT S' M lam = TG.output (MIPRE.Tailored.Halting.Vhalt TG U UT S' M lam).progs lam
Instances For
Running the processor #
A run of body on (P, (n, rest)) is a run of the program prep returns on the input it
returns.
A run of the processor on v is a run of body on its own description and v.
The first branch fires at the level n: M halts within Nat.size n.
Equations
Instances For
The second branch fires at the level n: the search halts within Nat.size n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The outputs of LP^{M,λ} (lem:dhalt-values): on an input of index n, the empty list
if M halts within Nat.size n; otherwise [J] if the search halts within Nat.size n;
otherwise exactly what the compressed processor outputs.
The level, by branch #
The answer-length calculator halts at every question of the sampler.
The first branch: at a level where M has halted, V^{M,λ} has a perfect ZPC
strategy, the trivial one: every constraint list is empty.
The second branch: at a level where the search has halted and M has not, V^{M,λ}
has value 0: every constraint list holds a rejecting constraint.
Off the first two branches, V^{M,λ} and its compressed verifier output the same
constraints at the level n.
Off the first two branches, completeness is the compressed verifier's.
Off the first two branches, the value is the compressed verifier's.