Execution Semantics of Interactive Oracle Reductions #
We define what it means to execute an interactive oracle reduction, and prove some basic properties.
We often have to specify oa
and f
for this to be applied
Ideally, this theorem can also compare the logs of the two oracle computations.
For this to work, we need an extra function mapping superSpec.QueryLog
to spec.QueryLog
.
This function always exists if superSpec
is spec ++ₒ something
, and extensions thereof, but may
not be guaranteed to exist in general, if we just have the current fields in the type class.
Prover's function for processing the next round, given the current result of the previous round, and a function for getting the challenge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run the prover in an interactive reduction up to round index i
, via first inputting the
statement and witness, and then processing each round up to round i
. Returns the transcript up
to round i
, and the prover's state after round i
.
Equations
- Prover.runToRound i stmt wit prover = Fin.induction (pure (default, prover.input (stmt, wit))) (fun (j : Fin n) => Prover.processRound j prover) i
Instances For
Run the prover in an interactive reduction up to round i
, logging all the queries made by the
prover. Returns the transcript up to that round, the prover's state after that round, and the
log of the prover's oracle queries. This basically just wraps runToRound
with a logging
oracle.
Equations
- Prover.runWithLogToRound i stmt wit prover = (OracleComp.simulateQ loggingOracle (Prover.runToRound i stmt wit prover)).run
Instances For
Run the prover in an interactive reduction. Returns the output statement and witness, and the
transcript. See runWithLog
for a version that additionally returns the log of the
prover's oracle queries.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run the prover in an interactive reduction, logging all the queries made by the prover. Returns the transcript, the output statement and witness, and the log of the prover's oracle queries.
Note: this is just a wrapper around run
that logs the queries made by the prover.
Equations
- Prover.runWithLog stmt wit prover = (OracleComp.simulateQ loggingOracle (Prover.run stmt wit prover)).run
Instances For
Run the (non-oracle) verifier in an interactive reduction. It takes in the input statement and the transcript, and return the output statement.
Equations
- Verifier.run stmt transcript verifier = verifier.verify stmt transcript
Instances For
Run the oracle verifier in the interactive protocol. Returns the verifier's output, including both the output statement and oracle statements, and the log of queries made by the verifier.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Running an oracle verifier then is equal to running its non-oracle counterpart
An execution of an interactive reduction on a given initial statement and witness. Consists of first running the prover, and then the verifier. Returns the full transcript, the output statement and witness from the prover, and the output statement from the verifier.
See Reduction.runWithLog
for a version that additionally returns the logs of the prover's and
the verifier's oracle queries.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An execution of an interactive reduction on a given initial statement and witness. Consists of first running the prover, and then the verifier. Returns the full transcript, the output statement and witness from the prover, and the output statement from the verifier, along with the logs of the prover's and the verifier's oracle queries.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Logging the queries made by both parties do not change the output of the reduction
Run an interactive oracle reduction. Returns the full transcript, the output statement and witness, the log of all prover's oracle queries, and the log of all verifier's oracle queries to the prover's messages and to the shared oracle.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run an interactive oracle reduction. Returns the full transcript, the output statement and witness, the log of all prover's oracle queries, and the log of all verifier's oracle queries to the prover's messages and to the shared oracle.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Running an oracle reduction is equal to running its non-oracle counterpart
Running an oracle reduction with logging of queries to the shared oracle is equal to running its non-oracle counterpart with logging of queries to the shared oracle
Running the identity or trivial reduction, with logging of queries to the shared oracle, results in the same input statement and witness, empty transcript, and empty query logs.
Running the identity or trivial oracle reduction results in the same input statement, oracle statement, and witness.
Running the identity or trivial oracle reduction results in the same input statement, oracle statement, and witness.
Simplification lemmas for protocols with a single message