proposition: Lemma CTXT_HYB_equiv_6: CTXT_HYB_pkg_5 ≈₀ CTXT_EVAL_pkg_ff ∘ EVAL_SAMP_pkg ∘ SAMP Ciph_N true.
proof: Proof. apply eq_rel_perf_ind_ignore with (fset [:: Tinv'_loc]). 1: by rewrite -fset1E /CTXT_HYB_locs_2 /EVAL_locs_ff fsub1set !fset_cons !in_fsetU !in_fset1 !eq_refl !Bool.orb_true_r /=. simplify_eq_rel m. all: ssprove_code_simpl. all: ssprove_code_simpl. all: ssprove_code_simpl_more. - apply: r_dead_sample_L. apply: (@r_reflexivity_alt _ (fset1 S_loc)) => [loc H|loc v H]. all: ssprove_invariant. rewrite in_fset1 in H. move /eqP in H. rewrite H -fset1E in_fset1. by apply /eqP. - ssprove_sync=> S. ssprove_sync=> H1. ssprove_sync=> Tinv. apply: r_get_remember_lhs => Tinv'. case: (Tinv m) => [c|] /=. 1: { ssprove_forget_all. by apply: r_ret. } ssprove_sync=> c. ssprove_sync=> T. do 2 ssprove_sync. apply: r_put_lhs. ssprove_restore_mem; last by apply: r_ret. by ssprove_invariant. Qed.
imports: Relational(OrderEnrichedCategory GenericRulesSimple) mathcomp(all_ssreflect all_algebra reals distr realsum ssrnat ssreflect ssrfun ssrbool ssrnum eqtype choice seq) Mon(SPropBase) Crypt(Axioms ChoiceAsOrd SubDistr Couplings UniformDistrLemmas FreeProbProg Theta_dens RulesStateProb pkg_core_definition choice_type pkg_composition pkg_rhl Package Prelude) extructures(ord fset fmap) Equations(Equations)