Random oracle primitives #
The basic actors of the random oracle framework: the RO state lens, the
two query primitives (lazy_query and random_oracle_query), and their
respective initialisation routines (lazy_init and random_oracle_init).
convert and everything related to converting one to the other lives in
PlonkLean.RO.Transfer. The scratch state variables used by the
adversary-driven oracle loops live in PlonkLean.RO.OracleLoop.
Equations
- instInhabitedInput = sorry
Equations
- instFintypeInput = sorry
Equations
- instInhabitedOutput = sorry
Equations
- instFintypeOutput = sorry
Equations
Equations
- instDecidableEqInput = sorry
Sample the entire input → output function space uniformly and store it
in the random oracle (as the eager initialisation).
Equations
- random_oracle_init = do let __discr ← GaudisCrypt.ProgramDenotation.uniform match __discr with | h => GaudisCrypt.ProgramDenotation.set random_oracle_state fun (x : input) => some (h x)
Instances For
Initialise the random oracle with no cached entries (lazy initialisation).
Equations
- lazy_init = GaudisCrypt.ProgramDenotation.set random_oracle_state fun (x : input) => none
Instances For
Lazy random-oracle query: return the cached output if present, otherwise sample uniformly and cache.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Eager random-oracle query: read the (pre-sampled) value at inp.
Equations
- random_oracle_query inp = do let h ← GaudisCrypt.ProgramDenotation.get random_oracle_state pure ((h inp).getD default)
Instances For
lazy_query only reads and writes random_oracle_state (probabilistic footprint form,
countability-free).