Module CSHL_Defs := DerivedDefs (VericDef).
Definition semax_extract_exists := @extract_exists_pre.
Definition semax_body := @semax_body.
Definition semax_prog := @semax_prog.
Definition semax_func_nil := @semax_func_nil.
Definition semax_func_cons := @semax_func_cons.
(* Definition semax_func_skip := @semax_func_skip. *)
Definition make_ext_rval := veric.semax.make_ext_rval.
Definition tc_option_val := veric.semax.tc_option_val.
Definition semax_func_cons_ext := @semax_func_cons_ext.
Definition semax_Delta_subsumption := @semax_lemmas.semax_Delta_subsumption.

Lemma semax_store:forall (CS : compspecs) (Espec : OracleKind)
(Delta : tycontext) (e1 e2 : expr) (sh : share)
(P : environ -> pred rmap),
writable_share sh ->
semax Espec Delta
(fun rho : environ =>
(|> (extend_tc.tc_lvalue Delta e1 rho &&
extend_tc.tc_expr Delta (Ecast e2 (typeof e1)) rho &&
(mapsto_memory_block.mapsto_ sh
(typeof e1) (eval_lvalue e1 rho) *
P rho)))%pred) (Sassign e1 e2)
(Clight_seplog.normal_ret_assert
(fun rho : environ =>
(mapsto_memory_block.mapsto sh (typeof e1)
(eval_lvalue e1 rho)
(force_val
(sem_cast (typeof e2) (typeof e1) (eval_expr e2 rho))) *
P rho)%pred)).