proposition: Lemma get_set_heap_eq : ∀ h ℓ v, get_heap (set_heap h ℓ v) ℓ = v.
proof: Proof. intros h ℓ v. funelim (get_heap (set_heap h ℓ v) ℓ). 2:{ pose proof e as ep. simpl in ep. rewrite setmE in ep. rewrite eqxx in ep. noconf ep. } rewrite -Heqcall. clear Heqcall. pose proof e as ep. simpl in ep. rewrite setmE in ep. rewrite eqxx in ep. noconf ep. rewrite (cast_pointed_value_K (ℓ0.π1 ; v)). reflexivity. Qed.
imports: Coq(Utf8) Relational(OrderEnrichedCategory OrderEnrichedRelativeMonadExamples) mathcomp(ssrnat ssreflect ssrfun ssrbool ssrnum eqtype choice reals distr seq all_algebra fintype realsum) extructures(ord fset fmap) Mon(SPropBase) Crypt(Prelude Axioms ChoiceAsOrd SubDistr Couplings RulesStateProb UniformStateProb UniformDistrLemmas StateTransfThetaDens StateTransformingLaxMorph choice_type pkg_core_definition pkg_notation pkg_tactics pkg_composition) Equations.Prop.DepElim Equations(Equations) Crypt(FreeProbProg)