Random-Oracle Simulation Helpers #
Generic lemmas for simulating OracleComp (unifSpec + hashSpec) computations via
unifFwdImpl + ro in StateT hashSpec.QueryCache ProbComp, where unifFwdImpl forwards
uniform-randomness queries and ro handles the hash oracle (typically randomOracle).
These lemmas factor out boilerplate shared by FiatShamir.perfectlyCorrect,
FiatShamirWithAbort.correct, and other random-oracle-model proofs.
The typical usage pattern is:
let ro : QueryImpl hashSpec (StateT hashSpec.QueryCache ProbComp) := randomOracle
let impl := unifFwdImpl hashSpec + ro
Then the roSim namespace lemmas apply to simulateQ impl.
Main definitions #
unifFwdImpl: the identity forwarding implementation forunifSpec, lifted toStateT
The identity forwarding implementation for unifSpec queries, lifted to
StateT hashSpec.QueryCache ProbComp. Each uniform query passes through to the underlying
ProbComp without touching the cache state.
Instances For
The random-oracle simulation of a plain OracleComp never fails on any starting cache.
Support characterization for lazy random-oracle simulation.
A value a can appear as the output of the random-oracle simulation from cache iff some total
answer function agreeing with cache evaluates the computation to a. The final cache produced
by the simulation is existentially quantified away.
Probability-one form of the random-oracle support characterization.
A predicate on the result value holds with probability one under lazy random-oracle simulation
from preexisting_cache iff it holds for every total answer function agreeing with that cache.