End BOOLEAN_ALGEBRA.
Module Type BA_FACTS.
Include BOOLEAN_ALGEBRA.

(* Specifications: *)
Axiom ord_spec1 : forall x y, x <= y <-> x = glb x y.
Axiom ord_spec2 : forall x y, x <= y <-> lub x y = y.
Axiom lub_idem : forall x, (lub x x) = x.
Axiom lub_commute : forall x y, lub x y = lub y x.
Axiom lub_bot : forall x, lub x bot = x.
Axiom lub_top : forall x, lub x top = top.
Axiom lub_absorb : forall x y, lub x (glb x y) = x.
Axiom lub_assoc : forall x y z, lub (lub x y) z = lub x (lub y z).
Axiom glb_idem : forall x, glb x x = x.
Axiom glb_commute : forall x y, glb x y = glb y x.
Axiom glb_bot : forall x, glb x bot = bot.
Axiom glb_top : forall x, glb x top = x.
Axiom glb_absorb : forall x y, glb x (lub x y) = x.
Axiom glb_assoc : forall x y z, glb (glb x y) z = glb x (glb y z).
Axiom distrib2 : forall x y z, lub x (glb y z) = glb (lub x y) (lub x z).
Axiom distrib_spec : forall x y1 y2,
lub x y1 = lub x y2 ->
glb x y1 = glb x y2 ->
y1 = y2.
Axiom demorgan1 : forall x y, comp (lub x y) = glb (comp x) (comp y).
Axiom demorgan2 : forall x y, comp (glb x y) = lub (comp x) (comp y).
Axiom comp_inv : forall x, comp (comp x) = x.
Instance Join_ba: Join t := fun x y z : t => glb x y = bot /\ lub x y = z.
Axiom pa: Perm_alg t.   Existing Instance pa.
Axiom sa : Sep_alg t.   Existing Instance sa.
Axiom ca : Canc_alg t. Existing Instance ca.
Axiom singa : Sing_alg t.   Existing Instance singa.
Axiom da : Disj_alg t.   Existing Instance da.
End BA_FACTS.