Semantics of Virtual (Oracle) Reductions #
Sequential composition is usually not enough to represent oracle reductions in a modular way. We also need to formalize virtual oracle reductions, which lift reductions from one (virtual) context into the another (real) context.
This is what is meant when we informally say "apply so-and-so protocol to this quantity (derived from the input statement & witness)".
- fStmtIn : StmtIn → StmtIn'
- fStmtOut : StmtIn × StmtOut' → StmtOut
Instances For
- fWitIn : WitIn → WitIn'
- fWitOut : WitIn × WitOut' → WitOut
Instances For
Instances For
- fStmtInInv : StmtOut × StmtIn' → StmtIn
- fStmtOutInv : StmtOut → StmtOut'
Instances For
- fWitInInv : WitOut × WitIn' → WitIn
- fWitOutInv : WitOut → WitOut'
Instances For
- fStmtInInv : StmtOut × StmtIn' → StmtIn
- fStmtOutInv : StmtOut → StmtOut'
- fWitOutInv : WitOut → WitOut'
Instances For
Conditions for the transformation to preserve completeness
NOTE: this is not the correct condition for now (see example)
Instances For
- fStmtIn : StmtIn → StmtIn'
- fStmtInInv : StmtOut × StmtIn' → StmtIn
- fStmtOutInv : StmtOut → StmtOut'
Instances For
- fStmtIn : StmtIn → StmtIn'
- fWitIn : WitIn → WitIn'
- fStmtInInv : StmtOut × StmtIn' → StmtIn
- fStmtOutInv : StmtOut → StmtOut'
- fWitOutInv : WitOut → WitOut'
Instances For
How does the prover change? Only in input & output, and keep around the input statement & witness
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Reduction.transport data R = { prover := Prover.transport data R.prover, verifier := Verifier.transport data.toTransportStatement R.verifier }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Informally, if (stmtIn, witIn) ∈ relIn
, we want (stmtIn', witIn') ∈ relIn'
.
Using the completeness guarantee, we get that (stmtOut', witOut') ∈ relOut'
.
From these, we need to deduce that (stmtOut, witOut) ∈ relOut
.
Equations
- dataComplete = { toTransportData := data, relIn_implies := dataComplete.proof_1, relOut_implied_by := dataComplete.proof_2 }