(** union and intersection of hedges *)
Definition union (g h : hedge) (M N : Msg) := g M N \/ h M N.Definition inter (g h : hedge) (M N : Msg) := g M N /\ h M N.

(* Specifications: *)
Lemma union_sym : forall g h : hedge, equal (union g h) (union h g).
Lemma inter_sym : forall g h : hedge, equal (inter g h) (inter h g).
Lemma hedge_left_union : forall g h : hedge, inclusion g (union g h).
Lemma hedge_right_union : forall g h : hedge, inclusion h (union g h).
Lemma inter_hedge_left : forall g h : hedge, inclusion (inter g h) g.
Lemma inter_hedge_right : forall g h : hedge, inclusion (inter g h) h.
Lemma union_intro : forall f g h : hedge, inclusion f h -> inclusion g h -> inclusion (union f g) h.
Lemma inter_inclusion_union : forall g h : hedge, inclusion (inter g h) (union g h).