Public-coin interactive oracle reductions #
An interactive reduction from a relation R₁ to a relation R₂ is a public-coin protocol in which
a prover convinces a verifier, who holds a statement of R₁, to output a statement of R₂, and
whose prover outputs a witness for it Ben-Sasson, Chiesa and Spooner.
Interactive proofs and interactive oracle proofs are the reductions to acceptance.
A protocol is described by its rounds (Interactive.Spec, a list of Interactive.Rounds). In a
prover round the prover sends a message, which the verifier only accesses through the message's
Interactive.OracleInterface (reading the whole message is the interface OracleInterface.full);
in a verifier round the verifier sends a public random challenge, drawn from a sampler.
A prover is a strategy tree (Interactive.ProverStrategy) in the monad ProbOracleComp oP; it may
draw private coins and query its oracles oP. A public-coin verifier
(Interactive.Verifier) consists of one challenge sampler per verifier round and a decision: a
program that queries its oracles oV and the prover's messages, given the statement and the
challenges, and returns the output statement, or none to reject. A reduction from a relation
R₁ to a relation R₂ (Interactive.Reduction) pairs an honest prover with a verifier.
Runs live in ProbOracleComp (oP ⊕ₒ oV); a World implements the joint oracles (the plain
model, a random oracle, an ideal functionality) as one stateful handler, and World.eval gives
the output law.
Shapes depend only on parameters fixed before the interaction (the index: field, sizes, circuit), never on the statement or on earlier messages. Everything indexed by a shape is defined by structural recursion on its list of rounds, so concatenated protocols compute without casts.
Main definitions #
Interactive.OracleInterface,Interactive.Round,Interactive.Spec.Interactive.Spec.Transcript,Interactive.Spec.PerChallenge,Interactive.Spec.MsgQuery.Interactive.ProverStrategy,Interactive.Prover,Interactive.Verifier,Interactive.Reduction.Interactive.runStrategy,Interactive.Verifier.execute,Interactive.Reduction.run.Interactive.World,Interactive.World.eval,Interactive.World.plain.
References #
Messages and rounds #
How the verifier accesses a prover message of type M: the queries it may ask and the
responses the message gives.
- Query : Type
The queries the verifier may ask about a message.
The type of the response to each query.
The message's response to each query.
Instances For
Reading the whole message with a single query.
Instances For
Reading single coordinates of a vector message ι → A (as for a codeword or a PCP).
Instances For
A round of a public-coin protocol.
- prover (M : Type) (I : OracleInterface M) : Round
The prover sends a message of type
M, which the verifier accesses throughI. - verifier (C : Type) : Round
The verifier sends a public random challenge of type
C.
Instances For
The type of the message sent in a round.
Instances For
A protocol specification: its rounds, in order.
Instances For
A complete transcript: the message of every round.
Instances For
The verifier's challenges in a run.
Instances For
The challenges of a transcript.
Instances For
The queries the verifier may ask about the prover's messages.
Instances For
The response types of the queries about the prover's messages.
Instances For
The oracle interface of the prover's messages.
Instances For
The prover's messages in a transcript answer the verifier's queries.
Instances For
Provers and verifiers #
A strategy of a party sending the prover's messages in the rounds s, in the monad m, ending
with a result of type α. In a prover round it computes a message and its continuation; in a
verifier round it awaits the challenge.
Instances For
A prover from statements StmtIn with witnesses WitIn to statements StmtOut with witnesses
WitOut, using the oracles oP.
Instances For
A public-coin verifier from statements StmtIn to statements StmtOut, using the oracles
oV. Its challenges are drawn from samplers. Its decision sees the statement and the challenges,
queries the prover's messages and oV, and returns the output statement or rejects (none).
- samplers : Spec.PerChallenge ProbComp s
The distribution of each challenge.
- decide : StmtIn → s.Challenges → OracleComp (oV.sum s.msgSpec) (Option StmtOut)
The decision, with oracle access to the prover's messages.
Instances For
An interactive reduction: an honest prover and a public-coin verifier.
- prover : Prover oP s StmtIn WitIn StmtOut WitOut
The honest prover.
- verifier : Verifier oV s StmtIn StmtOut
The verifier.
Instances For
Execution #
Lift a prover computation into the joint oracles.
Instances For
Run a prover strategy against public challenges drawn from samplers, returning the transcript
and the strategy's result.
Instances For
Run the verifier's decision on a transcript, answering its queries about the prover's messages from the transcript.
Instances For
Run the verifier against any (possibly malicious) prover strategy with result type α: the
transcript, the verifier's output and the prover's result.
Instances For
An honest run of a reduction on x with witness w.
Instances For
The output law of a program in a world.
Instances For
The plain model: no oracles.