The machine verifier for quantified Boolean formulas #
The verifier of the interactive proof for TQBF as a program with fair coins and word messages,
realized by a strict oracle PPT machine (Cslib.Complexity.QBFProtocol.isOraclePPTOn_verifier).
On a formula ψ it rejects when ψ has a free variable. Otherwise it computes the list xs of
the variable components of all the tokens of ψ, with multiplicity and with 0 for the tokens
without a variable (Cslib.Complexity.QBFProtocol.linVars), which contains every variable of
ψ; the degree bound D = 2 * size ψ; and the greatest prime p at most 2 * B for
B = 12 * size ψ ^ 2 * (size ψ + 1), found by trial division
(Cslib.Complexity.QBFProtocol.modulus); by Bertrand's postulate B < p. It then runs a stack
machine over the tokens of the arithmetization of ψ that linearizes the variables of xs after
every quantifier (Cslib.Complexity.QBFProtocol.Machine.loop), one token per step
(Cslib.Complexity.QBFProtocol.Machine.step), checking the claim that the arithmetization has
value 1 at the origin over ZMod p:
- a state holds the remaining tokens, the stack of pending claims, each a point and a value, and whether every check so far passed;
- a variable or a constant checks the claim on top of the stack, and a negation replaces its value
cby1 - c; - a binary connective or an operator sends the remaining tokens and the point of the top claim,
reads
D + 1rows ofwidth pbits of the reply, and proceeds asCslib.Complexity.QBFProtocol.verifyAt; an operator draws its random point byCslib.Complexity.QBFProtocol.sampleMod.
Points and values are rebuilt modulo p on the variables of xs whenever they are pushed, so that
every step adds at most a polynomial amount of storage
(Cslib.Complexity.QBFProtocol.Machine.length_encVState_le_of_mem_support_step).
Main definitions #
Cslib.Complexity.QBFProtocol.Machine.step,Cslib.Complexity.QBFProtocol.Machine.loop: the stack machine.Cslib.Complexity.QBFProtocol.loopInput: the parameters and tokens computed from a formula.Cslib.Complexity.QBFProtocol.verifier: the verifier.
Main results #
Cslib.Complexity.QBFProtocol.lt_modulus,Cslib.Complexity.QBFProtocol.prime_modulus: the modulus is a prime above the bound.Cslib.Complexity.QBFProtocol.isOraclePPTOn_verifier: the verifier is strict oracle PPT.
References #
States #
Tokens of arithmetic formulas, the kind framed before the variable in binary.
Instances For
The parameters of the machine: the variables xs linearized after every quantifier, the
modulus less one, so that the modulus is positive, and the degree bound D of every round.
Instances For
The input of the loop: the parameters and the tokens of the arithmetic formula.
Instances For
A pending claim: a point and a value.
Instances For
A state of the machine: the remaining tokens, the stack of pending claims, and whether every check so far passed.
Instances For
The data of a step: the input of the loop and the current state.
Instances For
The variables linearized after every quantifier.
Instances For
The modulus, which is positive.
Instances For
The degree bound of every round.
Instances For
The next token.
Instances For
The claim on top of the stack.
Instances For
The claims below the top of the stack.
Instances For
The step #
The message of a step: the remaining tokens and the point of the claim on top of the stack.
Instances For
The state after a failed check: the token and the claim are dropped.
Instances For
The state after the reply word to a binary connective o: the claimed values of the two
arguments are checked against the top claim, then pushed in its place.
Instances For
Whether the reply word to an operator o passes the check against the top claim.
Instances For
The reply to the message of a step, of which D + 1 rows are read.
Instances For
The continuation of a step on an operator after the reply word.
Instances For
A step on a token of kind k.
Instances For
One step of the machine: while every check passed and tokens remain, process the next token; otherwise stay put.
Instances For
The initial state: all the tokens, and the claim that the formula has value 1 at the
origin.
Instances For
The machine runs one step per token.
Instances For
The step in polynomial time #
The storage of the machine #
A bound on the encodings of the claims the machine pushes: points on the variables of xs
with values below the modulus, and a value below the modulus.
Instances For
Every step adds a bounded amount of storage, polynomial in the input of the loop.
The machine in polynomial time #
Parameters of a formula #
The variable components of the tokens of a formula, in prefix order, with multiplicity and with
0 for the tokens without a variable. Every variable of the formula occurs in it.
Instances For
The degree bound of every round: twice the size of the formula.
Instances For
The modulus must exceed 12 * size ^ 2 * (size + 1).
Instances For
The modulus: the greatest prime at most twice the bound.
Instances For
The parameters and tokens of the machine for a formula.
Instances For
The verifier: reject a formula with a free variable, and otherwise run the machine on the arithmetization and accept when every check passed.
Instances For
By Bertrand's postulate, the modulus is a prime above the bound.
The verifier in polynomial time #
The verifier is strict oracle PPT: one fair-coin oracle machine with a polynomial clock realizes it against every stateful prover.