Example of a Lattice: <CR, CRle, CRmin, CRmax>


Definition CRLattice : Lattice :=
makeLattice CRPartialOrder (ucFun2 CRmin) (ucFun2 CRmax)
 CRmin_lb_l CRmin_lb_r CRmin_glb CRmax_ub_l CRmax_ub_r CRmax_lub.

Section CRLattice.

Let CRlat := CRLattice.


Definition CRmin_comm : forall x y : CR, CRmin x y == CRmin y x := @meet_comm CRlat.
Definition CRmin_assoc : forall x y z : CR, CRmin x (CRmin y z) == CRmin (CRmin x y) z:=
 @meet_assoc CRlat.
Definition CRmin_idem : forall x : CR, CRmin x x == x := @meet_idem CRlat.
Definition CRle_min_l : forall x y : CR, x <= y <-> CRmin x y == x := @le_meet_l CRlat.
Definition CRle_min_r : forall x y : CR, y <= x <-> CRmin x y == y := @le_meet_r CRlat.
Definition CRmin_monotone_r : forall a : CR, CRmonotone (CRmin a) :=
 @meet_monotone_r CRlat.
Definition CRmin_monotone_l : forall a : CR, CRmonotone (fun x => CRmin x a) :=
 @meet_monotone_l CRlat.
Definition CRmin_le_compat :
 forall w x y z : CR, w <= y -> x <= z -> CRmin w x <= CRmin y z :=
 @meet_le_compat CRlat.

Definition CRmax_comm : forall x y : CR, CRmax x y == CRmax y x := @join_comm CRlat.
Definition CRmax_assoc : forall x y z : CR, CRmax x (CRmax y z) == CRmax (CRmax x y) z:=
 @join_assoc CRlat.
Definition CRmax_idem : forall x : CR, CRmax x x == x := @join_idem CRlat.
Definition CRle_max_l : forall x y : CR, y <= x <-> CRmax x y == x := @le_join_l CRlat.
Definition CRle_max_r : forall x y : CR, x <= y <-> CRmax x y == y := @le_join_r CRlat.
Definition CRmax_monotone_r : forall a : CR, CRmonotone (CRmax a) :=
 @join_monotone_r CRlat.
Definition CRmax_monotone_l : forall a : CR, CRmonotone (fun x => CRmax x a) :=
 @join_monotone_l CRlat.
Definition CRmax_le_compat :
 forall w x y z : CR, w<=y -> x<=z -> CRmax w x <= CRmax y z :=
 @join_le_compat CRlat.

Definition CRmin_max_absorb_l_l : forall x y : CR, CRmin x (CRmax x y) == x :=
 @meet_join_absorb_l_l CRlat.
Definition CRmax_min_absorb_l_l : forall x y : CR, CRmax x (CRmin x y) == x :=
 @join_meet_absorb_l_l CRlat.
Definition CRmin_max_absorb_l_r : forall x y : CR, CRmin x (CRmax y x) == x :=
 @meet_join_absorb_l_r CRlat.
Definition CRmax_min_absorb_l_r : forall x y : CR, CRmax x (CRmin y x) == x :=
 @join_meet_absorb_l_r CRlat.
Definition CRmin_max_absorb_r_l : forall x y : CR, CRmin (CRmax x y) x == x :=
 @meet_join_absorb_r_l CRlat.
Definition CRmax_min_absorb_r_l : forall x y : CR, CRmax (CRmin x y) x == x :=
 @join_meet_absorb_r_l CRlat.
Definition CRmin_max_absorb_r_r : forall x y : CR, CRmin (CRmax y x) x == x :=
 @meet_join_absorb_r_r CRlat.
Definition CRmax_min_absorb_r_r : forall x y : CR, CRmax (CRmin y x) x == x :=
 @join_meet_absorb_r_r CRlat.

Definition CRmin_max_eq : forall x y : CR, CRmin x y == CRmax x y -> x == y :=
 @meet_join_eq CRlat.


End CRLattice.