fact: Definition Aux : package (fset [:: counter_loc ; pk_loc ]) [interface #val #[query_id] : 'unit → 'pubkey × 'cipher] [interface #val #[getpk_id] : 'unit → 'pubkey ; #val #[challenge_id'] : 'plain → 'cipher ] := [package #def #[getpk_id] (_ : 'unit) : 'pubkey { pk ← get pk_loc ;; ret pk } ; #def #[challenge_id'] (m : 'plain) : 'cipher { #import {sig #[query_id] : 'unit → 'pubkey × 'cipher } as query ;; count ← get counter_loc ;; #put counter_loc := (count + 1)%N ;; #assert (count == 0)%N ;; '(pk, c) ← query Datatypes.tt ;; @ret chCipher (fto ((otf c).1 , (otf m) * ((otf c).2))) } ].
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) Mon(SPropBase) Crypt(Axioms ChoiceAsOrd SubDistr Couplings UniformDistrLemmas FreeProbProg Theta_dens RulesStateProb UniformStateProb pkg_core_definition choice_type pkg_composition pkg_rhl Package Prelude AsymScheme) Coq(Utf8) extructures(ord fset fmap) Equations(Equations)