Module CSHL_Defs := DerivedDefs(CSHL_Def).
(***************** SEMAX_LEMMAS ****************)
(* THIS RULE FROM semax_switch *)
(* THESE RULES FROM semax_straight *)

Axiom semax_load :
forall {CS: compspecs} {Espec: OracleKind},
forall (Delta: tycontext) sh id P e1 t2 (v2: val),
typeof_temp Delta id = Some t2 ->
is_neutral_cast (typeof e1) t2 = true ->
readable_share sh ->
local (tc_environ Delta) && P |-- `(mapsto sh (typeof e1)) (eval_lvalue e1) (`v2) * TT ->
@semax CS Espec Delta
(|> ( (tc_lvalue Delta e1) &&
local (`(tc_val (typeof e1) v2)) &&
P))
(Sset id e1)
(normal_ret_assert (EX old:val, local (`eq (eval_id id) (`v2)) &&
(subst id (`old) P))).