Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Generalizable Variables K L f. (* We prove that the algebraic definition of a lattice corresponds to the order theoretic one. Note that we do not make any of these instances global, because that would cause loops. *) Section join_semilattice_order. Context `{JoinSemiLatticeOrder L}.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ (x ⊔ y) ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ (x ⊔ y) ⊔ z
apply join_ub_r. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ (x ⊔ y) ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ (x ⊔ y) ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
x ⊔ y ≤ (x ⊔ y) ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ x ⊔ y
apply join_ub_r.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ⊔ y ≤ (x ⊔ y) ⊔ z
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ (x ⊔ y) ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ (x ⊔ y) ⊔ z
transitivity (x ⊔ y); apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ x ⊔ (y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ x ⊔ (y ⊔ z)
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ x ⊔ (y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ x ⊔ (y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ y ⊔ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
y ⊔ z ≤ x ⊔ (y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ y ⊔ z
apply join_ub_l.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ⊔ z ≤ x ⊔ (y ⊔ z)
apply join_ub_r. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ x ⊔ (y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ x ⊔ (y ⊔ z)
transitivity (y ⊔ z); apply join_ub_r. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

IsJoinSemiLattice L
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

IsJoinSemiLattice L
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

IsHSet L
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
Associative sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
Commutative sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
BinaryIdempotent sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

IsHSet L
apply _.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

Associative sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) = sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
sg_op (sg_op x y) z ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
sg_op y z ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ sg_op (sg_op x y) z
apply join_ub_3_l.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op y z ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
z ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ sg_op (sg_op x y) z
apply join_ub_3_m.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ sg_op (sg_op x y) z
apply join_ub_3_r.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op x y ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
z ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

sg_op x y ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
y ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ sg_op x (sg_op y z)
apply join_ub_3_assoc_l.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

y ≤ sg_op x (sg_op y z)
apply join_ub_3_assoc_m.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ sg_op x (sg_op y z)
apply join_ub_3_assoc_r.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

Commutative sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

sg_op x y = sg_op y x
apply (antisymmetry (≤)); apply join_lub; first [apply join_ub_l | apply join_ub_r].
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

BinaryIdempotent sg_op
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

Idempotent sg_op x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

sg_op x x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

sg_op x x ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
x ≤ sg_op x x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

sg_op x x ≤ x
apply join_lub; apply reflexivity.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

x ≤ sg_op x x
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ x -> z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ x -> z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ x

z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ x

z ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ x
x ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ x

z ≤ x
trivial.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ x

x ≤ x ⊔ y
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ y -> z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

z ≤ y -> z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ y

z ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ y

z ≤ y ⊔ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L
E: z ≤ y

z ≤ y
trivial. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

y ≤ x -> x ⊔ y = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

y ≤ x -> x ⊔ y = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ⊔ y = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ⊔ y ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x
x ≤ x ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ⊔ y ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ≤ x
apply reflexivity.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ≤ x ⊔ y
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

x ≤ y -> x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

x ≤ y -> x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

y ⊔ x = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ≤ y
trivial. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

x ≤ y <-> x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L

x ≤ y <-> x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ⊔ y = y
x ≤ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ≤ y
trivial.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ⊔ y = y

x ≤ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y: L
E: x ⊔ y = y

x ≤ x ⊔ y
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

forall z : L, OrderPreserving (join z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

forall z : L, OrderPreserving (join z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ⊔ x ≤ z ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ≤ z ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y
x ≤ z ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ≤ z ⊔ y
apply join_ub_l.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

x ≤ z ⊔ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

x ≤ y
trivial. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

forall z : L, OrderPreserving (fun Y : L => Y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale

forall z : L, OrderPreserving (fun Y : L => Y ⊔ z)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
z: L

OrderPreserving (fun Y : L => Y ⊔ z)
apply maps.order_preserving_flip. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L

x₁ ≤ x₂ -> y₁ ≤ y₂ -> x₁ ⊔ y₁ ≤ x₂ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L

x₁ ≤ x₂ -> y₁ ≤ y₂ -> x₁ ⊔ y₁ ≤ x₂ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊔ y₁ ≤ x₂ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊔ y₁ ≤ x₁ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂
x₁ ⊔ y₂ ≤ x₂ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊔ y₁ ≤ x₁ ⊔ y₂
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

y₁ ≤ y₂
trivial.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊔ y₂ ≤ x₂ ⊔ y₂
apply (order_preserving (⊔ y₂));trivial. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ z -> y ≤ z -> x ⊔ y ≤ z
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x, y, z: L

x ≤ z -> y ≤ z -> x ⊔ y ≤ z
apply join_lub. Qed. Section total_join. Context `{!TotalRelation le}.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L

((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L

((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: x ≤ y

((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: y ≤ x
((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: x ≤ y

((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: x ≤ y

x ⊔ y = y
apply join_r,E.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: y ≤ x

((x ⊔ y = x) + (x ⊔ y = y))%type
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0, TotalRelation1: TotalRelation le
x, y: L
E: y ≤ x

x ⊔ y = x
apply join_l,E. Qed. Definition max x y := match total le x y with | inl _ => y | inr _ => x end.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

x ⊔ y = max x y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

x ⊔ y = max x y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x
x ⊔ y = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

x ⊔ y = y
apply join_r,E.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x

x ⊔ y = x
apply join_l,E. Qed. End total_join.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

x ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

x ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

x ⊔ x ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x
x ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L

x ⊔ x ≤ x
refine (join_lub _ _ _ _ _); apply reflexivity.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x

x ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x

x ≤ x ⊔ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x
le2: x ≤ x ⊔ x
x ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x

x ≤ x ⊔ x
refine (join_ub_l _ _).
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
x: L
le1: x ⊔ x ≤ x
le2: x ≤ x ⊔ x

x ⊔ x = x
refine (antisymmetry _ _ _ le1 le2). Qed. End join_semilattice_order. Section bounded_join_semilattice. Context `{JoinSemiLatticeOrder L} `{Bottom L} `{!IsBoundedJoinSemiLattice L}.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

⊥ ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

⊥ ≤ x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

⊥ ⊔ x = x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

x = x
reflexivity. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

x ≤ ⊥ -> x = ⊥
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L

x ≤ ⊥ -> x = ⊥
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L
E: x ≤ ⊥

x = ⊥
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L
E: x ⊔ ⊥ = ⊥

x = ⊥
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
H1: Bottom L
IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
x: L
E: x = ⊥

x = ⊥
trivial. Qed. End bounded_join_semilattice. Section meet_semilattice_order. Context `{MeetSemiLatticeOrder L}.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ z
apply meet_lb_r. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ x ⊓ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
x ⊓ y ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ x ⊓ y
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ y ≤ y
apply meet_lb_r. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊓ z ≤ x
transitivity (x ⊓ y); apply meet_lb_l. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ x
apply meet_lb_l. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ y ⊓ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
y ⊓ z ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ y ⊓ z
apply meet_lb_r.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

y ⊓ z ≤ y
apply meet_lb_l. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ⊓ (y ⊓ z) ≤ z
transitivity (y ⊓ z); apply meet_lb_r. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

IsMeetSemiLattice L
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

IsMeetSemiLattice L
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

IsHSet L
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
Associative sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
Commutative sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
BinaryIdempotent sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

IsHSet L
apply _.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

Associative sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) = sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
sg_op (sg_op x y) z ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op (sg_op x y) z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op x y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
sg_op x (sg_op y z) ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ sg_op x y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
sg_op x (sg_op y z) ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ x
apply meet_lb_3_assoc_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ y
apply meet_lb_3_assoc_m.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op x (sg_op y z) ≤ z
apply meet_lb_3_assoc_r.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ sg_op x (sg_op y z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
sg_op (sg_op x y) z ≤ sg_op y z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ x
apply meet_lb_3_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ sg_op y z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
sg_op (sg_op x y) z ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ y
apply meet_lb_3_m.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

sg_op (sg_op x y) z ≤ z
apply meet_lb_3_r.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

Commutative sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

sg_op x y = sg_op y x
apply (antisymmetry (≤)); apply meet_glb; first [apply meet_lb_l | try apply meet_lb_r].
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

BinaryIdempotent sg_op
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

Idempotent sg_op x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

sg_op x x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

sg_op x x ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
x ≤ sg_op x x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

sg_op x x ≤ x
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

x ≤ sg_op x x
apply meet_glb;apply reflexivity. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ≤ z -> x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

x ≤ z -> x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: x ≤ z

x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: x ≤ z

x ⊓ y ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: x ≤ z
x ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: x ≤ z

x ⊓ y ≤ x
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: x ≤ z

x ≤ z
trivial. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

y ≤ z -> x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

y ≤ z -> x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: y ≤ z

x ⊓ y ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: y ≤ z

y ⊓ x ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L
E: y ≤ z

y ≤ z
trivial. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

x ≤ y -> x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

x ≤ y -> x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊓ y ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y
x ≤ x ⊓ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊓ y ≤ x
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ≤ x ⊓ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ≤ x
apply reflexivity. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

y ≤ x -> x ⊓ y = y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

y ≤ x -> x ⊓ y = y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: y ≤ x

x ⊓ y = y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: y ≤ x

y ⊓ x = y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: y ≤ x

y ≤ x
trivial. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

x ≤ y <-> x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L

x ≤ y <-> x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ⊓ y = x
x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ≤ y

x ⊓ y = x
apply meet_l;trivial.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ⊓ y = x

x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y: L
E: x ⊓ y = x

x ⊓ y ≤ y
apply meet_lb_r. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

forall z : L, OrderPreserving (meet z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

forall z : L, OrderPreserving (meet z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ⊓ x ≤ z ⊓ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ⊓ x ≤ z
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y
z ⊓ x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ⊓ x ≤ z
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

z ⊓ x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z, x, y: L
X: x ≤ y

x ≤ y
trivial. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

forall z : L, OrderPreserving (fun Y : L => Y ⊓ z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale

forall z : L, OrderPreserving (fun Y : L => Y ⊓ z)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
z: L

OrderPreserving (fun Y : L => Y ⊓ z)
apply maps.order_preserving_flip. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L

x₁ ≤ x₂ -> y₁ ≤ y₂ -> x₁ ⊓ y₁ ≤ x₂ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L

x₁ ≤ x₂ -> y₁ ≤ y₂ -> x₁ ⊓ y₁ ≤ x₂ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊓ y₁ ≤ x₂ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊓ y₁ ≤ x₁ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂
x₁ ⊓ y₂ ≤ x₂ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊓ y₁ ≤ x₁ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

y₁ ≤ y₂
trivial.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ⊓ y₂ ≤ x₂ ⊓ y₂
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x₁, x₂, y₁, y₂: L
E1: x₁ ≤ x₂
E2: y₁ ≤ y₂

x₁ ≤ x₂
trivial. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

z ≤ x -> z ≤ y -> z ≤ x ⊓ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x, y, z: L

z ≤ x -> z ≤ y -> z ≤ x ⊓ y
apply meet_glb. Qed. Section total_meet. Context `{!TotalRelation le}.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x
((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

x ⊓ y = x
apply meet_l,E.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x

((x ⊓ y = x) + (x ⊓ y = y))%type
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x

x ⊓ y = y
apply meet_r,E. Qed. Definition min x y := match total le x y with | inr _ => y | inl _ => x end.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

x ⊓ y = min x y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

x ⊓ y = min x y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L

x ⊓ y = match total le x y with | inl _ => x | inr _ => y end
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x
x ⊓ y = y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: x ≤ y

x ⊓ y = x
apply meet_l,E.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
TotalRelation0: TotalRelation le
x, y: L
E: y ≤ x

x ⊓ y = y
apply meet_r,E. Qed. End total_meet.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

x ⊓ x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

x ⊓ x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

x ⊓ x ≤ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x
x ⊓ x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L

x ⊓ x ≤ x
refine (meet_lb_l _ _).
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x

x ⊓ x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x

x ≤ x ⊓ x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x
le2: x ≤ x ⊓ x
x ⊓ x = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x

x ≤ x ⊓ x
refine (meet_glb _ _ _ _ _); apply reflexivity.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
x: L
le1: x ⊓ x ≤ x
le2: x ≤ x ⊓ x

x ⊓ x = x
refine (antisymmetry _ _ _ le1 le2). Qed. End meet_semilattice_order. Section lattice_order. Context `{LatticeOrder L}. Instance: IsJoinSemiLattice L := join_sl_order_join_sl. Instance: IsMeetSemiLattice L := meet_sl_order_meet_sl.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale

Absorption meet join
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale

Absorption meet join
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊓ (x ⊔ y) = x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊓ (x ⊔ y) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L
x ≤ x ⊓ (x ⊔ y)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊓ (x ⊔ y) ≤ x
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x ⊓ (x ⊔ y)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L
x ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x
apply reflexivity.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x ⊔ y
apply join_ub_l. Qed.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale

Absorption join meet
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale

Absorption join meet
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊔ (x ⊓ y) = x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊔ (x ⊓ y) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L
x ≤ x ⊔ (x ⊓ y)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊔ (x ⊓ y) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L
x ⊓ y ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x
apply reflexivity.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ⊓ y ≤ x
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y: L

x ≤ x ⊔ (x ⊓ y)
apply join_ub_l. Qed. Instance lattice_order_lattice: IsLattice L := {}.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊔ (x ⊓ z) ≤ x ⊓ (y ⊔ z)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊔ (x ⊓ z) ≤ x ⊓ (y ⊔ z)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊔ (x ⊓ z) ≤ x
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
(x ⊓ y) ⊔ (x ⊓ z) ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊔ (x ⊓ z) ≤ x
apply join_le; apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

(x ⊓ y) ⊔ (x ⊓ z) ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ y ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
x ⊓ z ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ y ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ y ≤ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
y ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ y ≤ y
apply meet_lb_r.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ≤ y ⊔ z
apply join_ub_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ z ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ z ≤ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
z ≤ y ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊓ z ≤ z
apply meet_lb_r.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

z ≤ y ⊔ z
apply join_ub_r. Qed.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊔ (y ⊓ z) ≤ (x ⊔ y) ⊓ (x ⊔ z)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊔ (y ⊓ z) ≤ (x ⊔ y) ⊓ (x ⊔ z)
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊔ (y ⊓ z) ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
x ⊔ (y ⊓ z) ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊔ (y ⊓ z) ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
y ⊓ z ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ≤ x ⊔ y
apply join_ub_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
y ≤ x ⊔ y
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ y
apply meet_lb_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ≤ x ⊔ y
apply join_ub_r.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ⊔ (y ⊓ z) ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
y ⊓ z ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

x ≤ x ⊔ z
apply join_ub_l.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L
z ≤ x ⊔ z
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

y ⊓ z ≤ z
apply meet_lb_r.
L: Type
Ale: Le L
H: Meet L
H0: Join L
H1: LatticeOrder Ale
x, y, z: L

z ≤ x ⊔ z
apply join_ub_r. Qed. End lattice_order. Definition default_join_sl_le `{IsJoinSemiLattice L} : Le L := fun x y => x ⊔ y = y. Section join_sl_order_alt. Context `{IsJoinSemiLattice L} `{Le L} `{is_mere_relation L le} (le_correct : forall x y, x ≤ y <-> x ⊔ y = y).
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

JoinSemiLatticeOrder le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

JoinSemiLatticeOrder le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

IsHSet L
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
is_mere_relation L le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
Reflexive le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
Transitive le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
AntiSymmetric le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
forall x y : L, x ≤ x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
forall x y : L, y ≤ x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
forall x y z : L, x ≤ z -> y ≤ z -> x ⊔ y ≤ z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

IsHSet L
apply _.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

is_mere_relation L le
apply _.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

Reflexive le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x: L

x ≤ x
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x: L

x ⊔ x = x
apply binary_idempotent.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

Transitive le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ≤ y
E2: y ≤ z

x ≤ z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ⊔ y = y
E2: y ⊔ z = z

x ⊔ z = z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ⊔ y = y
E2: y ⊔ z = z

y ⊔ z = y ⊔ z
reflexivity.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

AntiSymmetric le
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L
E1: x ≤ y
E2: y ≤ x

x = y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L
E1: x ⊔ y = y
E2: y ⊔ x = x

x = y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L
E1: x ⊔ y = y
E2: y ⊔ x = x

x = y ⊔ x
apply symmetry;trivial.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

forall x y : L, x ≤ x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

x ≤ x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

x ⊔ (x ⊔ y) = x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

x ⊔ y = x ⊔ y
reflexivity.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

forall x y : L, y ≤ x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

y ⊔ (x ⊔ y) = x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

(x ⊔ y) ⊔ y = x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

x ⊔ (y ⊔ y) = x ⊔ y
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y: L

x ⊔ y = x ⊔ y
reflexivity.
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y

forall x y z : L, x ≤ z -> y ≤ z -> x ⊔ y ≤ z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ≤ z
E2: y ≤ z

x ⊔ y ≤ z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ⊔ z = z
E2: y ⊔ z = z

(x ⊔ y) ⊔ z = z
L: Type
Ajoin: Join L
H: IsJoinSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊔ y = y
x, y, z: L
E1: x ⊔ z = z
E2: y ⊔ z = z

x ⊔ z = z
trivial. Qed. End join_sl_order_alt. Definition default_meet_sl_le `{IsMeetSemiLattice L} : Le L := fun x y => x ⊓ y = x. Section meet_sl_order_alt. Context `{IsMeetSemiLattice L} `{Le L} `{is_mere_relation L le} (le_correct : forall x y, x ≤ y <-> x ⊓ y = x).
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

MeetSemiLatticeOrder le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

MeetSemiLatticeOrder le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

IsHSet L
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
is_mere_relation L le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
Reflexive le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
Transitive le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
AntiSymmetric le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
forall x y : L, x ⊓ y ≤ x
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
forall x y : L, x ⊓ y ≤ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
forall x y z : L, z ≤ x -> z ≤ y -> z ≤ x ⊓ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

IsHSet L
apply _.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

is_mere_relation L le
apply _.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

Reflexive le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x: L

x ≤ x
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x: L

x ⊓ x = x
apply (idempotency _ _).
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

Transitive le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: x ≤ y
E2: y ≤ z

x ≤ z
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: x ⊓ y = x
E2: y ⊓ z = y

x ⊓ z = x
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: x ⊓ y = x
E2: y ⊓ z = y

x ⊓ y = x ⊓ y
reflexivity.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

AntiSymmetric le
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L
E1: x ≤ y
E2: y ≤ x

x = y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L
E1: x ⊓ y = x
E2: y ⊓ x = y

x = y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L
E1: x ⊓ y = x
E2: y ⊓ x = y

x = x ⊓ y
apply symmetry,E1.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

forall x y : L, x ⊓ y ≤ x
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

x ⊓ y ≤ x
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

(x ⊓ y) ⊓ x = x ⊓ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

x ⊓ y = x ⊓ y
reflexivity.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

forall x y : L, x ⊓ y ≤ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

x ⊓ y ≤ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

(x ⊓ y) ⊓ y = x ⊓ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y: L

x ⊓ y = x ⊓ y
reflexivity.
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x

forall x y z : L, z ≤ x -> z ≤ y -> z ≤ x ⊓ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: z ≤ x
E2: z ≤ y

z ≤ x ⊓ y
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: z ⊓ x = z
E2: z ⊓ y = z

z ⊓ (x ⊓ y) = z
L: Type
Ameet: Meet L
H: IsMeetSemiLattice L
H0: Le L
is_mere_relation0: is_mere_relation L le
le_correct: forall x y : L, x ≤ y <-> x ⊓ y = x
x, y, z: L
E1: z ⊓ x = z
E2: z ⊓ y = z

z ⊓ y = z
trivial. Qed. End meet_sl_order_alt. Section join_order_preserving. Context `{JoinSemiLatticeOrder L} `{JoinSemiLatticeOrder K} (f : L -> K) `{!IsJoinPreserving f}.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f

OrderPreserving f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f

OrderPreserving f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
x, y: L
E: x ≤ y

f x ≤ f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
x, y: L
E: x ⊔ y = y

f x ≤ f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
x, y: L
E: x ⊔ y = y

f x ⊔ f y = f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
x, y: L
E: x ⊔ y = y

f (x ⊔ y) = f y
apply ap, E. Qed.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f

OrderReflecting f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f

OrderReflecting f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ≤ f y

x ≤ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ⊔ f y = f y

x ≤ y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ⊔ f y = f y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f
x, y: L
E: f (x ⊔ y) = f y

x ⊔ y = y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
f: L -> K
IsJoinPreserving0: IsJoinPreserving f
IsInjective0: IsInjective f
x, y: L
E: f (x ⊔ y) = f y

f (x ⊔ y) = f y
assumption. Qed. End join_order_preserving. Section meet_order_preserving. Context `{MeetSemiLatticeOrder L} `{MeetSemiLatticeOrder K} (f : L -> K) `{!IsMeetPreserving f}.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f

OrderPreserving f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f

OrderPreserving f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
x, y: L
E: x ≤ y

f x ≤ f y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
x, y: L
E: x ⊓ y = x

f x ≤ f y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
x, y: L
E: x ⊓ y = x

f x ⊓ f y = f x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
x, y: L
E: x ⊓ y = x

f (x ⊓ y) = f x
apply ap, E. Qed.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f

OrderReflecting f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f

OrderReflecting f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ≤ f y

x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ⊓ f y = f x

x ≤ y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f
x, y: L
E: f x ⊓ f y = f x

x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f
x, y: L
E: f (x ⊓ y) = f x

x ⊓ y = x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
f: L -> K
IsMeetPreserving0: IsMeetPreserving f
IsInjective0: IsInjective f
x, y: L
E: f (x ⊓ y) = f x

f (x ⊓ y) = f x
assumption. Qed. End meet_order_preserving. Section order_preserving_join_sl_mor. Context `{JoinSemiLatticeOrder L} `{JoinSemiLatticeOrder K} `{!TotalOrder (_ : Le L)} `{!TotalOrder (_ : Le K)} `{!OrderPreserving (f : L -> K)}.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)

IsJoinPreserving f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)

IsJoinPreserving f
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x
f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (x ⊔ y) = f x ⊔ f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f x ≤ f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

x ≤ y
trivial.
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f (x ⊔ y) = f x ⊔ f y
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f y ≤ f x
L: Type
Ale: Le L
H: Join L
H0: JoinSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Join K
H2: JoinSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

y ≤ x
trivial. Qed. End order_preserving_join_sl_mor. Section order_preserving_meet_sl_mor. Context `{MeetSemiLatticeOrder L} `{MeetSemiLatticeOrder K} `{!TotalOrder (_ : Le L)} `{!TotalOrder (_ : Le K)} `{!OrderPreserving (f : L -> K)}.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)

IsSemiGroupPreserving f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)

IsSemiGroupPreserving f
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x
f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f (x ⊓ y) = f x ⊓ f y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

f x ≤ f y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: x ≤ y

x ≤ y
trivial.
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f (sg_op x y) = sg_op (f x) (f y)
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f (x ⊓ y) = f x ⊓ f y
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

f y ≤ f x
L: Type
Ale: Le L
H: Meet L
H0: MeetSemiLatticeOrder Ale
K: Type
Ale0: Le K
H1: Meet K
H2: MeetSemiLatticeOrder Ale0
TotalOrder0: TotalOrder (Ale : Le L)
TotalOrder1: TotalOrder (Ale0 : Le K)
f: L -> K
OrderPreserving0: OrderPreserving (f : L -> K)
x, y: L
E: y ≤ x

y ≤ x
trivial. Qed. End order_preserving_meet_sl_mor. Section strict_ordered_field. Generalizable Variables Lle Llt Lmeet Ljoin Lapart. Context `{@LatticeOrder L Lle Lmeet Ljoin}. Context `{@FullPseudoOrder L Lapart Lle Llt}.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

z < x -> z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

z < x -> z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltzx: z < x

z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltzx: z < x

x ≤ x ⊔ y
apply join_ub_l. Qed.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

z < y -> z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

z < y -> z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltzy: z < y

z < x ⊔ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltzy: z < y

y ≤ x ⊔ y
apply join_ub_r. Qed.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < z -> y < z -> x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < z -> y < z -> x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxyz: x ⊔ y < z
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltxyz: x ⊔ y < z
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y

x ⊔ y <> x
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y

x ⊔ y <> x
apply lt_ne_flip; assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)

x ≤ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)

x ≤ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)

~ (y < x)
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
ltyx: y < x

Empty
refine (nleyx (lt_le _ _ _)).
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y

x ⊔ y <> y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y

x ⊔ y <> y
apply lt_ne_flip; assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)

y ≤ x
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)
leyx: y ≤ x
x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)

y ≤ x
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)

~ (x < y)
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)
ltxy: x < y

Empty
refine (nlexy (lt_le _ _ _)).
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)
leyx: y ≤ x

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ y <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)
leyx: y ≤ x
eqxy: x = y

x ⊔ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltyxy: y < x ⊔ y
ineqx: x ⊔ x <> x
nleyx: ~ (y ≤ x)
lexy: x ≤ y
ineqy: x ⊔ y <> y
nlexy: ~ (x ≤ y)
leyx: y ≤ x
eqxy: x = y

x ⊔ y < z
destruct (ineqx (join_idempotent x)).
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxxy: x < x ⊔ y
disj':= cotransitive ltyz (x ⊔ y): hor (y < x ⊔ y) (x ⊔ y < z)
ltxyz: x ⊔ y < z

x ⊔ y < z
assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z
ltyz: y < z
disj:= cotransitive ltxz (x ⊔ y): hor (x < x ⊔ y) (x ⊔ y < z)
ltxyz: x ⊔ y < z

x ⊔ y < z
assumption. Qed.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < z -> x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < z -> x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z

x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxz: x < z

x ⊓ y ≤ x
apply meet_lb_l. Qed.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

y < z -> x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

y < z -> x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltyz: y < z

x ⊓ y < z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltyz: y < z

x ⊓ y ≤ y
apply meet_lb_r. Qed.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < y -> x < z -> x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L

x < y -> x < z -> x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltxyy: x < y ⊓ z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltxyy: x < y ⊓ z

x < y ⊓ z
assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltxyz: x < y ⊓ z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltxyz: x < y ⊓ z

x < y ⊓ z
assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z

y ⊓ z <> y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z

y ⊓ z <> y
apply lt_ne; assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)

z ≤ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)

z ≤ y
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)

~ (y < z)
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
ltzy: y < z

Empty
refine (nleyz (lt_le _ _ _)).
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y

y ⊓ z <> z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y

y ⊓ z <> z
apply lt_ne; assumption.
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)

y ≤ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)
leyz: y ≤ z
x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)

y ≤ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)

~ (z < y)
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)
ltzy: z < y

Empty
refine (nlezy (lt_le _ _ _)).
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)
leyz: y ≤ z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ z <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)
leyz: y ≤ z
eqyz: y = z

x < y ⊓ z
L: Type
Lle: Le L
Lmeet: Meet L
Ljoin: Join L
H: LatticeOrder Lle
Lapart: Apart L
Llt: Lt L
H0: FullPseudoOrder Lle Llt
x, y, z: L
ltxy: x < y
ltxz: x < z
disj:= cotransitive ltxy (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < y)
ltyzy: y ⊓ z < y
disj':= cotransitive ltxz (y ⊓ z): hor (x < y ⊓ z) (y ⊓ z < z)
ltyzz: y ⊓ z < z
ineqy: y ⊓ y <> y
nleyz: ~ (y ≤ z)
lezy: z ≤ y
ineqz: y ⊓ z <> z
nlezy: ~ (z ≤ y)
leyz: y ≤ z
eqyz: y = z

x < y ⊓ z
destruct (ineqy (meet_idempotent y)). Qed. End strict_ordered_field.