proposition: Lemma Some_cputput (T : ml_type) (r : loc T) (s s' : coq_type T) (e : Env) (s'' : coq_type T) : nth_error e (loc_id r) = Some (mkbind s'') -> (cput r s >> cput r s') e = cput r s' e.
proof: Proof. move=> H. rewrite MS_bindE/=. rewrite [in LHS](Some_cputE _ H)//. rewrite [in RHS](Some_cputE _ H)//. rewrite bindE/= /cput. rewrite nth_error_set_nth coerce_Some/=. by rewrite set_set_nth eqxx. Qed.
imports: JMeq mathcomp(all_ssreflect) mathcomp(finmap) mathcomp(classical_sets) monae_lib HB(structures) hierarchy monad_lib fail_lib state_lib trace_lib monad_transformer