Definition included {U} (S S': U -> Prop) := forall x, S x -> S' x.

(* Specifications: *)
Lemma closed_wrt_TT: forall (S: ident -> Prop), closed_wrt_vars S (@TT (environ -> mpred) _).
Lemma closed_wrtl_TT: forall (S: ident -> Prop), closed_wrt_lvars S (@TT (environ -> mpred) _).
Lemma closed_wrt_subset: forall (S S': ident -> Prop) (H: included S' S) B (f: environ -> B), closed_wrt_vars S f -> closed_wrt_vars S' f.
Lemma closed_wrtl_subset: forall (S S': ident -> Prop) (H: included S' S) B (f: environ -> B), closed_wrt_lvars S f -> closed_wrt_lvars S' f.
Lemma closed_wrt_Forall_subset: forall S S' (H: included S' S) B (f: list (environ -> B)), Forall (closed_wrt_vars S) f -> Forall (closed_wrt_vars S') f.
Lemma closed_wrtl_Forall_subset: forall S S' (H: included S' S) B (f: list (environ -> B)), Forall (closed_wrt_lvars S) f -> Forall (closed_wrt_lvars S') f.
Lemma lvalue_closed_tempvar: forall {cs: compspecs} S i t, ~ S i -> lvalue_closed_wrt_vars S (Etempvar i t).
Lemma lvalue_closedl_tempvar: forall S i t, lvalue_closed_wrt_lvars S (Etempvar i t).
Lemma expr_closed_addrof: forall {cs: compspecs} S e t, lvalue_closed_wrt_vars S e -> expr_closed_wrt_vars S (Eaddrof e t).
Lemma expr_closedl_addrof: forall S e t, lvalue_closed_wrt_lvars S e -> expr_closed_wrt_lvars S (Eaddrof e t).
Lemma lvalue_closed_field: forall {cs: compspecs} S e f t, lvalue_closed_wrt_vars S e -> lvalue_closed_wrt_vars S (Efield e f t).
Lemma lvalue_closedl_field: forall S e f t, lvalue_closed_wrt_lvars S e -> lvalue_closed_wrt_lvars S (Efield e f t).
Lemma lvalue_closed_deref: forall {cs: compspecs} S e t, expr_closed_wrt_vars S e -> lvalue_closed_wrt_vars S (Ederef e t).
Lemma lvalue_closedl_deref: forall S e t, expr_closed_wrt_lvars S e -> lvalue_closed_wrt_lvars S (Ederef e t).