Interactive proofs and the class IP #
An interactive proof system for a problem A is an efficient probabilistic verifier exchanging
messages with an all-powerful prover. On members of A some prover convinces the verifier with
high probability (completeness); on non-members no prover does, except with small probability
(soundness) Goldwasser, Micali and Rackoff,
Arora and Barak, Definition 8.6.
A verifier is a program α → WordOracleComp Unit Bool: it draws private fair coins with
ProbOracleComp.sample and sends the prover a word with ProbOracleComp.query ((), message),
receiving the reply word. Every call is one round, and later messages may depend on earlier
replies and coins. Its efficiency is Cslib.Probability.IsOraclePPTOn: one finite fair-coin machine
with one polynomial clock realizes the verifier against every stateful oracle. The clock charges
writing messages and reading reply bits but not the prover's computation, so the verifier exchanges
polynomially many messages of polynomial length (Cslib.Complexity.exists_queryBounds_of_mem_IP)
and reads only a polynomial part of each reply.
A Cslib.Complexity.Prover is any stateful strategy answering messages: a type of private states,
an initial state, and a probabilistic response function, with no efficiency requirement. It sees
the messages but not the verifier's coins, so the proofs are private-coin. As in
[GMR89] provers may be randomized; Arora and Barak use deterministic
provers. The provers built here are deterministic, and soundness holds against the larger class.
IP uses the thresholds 2 / 3 and 1 / 3 of Arora and Barak. NP ⊆ IP with a single message:
the prover sends a certificate and the verifier checks a prefix of the reply of the certificate
length, with completeness 1 and soundness 0. BPP ⊆ IP without messages.
Conversely, IP ⊆ PSPACE (CslibFrontier.Computability.Complexity.Classes.IP.PSPACE).
Main definitions #
Cslib.Complexity.Prover: an unbounded stateful prover, withProver.runthe joint law of a verifier's result and the prover's final state.Cslib.Complexity.acceptProb: the probability that a verifier accepts against a prover.Cslib.Complexity.IsInteractiveProof: completeness and soundness thresholds.Cslib.Complexity.IP.
Main results #
Cslib.Complexity.exists_queryBounds_of_mem_IP: polynomially many rounds of polynomial length.Cslib.Complexity.NP_subset_IP,Cslib.Complexity.BPP_subset_IP.
References #
A prover for interactive proofs: a computationally unbounded strategy answering every message
(op, word) of the verifier with a reply word, possibly at random, updating a private state.
- State : Type
The private states of the prover.
- init : self.State
The state at the start of the interaction.
The reply to one message, which may read and update the state.
Instances For
The joint law of the result of program and of the prover's final state, when program
interacts with P starting from the prover state s. Private coins are fresh fair samples.
Instances For
Prover.run is the run against the prover as a stateful oracle with word queries and
replies.
The probability that verifier accepts when interacting with the prover P.
Instances For
The acceptance probability is that of the verifier against the prover as a stateful oracle, from its initial state.
The acceptance probability sums the masses of the accepting outcomes over final states.
Private coins drawn before any message average the acceptance probabilities of the continuations.
A verifier none of whose possible results accepts has acceptance probability zero.
verifier is an interactive proof for A with completeness completeness and soundness
error soundness: on every member of A some prover is accepted with probability at least
completeness, and on every non-member every prover is accepted with probability at most
soundness.
- complete (a : α) : a ∈ A → ∃ (P : Prover Operation), completeness ≤ acceptProb (verifier a) P
- sound (a : α) : a ∉ A → ∀ (P : Prover Operation), acceptProb (verifier a) P ≤ soundness
Instances For
Weakening the thresholds preserves an interactive proof.
An efficient interactive proof with at least the class thresholds puts a problem in IP.
An IP verifier exchanges polynomially many messages of polynomial length: one polynomial in
the instance length bounds the number of messages and the length of each, against every prover.
The one-message interactive proof of a problem with verifier V and certificate length
p: ask the prover for a certificate, read the first p (enc a).length bits of its reply, and
run V on them when there are that many.
Instances For
Sending a certificate of the right length makes the verifier accept exactly when V accepts
the certificate.