Lifting Reductions to Larger Contexts #
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 / inner) context into the another (real / outer) context.
This is what is meant when we informally say "apply so-and-so protocol to this quantity (derived from the input statement & witness)".
Put in other words, we define a mapping between the input-output interfaces of two (oracle) reductions, without changing anything about the underlying reductions.
Recall that the input-output interface of an oracle reduction consists of:
- Input:
OuterStmtIn : Type
,OuterOStmtIn : ιₛᵢ → Type
, andOuterWitIn : Type
- Output:
OuterStmtOut : Type
,OuterOStmtOut : ιₛₒ → Type
, andOuterWitOut : Type
The liftContext is defined as the following mappings of projections / lifts:
projStmt : OuterStmtIn → InnerStmtIn
projOStmt : (simulation involving OuterOStmtIn to produce InnerOStmtIn)
projWit : OuterWitIn → InnerWitIn
liftStmt : OuterStmtIn × InnerStmtOut → OuterStmtOut
liftOStmt : (simulation involving InnerOStmtOut to produce OuterOStmtOut)
liftWit : OuterWitIn × InnerWitOut → OuterWitOut
Note that since completeness & soundness for oracle reductions are defined in terms of the same properties after converting to (non-oracle) reductions, we only need to focus our efforts on the non-oracle case.
Note that this exactly corresponds to lenses in programming languages / category theory. Namely,
liftContext on the inputs correspond to a view
/get
operation (our "proj"), while liftContext
on the output corresponds to a modify
/set
operation (our "lift").
More precisely, the proj/lift
operations correspond to a Lens between two monomial polyonmial
functors: OuterCtxIn y^ OuterCtxOut ⇆ InnerCtxIn y^ InnerCtxOut
.
All the lens definitions are in Lens.lean
. This file deals with the lens applied to reductions.
See OracleReduction.lean
for the application to oracle reduction.
The outer prover after lifting invokes the inner prover on the projected input, and lifts the output
Equations
- One or more equations did not get rendered due to their size.
Instances For
The outer verifier after lifting invokes the inner verifier on the projected input, and lifts the output
Equations
- One or more equations did not get rendered due to their size.
Instances For
The outer reduction after lifting is the combination of the lifting of the prover and verifier
Equations
- R.liftContext = { prover := R.prover.liftContext, verifier := R.verifier.liftContext }
Instances For
The outer extractor after lifting invokes the inner extractor on the projected input, and lifts the output
Equations
- One or more equations did not get rendered due to their size.
Instances For
The outer round-by-round extractor after lifting invokes the inner extractor on the projected input, and lifts the output
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compatibility relation between the outer input statement and the inner output statement, relative to a verifier.
We require that the inner output statement is a possible output of the verifier on the outer input statement, for any given transcript. Note that we have to existentially quantify over transcripts since we only reference the verifier, and there's no way to get the transcript without a prover.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compatibility relation between the outer input context and the inner output context, relative to a reduction.
We require that the inner output context (statement + witness) is a possible output of the reduction on the outer input context (statement + witness).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compatibility relation between the outer input witness and the inner output witness, relative to a straightline extractor.
We require that the inner output witness is a possible output of the straightline extractor on the outer input witness, for a given input statement, transcript, and prover and verifier's query logs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The outer state function after lifting invokes the inner state function on the projected input, and lifts the output
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lifting the prover intertwines with the process round function
Running the lifted outer prover is equivalent to running the inner prover on the projected input, and then integrating the output
Lifting the reduction preserves completeness, assuming the lens satisfies its completeness conditions
Lifting the reduction preserves soundness, assuming the lens satisfies its soundness conditions
Equations
Instances For
Instances For
Equations
- innerRelIn_Test (f, t) x✝ = (∑ x ∈ {0, 1}, Polynomial.eval x f = t)
Instances For
Equations
- OuterStmtOut_Test = (Polynomial ℤ × Polynomial ℤ × ℤ × ℤ)
Instances For
Equations
- outerRelOut_Test (p, q, t, r) x✝ = (Polynomial.eval r (p * q) = t)
Instances For
Equations
- innerRelOut_Test (f, t, r) x✝ = (Polynomial.eval r f = t)