mathlib3 documentation

order.disjoint

Disjointness and complements #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This file defines disjoint, codisjoint, and the is_compl predicate.

Main declarations #

def disjoint {α : Type u_1} [partial_order α] [order_bot α] (a b : α) :
Prop

Two elements of a lattice are disjoint if their inf is the bottom element. (This generalizes disjoint sets, viewed as members of the subset lattice.)

Note that we define this without reference to ⊓, as this allows us to talk about orders where the infimum is not unique, or where implementing has_inf would require additional decidable arguments.

Equations
Instances for disjoint
theorem disjoint.comm {α : Type u_1} [partial_order α] [order_bot α] {a b : α} :
@[symm]
theorem disjoint.symm {α : Type u_1} [partial_order α] [order_bot α] ⦃a b : α⦄ :
@[simp]
theorem disjoint_bot_left {α : Type u_1} [partial_order α] [order_bot α] {a : α} :
@[simp]
theorem disjoint_bot_right {α : Type u_1} [partial_order α] [order_bot α] {a : α} :
theorem disjoint.mono {α : Type u_1} [partial_order α] [order_bot α] {a b c d : α} (h₁ : a ≤ b) (h₂ : c ≤ d) :
theorem disjoint.mono_left {α : Type u_1} [partial_order α] [order_bot α] {a b c : α} (h : a ≤ b) :
theorem disjoint.mono_right {α : Type u_1} [partial_order α] [order_bot α] {a b c : α} :
@[simp]
theorem disjoint_self {α : Type u_1} [partial_order α] [order_bot α] {a : α} :
theorem disjoint.eq_bot_of_self {α : Type u_1} [partial_order α] [order_bot α] {a : α} :

Alias of the forward direction of disjoint_self.

theorem disjoint.ne {α : Type u_1} [partial_order α] [order_bot α] {a b : α} (ha : a ≠ ⊥) (hab : disjoint a b) :
a ≠ b
theorem disjoint.eq_bot_of_le {α : Type u_1} [partial_order α] [order_bot α] {a b : α} (hab : disjoint a b) (h : a ≤ b) :
a = ⊥
theorem disjoint.eq_bot_of_ge {α : Type u_1} [partial_order α] [order_bot α] {a b : α} (hab : disjoint a b) :
b ≤ a → b = ⊥
@[simp]
theorem disjoint_top {α : Type u_1} [partial_order α] [bounded_order α] {a : α} :
@[simp]
theorem top_disjoint {α : Type u_1} [partial_order α] [bounded_order α] {a : α} :
theorem disjoint_iff_inf_le {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} :
theorem disjoint_iff {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} :
disjoint a b ↔ a ⊓ b = ⊥
theorem disjoint.le_bot {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} :
theorem disjoint.eq_bot {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} :
disjoint a b → a ⊓ b = ⊥
theorem disjoint_assoc {α : Type u_1} [semilattice_inf α] [order_bot α] {a b c : α} :
disjoint (a ⊓ b) c ↔ disjoint a (b ⊓ c)
theorem disjoint_left_comm {α : Type u_1} [semilattice_inf α] [order_bot α] {a b c : α} :
disjoint a (b ⊓ c) ↔ disjoint b (a ⊓ c)
theorem disjoint_right_comm {α : Type u_1} [semilattice_inf α] [order_bot α] {a b c : α} :
disjoint (a ⊓ b) c ↔ disjoint (a ⊓ c) b
theorem disjoint.inf_left {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (c : α) (h : disjoint a b) :
disjoint (a ⊓ c) b
theorem disjoint.inf_left' {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (c : α) (h : disjoint a b) :
disjoint (c ⊓ a) b
theorem disjoint.inf_right {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (c : α) (h : disjoint a b) :
disjoint a (b ⊓ c)
theorem disjoint.inf_right' {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (c : α) (h : disjoint a b) :
disjoint a (c ⊓ b)
theorem disjoint.of_disjoint_inf_of_le {α : Type u_1} [semilattice_inf α] [order_bot α] {a b c : α} (h : disjoint (a ⊓ b) c) (hle : a ≤ c) :
theorem disjoint.of_disjoint_inf_of_le' {α : Type u_1} [semilattice_inf α] [order_bot α] {a b c : α} (h : disjoint (a ⊓ b) c) (hle : b ≤ c) :
@[simp]
theorem disjoint_sup_left {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} :
@[simp]
theorem disjoint_sup_right {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} :
theorem disjoint.sup_left {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} (ha : disjoint a c) (hb : disjoint b c) :
disjoint (a ⊔ b) c
theorem disjoint.sup_right {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} (hb : disjoint a b) (hc : disjoint a c) :
disjoint a (b ⊔ c)
theorem disjoint.left_le_of_le_sup_right {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} (h : a ≤ b ⊔ c) (hd : disjoint a c) :
a ≤ b
theorem disjoint.left_le_of_le_sup_left {α : Type u_1} [distrib_lattice α] [order_bot α] {a b c : α} (h : a ≤ c ⊔ b) (hd : disjoint a c) :
a ≤ b
def codisjoint {α : Type u_1} [partial_order α] [order_top α] (a b : α) :
Prop

Two elements of a lattice are codisjoint if their sup is the top element.

Note that we define this without reference to ⊔, as this allows us to talk about orders where the supremum is not unique, or where implement has_sup would require additional decidable arguments.

Equations
Instances for codisjoint
theorem codisjoint.comm {α : Type u_1} [partial_order α] [order_top α] {a b : α} :
@[symm]
theorem codisjoint.symm {α : Type u_1} [partial_order α] [order_top α] ⦃a b : α⦄ :
@[simp]
theorem codisjoint_top_left {α : Type u_1} [partial_order α] [order_top α] {a : α} :
@[simp]
theorem codisjoint_top_right {α : Type u_1} [partial_order α] [order_top α] {a : α} :
theorem codisjoint.mono {α : Type u_1} [partial_order α] [order_top α] {a b c d : α} (h₁ : a ≤ b) (h₂ : c ≤ d) :
theorem codisjoint.mono_left {α : Type u_1} [partial_order α] [order_top α] {a b c : α} (h : a ≤ b) :
theorem codisjoint.mono_right {α : Type u_1} [partial_order α] [order_top α] {a b c : α} :
@[simp]
theorem codisjoint_self {α : Type u_1} [partial_order α] [order_top α] {a : α} :
theorem codisjoint.eq_top_of_self {α : Type u_1} [partial_order α] [order_top α] {a : α} :

Alias of the forward direction of codisjoint_self.

theorem codisjoint.ne {α : Type u_1} [partial_order α] [order_top α] {a b : α} (ha : a ≠ ⊤) (hab : codisjoint a b) :
a ≠ b
theorem codisjoint.eq_top_of_le {α : Type u_1} [partial_order α] [order_top α] {a b : α} (hab : codisjoint a b) (h : b ≤ a) :
a = ⊤
theorem codisjoint.eq_top_of_ge {α : Type u_1} [partial_order α] [order_top α] {a b : α} (hab : codisjoint a b) :
a ≤ b → b = ⊤
@[simp]
theorem codisjoint_bot {α : Type u_1} [partial_order α] [bounded_order α] {a : α} :
@[simp]
theorem bot_codisjoint {α : Type u_1} [partial_order α] [bounded_order α] {a : α} :
theorem codisjoint_iff_le_sup {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} :
theorem codisjoint_iff {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} :
theorem codisjoint.top_le {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} :
theorem codisjoint.eq_top {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} :
theorem codisjoint_assoc {α : Type u_1} [semilattice_sup α] [order_top α] {a b c : α} :
codisjoint (a ⊔ b) c ↔ codisjoint a (b ⊔ c)
theorem codisjoint_left_comm {α : Type u_1} [semilattice_sup α] [order_top α] {a b c : α} :
codisjoint a (b ⊔ c) ↔ codisjoint b (a ⊔ c)
theorem codisjoint_right_comm {α : Type u_1} [semilattice_sup α] [order_top α] {a b c : α} :
codisjoint (a ⊔ b) c ↔ codisjoint (a ⊔ c) b
theorem codisjoint.sup_left {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} (c : α) (h : codisjoint a b) :
codisjoint (a ⊔ c) b
theorem codisjoint.sup_left' {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} (c : α) (h : codisjoint a b) :
codisjoint (c ⊔ a) b
theorem codisjoint.sup_right {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} (c : α) (h : codisjoint a b) :
codisjoint a (b ⊔ c)
theorem codisjoint.sup_right' {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} (c : α) (h : codisjoint a b) :
codisjoint a (c ⊔ b)
theorem codisjoint.of_codisjoint_sup_of_le {α : Type u_1} [semilattice_sup α] [order_top α] {a b c : α} (h : codisjoint (a ⊔ b) c) (hle : c ≤ a) :
theorem codisjoint.of_codisjoint_sup_of_le' {α : Type u_1} [semilattice_sup α] [order_top α] {a b c : α} (h : codisjoint (a ⊔ b) c) (hle : c ≤ b) :
@[simp]
theorem codisjoint_inf_left {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} :
@[simp]
theorem codisjoint_inf_right {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} :
theorem codisjoint.inf_left {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} (ha : codisjoint a c) (hb : codisjoint b c) :
codisjoint (a ⊓ b) c
theorem codisjoint.inf_right {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} (hb : codisjoint a b) (hc : codisjoint a c) :
codisjoint a (b ⊓ c)
theorem codisjoint.left_le_of_le_inf_right {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} (h : a ⊓ b ≤ c) (hd : codisjoint b c) :
a ≤ c
theorem codisjoint.left_le_of_le_inf_left {α : Type u_1} [distrib_lattice α] [order_top α] {a b c : α} (h : b ⊓ a ≤ c) (hd : codisjoint b c) :
a ≤ c
theorem disjoint.le_of_codisjoint {α : Type u_1} [distrib_lattice α] [bounded_order α] {a b c : α} (hab : disjoint a b) (hbc : codisjoint b c) :
a ≤ c
structure is_compl {α : Type u_1} [partial_order α] [bounded_order α] (x y : α) :
Prop

Two elements x and y are complements of each other if x ⊔ y = ⊤ and x ⊓ y = ⊥.

Instances for is_compl
theorem is_compl_iff {α : Type u_1} [partial_order α] [bounded_order α] {a b : α} :
@[protected, symm]
theorem is_compl.symm {α : Type u_1} [partial_order α] [bounded_order α] {x y : α} (h : is_compl x y) :
theorem is_compl.of_le {α : Type u_1} [lattice α] [bounded_order α] {x y : α} (h₁ : x ⊓ y ≤ ⊥) (h₂ : ⊤ ≤ x ⊔ y) :
theorem is_compl.of_eq {α : Type u_1} [lattice α] [bounded_order α] {x y : α} (h₁ : x ⊓ y = ⊥) (h₂ : x ⊔ y = ⊤) :
theorem is_compl.inf_eq_bot {α : Type u_1} [lattice α] [bounded_order α] {x y : α} (h : is_compl x y) :
x ⊓ y = ⊥
theorem is_compl.sup_eq_top {α : Type u_1} [lattice α] [bounded_order α] {x y : α} (h : is_compl x y) :
x ⊔ y = ⊤
theorem is_compl.inf_left_le_of_le_sup_right {α : Type u_1} [distrib_lattice α] [bounded_order α] {a b x y : α} (h : is_compl x y) (hle : a ≤ b ⊔ y) :
a ⊓ x ≤ b
theorem is_compl.le_sup_right_iff_inf_left_le {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y a b : α} (h : is_compl x y) :
a ≤ b ⊔ y ↔ a ⊓ x ≤ b
theorem is_compl.inf_left_eq_bot_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl y z) :
x ⊓ y = ⊥ ↔ x ≤ z
theorem is_compl.inf_right_eq_bot_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl y z) :
x ⊓ z = ⊥ ↔ x ≤ y
theorem is_compl.disjoint_left_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl y z) :
disjoint x y ↔ x ≤ z
theorem is_compl.disjoint_right_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl y z) :
disjoint x z ↔ x ≤ y
theorem is_compl.le_left_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl x y) :
z ≤ x ↔ disjoint z y
theorem is_compl.le_right_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl x y) :
z ≤ y ↔ disjoint z x
theorem is_compl.left_le_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl x y) :
theorem is_compl.right_le_iff {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (h : is_compl x y) :
@[protected]
theorem is_compl.antitone {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y x' y' : α} (h : is_compl x y) (h' : is_compl x' y') (hx : x ≤ x') :
y' ≤ y
theorem is_compl.right_unique {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (hxy : is_compl x y) (hxz : is_compl x z) :
y = z
theorem is_compl.left_unique {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y z : α} (hxz : is_compl x z) (hyz : is_compl y z) :
x = y
theorem is_compl.sup_inf {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y x' y' : α} (h : is_compl x y) (h' : is_compl x' y') :
is_compl (x ⊔ x') (y ⊓ y')
theorem is_compl.inf_sup {α : Type u_1} [distrib_lattice α] [bounded_order α] {x y x' y' : α} (h : is_compl x y) (h' : is_compl x' y') :
is_compl (x ⊓ x') (y ⊔ y')
@[protected]
theorem prod.disjoint_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] {x y : α × β} :
@[protected]
theorem prod.codisjoint_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] {x y : α × β} :
@[protected]
theorem prod.is_compl_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [bounded_order α] [bounded_order β] {x y : α × β} :
@[simp]
theorem is_compl_bot_top {α : Type u_1} [lattice α] [bounded_order α] :
theorem is_compl_top_bot {α : Type u_1} [lattice α] [bounded_order α] :
theorem eq_top_of_is_compl_bot {α : Type u_1} [lattice α] [bounded_order α] {x : α} (h : is_compl x ⊥) :
x = ⊤
theorem eq_top_of_bot_is_compl {α : Type u_1} [lattice α] [bounded_order α] {x : α} (h : is_compl ⊥ x) :
x = ⊤
theorem eq_bot_of_is_compl_top {α : Type u_1} [lattice α] [bounded_order α] {x : α} (h : is_compl x ⊤) :
x = ⊥
theorem eq_bot_of_top_is_compl {α : Type u_1} [lattice α] [bounded_order α] {x : α} (h : is_compl ⊤ x) :
x = ⊥
def is_complemented {α : Type u_1} [lattice α] [bounded_order α] (a : α) :
Prop

An element is complemented if it has a complement.

Equations
@[protected, instance]
@[reducible]
def complementeds (α : Type u_1) [lattice α] [bounded_order α] :
Type u_1

The sublattice of complemented elements.

Equations
@[protected, instance]
Equations
@[simp, norm_cast]
theorem complementeds.coe_inj {α : Type u_1} [lattice α] [bounded_order α] {a b : complementeds α} :
↑a = ↑b ↔ a = b
@[simp, norm_cast]
theorem complementeds.coe_le_coe {α : Type u_1} [lattice α] [bounded_order α] {a b : complementeds α} :
↑a ≤ ↑b ↔ a ≤ b
@[simp, norm_cast]
theorem complementeds.coe_lt_coe {α : Type u_1} [lattice α] [bounded_order α] {a b : complementeds α} :
↑a < ↑b ↔ a < b
@[simp, norm_cast]
theorem complementeds.coe_bot {α : Type u_1} [lattice α] [bounded_order α] :
@[simp, norm_cast]
theorem complementeds.coe_top {α : Type u_1} [lattice α] [bounded_order α] :
@[simp]
theorem complementeds.mk_bot {α : Type u_1} [lattice α] [bounded_order α] :
⟨⊥, _⟩ = ⊥
@[simp]
theorem complementeds.mk_top {α : Type u_1} [lattice α] [bounded_order α] :
⟨⊤, _⟩ = ⊤
@[protected, instance]
Equations
@[protected, instance]
Equations
@[protected, instance]
Equations
@[simp, norm_cast]
theorem complementeds.coe_sup {α : Type u_1} [distrib_lattice α] [bounded_order α] (a b : complementeds α) :
↑(a ⊔ b) = ↑a ⊔ ↑b
@[simp, norm_cast]
theorem complementeds.coe_inf {α : Type u_1} [distrib_lattice α] [bounded_order α] (a b : complementeds α) :
↑(a ⊓ b) = ↑a ⊓ ↑b
@[simp]
theorem complementeds.mk_sup_mk {α : Type u_1} [distrib_lattice α] [bounded_order α] {a b : α} (ha : is_complemented a) (hb : is_complemented b) :
⟨a, ha⟩ ⊔ ⟨b, hb⟩ = ⟨a ⊔ b, _⟩
@[simp]
theorem complementeds.mk_inf_mk {α : Type u_1} [distrib_lattice α] [bounded_order α] {a b : α} (ha : is_complemented a) (hb : is_complemented b) :
⟨a, ha⟩ ⊓ ⟨b, hb⟩ = ⟨a ⊓ b, _⟩
@[simp, norm_cast]
@[simp, norm_cast]
@[simp, norm_cast]