(** g <= h if S(g) is included in S(h) *)
Definition le_h (g h : hedge) := inclusion (synthesis g) (synthesis h).(** g ~ h if g <= h and h <= g *)
Definition equiv_h (g h : hedge) := le_h g h /\ le_h h g.

(* Specifications: *)
Lemma le_h_refl : forall h : hedge, le_h h h.
Lemma le_h_trans : forall f g h : hedge, le_h f g -> le_h g h -> le_h f h.
Lemma le_h_antisym : forall g h : hedge, le_h g h -> le_h h g -> equiv_h g h.
Lemma equiv_refl : forall h : hedge, equiv_h h h.
Lemma equiv_h_trans : forall f g h : hedge, equiv_h f g -> equiv_h g h -> equiv_h f h.
Lemma equiv_h_sym : forall g h : hedge, equiv_h g h -> equiv_h h g.
Lemma le_h_impl_incl_syn : forall g h : hedge, le_h g h -> inclusion g (synthesis h).
Lemma incl_syn_impl_le_h : forall g h : hedge, inclusion g (synthesis h) -> le_h g h.
Theorem le_h_iff_incl_syn : forall g h : hedge, le_h g h <-> inclusion g (synthesis h).
Theorem inclusion_impl_le_h : forall g h : hedge, inclusion g h -> le_h g h.
Lemma equal_impl_equiv_h : forall g h : hedge, equal g h -> equiv_h g h.
Theorem le_h_le_h_impl_union_le_h : forall f g h : hedge, le_h f h -> le_h g h -> le_h (union f g) h.
Theorem le_h_le_h_impl_le_h_union : forall g1 g2 h1 h2 : hedge, le_h g1 h1 -> le_h g2 h2 -> le_h (union g1 g2) (union h1 h2).