Opaque Int.repr.

(* Specifications: *)
Lemma semax_load:
forall (Delta: tycontext) sh id P e1 t2 v2,
typeof_temp Delta id = Some t2 ->
is_neutral_cast (typeof e1) t2 = true ->
readable_share sh ->
(forall rho, !! typecheck_environ Delta rho && P rho |-- mapsto sh (typeof e1) (eval_lvalue e1 rho) v2 * TT) ->
semax Espec Delta
(fun rho => |>
(tc_lvalue Delta e1 rho
&& (!! tc_val (typeof e1) v2) && P rho))
(Sset id e1)
(normal_ret_assert (fun rho =>
EX old:val, (!!(eval_id id rho = v2) &&
(subst id old P rho)))).
Lemma semax_cast_load:
forall (Delta: tycontext) sh id P e1 t1 v2,
typeof_temp Delta id = Some t1 ->
cast_pointer_to_bool (typeof e1) t1 = false ->
readable_share sh ->
(forall rho, !! typecheck_environ Delta rho && P rho |-- mapsto sh (typeof e1) (eval_lvalue e1 rho) v2 * TT) ->
semax Espec Delta
(fun rho => |>
(tc_lvalue Delta e1 rho
&& (!! tc_val t1 (`(eval_cast (typeof e1) t1 v2) rho))
&&  P rho))
(Sset id (Ecast e1 t1))
(normal_ret_assert (fun rho =>
EX old:val, (!!(eval_id id rho = (`(eval_cast (typeof e1) t1 v2)) rho) &&
(subst id old P rho)))).