fact: Definition KEY: package KEY_locs [interface] [interface #val #[ INIT ] : 'unit → 'unit ; #val #[ GET ] : 'unit → chStatement ] := [package #def #[ INIT ] (_ : 'unit) : 'unit { b ← get setup_loc ;; #assert (negb b) ;; w ← sample uniform i_witness ;; let h := KeyGen w in #assert (R (otf h) (otf w)) ;; #put setup_loc := true ;; #put statement_loc := h ;; #put witness_loc := w ;; @ret 'unit Datatypes.tt } ; #def #[ GET ] (_ : 'unit) : chStatement { b ← get setup_loc ;; if b then h ← get statement_loc ;; w ← get witness_loc ;; ret h else fail } ].
imports: Relational(OrderEnrichedCategory GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum fingroup.fingroup solvable.cyclic prime ssrnat ssreflect ssrfun ssrbool ssrnum eqtype choice seq) Crypt(Axioms ChoiceAsOrd SubDistr Couplings UniformDistrLemmas FreeProbProg Theta_dens RulesStateProb UniformStateProb pkg_core_definition choice_type pkg_composition pkg_rhl Package Prelude RandomOracle) Coq(Utf8) extructures(ord fset fmap) Equations(Equations)