Hint Rewrite subst_temp_special using safe_auto_with_closed: subst.
Ltac ensure_normal_ret_assert :=
match goal with
| |- semax _ _ _ (normal_ret_assert _) => idtac
| |- semax _ _ _ _ => apply sequential
end.
Ltac ensure_open_normal_ret_assert :=
try simple apply sequential';
match goal with
| |- semax _ _ _ (normal_ret_assert ?X) => is_evar X
end.
Definition This_is_a_warning := tt.
Inductive Warning: unit -> unit -> Prop :=
ack : forall s s', Warning s s'.
Definition IGNORE_THIS_WARNING_USING_THE_ack_TACTIC_IF_YOU_WISH := tt.
Ltac ack := apply ack.
Ltac assert_ P :=
let H := fresh in assert (H: P); [ | clear H].
Ltac warn s :=
assert_ (Warning s
IGNORE_THIS_WARNING_USING_THE_ack_TACTIC_IF_YOU_WISH).

(* Specifications: *)
Lemma semax_post3:
forall R' Espec {cs: compspecs} Delta P c R,
local (tc_environ Delta) && R' |-- R ->
@semax cs Espec Delta P c (normal_ret_assert R') ->
@semax cs Espec Delta P c (normal_ret_assert R) .
Lemma semax_post_flipped3:
forall R' Espec {cs: compspecs} Delta P c R,
@semax cs Espec Delta P c (normal_ret_assert R') ->
local (tc_environ Delta) && R' |-- R ->
@semax cs Espec Delta P c (normal_ret_assert R) .
Lemma focus_make_args:
forall A Q R R' Frame,
R = R' ->
A |-- PROPx nil (LOCALx Q (SEPx (R' :: Frame)))  ->
A |-- PROPx nil (LOCALx Q (SEPx (R :: Frame))) .
Lemma subst_make_args1:
forall i e j v,
subst i e (make_args (j::nil) (v::nil)) = make_args (j::nil) (v::nil).
Lemma efield_denote_cons_struct: forall {cs: compspecs} P efs gfs i,
P |-- local (efield_denote efs gfs) ->
P |-- local (efield_denote (eStructField i :: efs) (StructField i :: gfs)).
Lemma efield_denote_cons_union: forall {cs: compspecs} P efs gfs i,
P |-- local (efield_denote efs gfs) ->
P |-- local (efield_denote (eUnionField i :: efs) (UnionField i :: gfs)).