(** * Properties of the need environment *)

(* Specifications: *)
Lemma add_need_all_eagree:
forall e e' r ne,
eagree e e' (add_need_all r ne) -> eagree e e' ne.
Lemma add_need_all_lessdef:
forall e e' r ne,
eagree e e' (add_need_all r ne) -> Val.lessdef e#r e'#r.
Lemma add_need_eagree:
forall e e' r nv ne,
eagree e e' (add_need r nv ne) -> eagree e e' ne.
Lemma add_need_vagree:
forall e e' r nv ne,
eagree e e' (add_need r nv ne) -> vagree e#r e'#r nv.
Lemma add_needs_all_eagree:
forall rl e e' ne,
eagree e e' (add_needs_all rl ne) -> eagree e e' ne.
Lemma add_needs_all_lessdef:
forall rl e e' ne,
eagree e e' (add_needs_all rl ne) -> Val.lessdef_list e##rl e'##rl.
Lemma add_needs_eagree:
forall rl nvl e e' ne,
eagree e e' (add_needs rl nvl ne) -> eagree e e' ne.
Lemma add_needs_vagree:
forall rl nvl e e' ne,
eagree e e' (add_needs rl nvl ne) -> vagree_list e##rl e'##rl nvl.
Lemma add_ros_need_eagree:
forall e e' ros ne, eagree e e' (add_ros_need_all ros ne) -> eagree e e' ne.