Hint Extern 1 (not (@eq ident _ _)) => (let Hx := fresh in intro Hx; inversion Hx) : closed.

(* Specifications: *)
Lemma expr_closed_cast: forall {cs: compspecs} S e t, expr_closed_wrt_vars S e -> expr_closed_wrt_vars S (Ecast e t).
Lemma expr_closedl_cast: forall S e t, expr_closed_wrt_lvars S e -> expr_closed_wrt_lvars S (Ecast e t).
Lemma expr_closed_field: forall {cs: compspecs} S e f t, lvalue_closed_wrt_vars S e -> expr_closed_wrt_vars S (Efield e f t).
Lemma expr_closedl_field: forall S e f t, lvalue_closed_wrt_lvars S e -> expr_closed_wrt_lvars S (Efield e f t).
Lemma expr_closed_binop: forall {cs: compspecs} S op e1 e2 t, expr_closed_wrt_vars S e1 -> expr_closed_wrt_vars S e2 -> expr_closed_wrt_vars S (Ebinop op e1 e2 t).
Lemma expr_closedl_binop: forall S op e1 e2 t, expr_closed_wrt_lvars S e1 -> expr_closed_wrt_lvars S e2 -> expr_closed_wrt_lvars S (Ebinop op e1 e2 t).
Lemma expr_closed_unop: forall {cs: compspecs} S op e t, expr_closed_wrt_vars S e -> expr_closed_wrt_vars S (Eunop op e t).
Lemma expr_closedl_unop: forall S op e t, expr_closed_wrt_lvars S e -> expr_closed_wrt_lvars S (Eunop op e t).
Lemma closed_wrt_stackframe_of: forall {cs: compspecs} S f, closed_wrt_vars S (stackframe_of f).