The optimal prover against private coins #
Fixing the private coins of a verifier leaves a deterministic program making word requests
(Cslib.Complexity.WordQueryComp). A verifier whose coins range over a finite set R is thus a
family F : R → WordQueryComp Unit Bool of such programs, one for every value of the coins, and a
prover interacting with the verifier interacts with F r for a uniformly random r that it does
not see. It sees only the messages, so after a history of messages and replies
(Cslib.Complexity.Interaction.History) the coin values still in play are those of the programs
that sent exactly the messages of the history; what remains of each of them is
Cslib.Complexity.Interaction.after.
The value of a history (Cslib.Complexity.Interaction.value) counts the programs that accept on
it, plus, for every next message, the best value over the replies. The best reply cannot depend
on the coins: it is chosen once for all the programs sending that message. Sums and maxima range
over the words of length at most L (Cslib.BitString.shortWords), which suffices for
a bounded family (Cslib.Complexity.Interaction.IsBounded): every program makes at most D
requests, every message has length at most L, and only the first L bits of a reply matter.
For a bounded family, the value of the empty history is the largest number of accepting programs
in expectation over the provers: every prover, randomized and stateful, is accepted on average
over r with probability at most the value divided by the number of coin values
(Cslib.Complexity.Interaction.sum_acceptFrom_le_value), and the deterministic prover that answers
every history with a best reply (Cslib.Complexity.Interaction.optimalProver) attains it
(Cslib.Complexity.Interaction.sum_acceptFrom_optimalProver). This is the optimal prover of the
proof of IP ⊆ PSPACE Arora and Barak, Chapter 8
Sipser, Section 10.4.
The outcome of a program on a history (Cslib.Complexity.Interaction.outcome) is also its run
against the history as a replay (Cslib.Complexity.Interaction.outcome_eq_replay), which is how a
deterministic machine evaluates it.
Main definitions #
Cslib.Complexity.Interaction.History,Cslib.Complexity.Interaction.after,Cslib.Complexity.Interaction.outcome: histories and what remains of a program after them.Cslib.Complexity.Interaction.acceptFrom: the probability that a prover accepts from a state.Cslib.Complexity.Interaction.value: the value of a history.Cslib.Complexity.Interaction.IsBounded: bounds on rounds, messages and the replies read.Cslib.Complexity.Interaction.optimalProver: the prover answering with best replies.Cslib.Complexity.Interaction.replay: a run against a history.
Main results #
Cslib.Complexity.Interaction.sum_acceptFrom_le_value: no prover beats the value.Cslib.Complexity.Interaction.sum_acceptFrom_optimalProver: the optimal prover attains it.Cslib.Complexity.Interaction.value_le_card: the value is at most the number of coin values.Cslib.Complexity.Interaction.outcome_eq_replay: outcomes are replays.
References #
Histories #
A history of an interaction: the messages of the verifier, each with the reply of the prover, in order.
Instances For
What remains of the program p after the history h, if p sends exactly the messages of
h when it receives its replies.
Instances For
What remains after a concatenation is what remains of what remains.
The outcome of a program after a history: it has finished with a result, it sends a message, or it does not send the messages of the history.
- done (result : Bool) : Outcome
The program has finished with this result.
- ask (message : List Bool) : Outcome
The program sends this message.
- invalid : Outcome
The program does not send the messages of the history.
Instances For
Instances For
The outcome of p after the history h.
Instances For
Acceptance against a prover #
The probability that the prover P, from its state s, makes what remains of a program
accept; 0 when nothing remains.
Instances For
The value of a history #
The number of coin values whose programs accept after the history h.
Instances For
The value of the history h with n rounds to go: the accepting programs, plus, for every
next message of length at most L, the best value over the replies of length at most L.
Instances For
A family of programs makes at most D requests, sends messages of length at most L, and
reads only the first L bits of each reply.
Every program has finished after
Dmessages.Every message has length at most
L.- reply (r : R) (h : List (List Bool × List Bool)) (m y : List Bool) (e : List (List Bool × List Bool)) : outcome (F r) (h ++ (m, y) :: e) = outcome (F r) (h ++ (m, List.take L y) :: e)
Only the first
Lbits of a reply matter.
Instances For
No prover beats the value #
No prover beats the value: for a bounded family, every prover makes the programs accept with probabilities summing to at most the value of the empty history.
The optimal prover #
The optimal prover: its state is the history so far, and it answers every message with a best
reply for the rounds left of D.
Instances For
The optimal prover attains the value: for a bounded family, it makes the programs accept with probabilities summing to the value of the empty history.
Replays #
The replay monad: a history to answer from, and failure with the message sent when the
history is exhausted, or with none when a message does not match the history.
Instances For
Run a program against a history.
Instances For
Outcomes are replays.