(* END NEW MATERIAL *)
End SHARE_MODEL.
Module BA_Facts (BA:BOOLEAN_ALGEBRA) <: BA_FACTS.
Include BA.

(* Specifications: *)
Lemma ord_spec1 : forall x y, x <= y <-> x = glb x y.
Lemma ord_spec2 : forall x y, x <= y <-> lub x y = y.
Lemma lub_idem : forall x, lub x x = x.
Lemma glb_assoc : forall x y z, glb (glb x y) z = glb x  (glb y z).
Lemma glb_bot : forall x, glb x bot = bot.
Lemma distrib_spec : forall x y1 y2,
lub x y1 = lub x y2 ->
glb x y1 = glb x y2 ->
y1 = y2.
Lemma comp_inv : forall x, comp (comp x) = x.
Lemma demorgan1 : forall x y, comp (lub x y) = glb (comp x) (comp y).
Lemma demorgan2 : forall x y, comp (glb x y) = lub (comp x) (comp y).
Instance Join_ba: Join t := fun x y z : t => glb x y = bot /\ lub x y = z.