(* Then, it is extended pointwise to environments. *)
Definition subsume (e1 e2 : env A) :=
forall x,
osub (lookup x e1) (lookup x e2).
(* Subsumption of environments is reflexive and transitive. *)

(* Specifications: *)
Lemma osub_reflexive:
forall o,
osub o o.
Lemma subsume_reflexive:
forall e,
subsume e e.
Lemma osub_transitive:
forall o1 o2 o3,
osub o1 o2 ->
osub o2 o3 ->
osub o1 o3.
Lemma subsume_transitive:
forall e1 e2 e3,
subsume e1 e2 ->
subsume e2 e3 ->
subsume e1 e3.