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
@[class]
structure complemented_lattice (α : Type u_2) [lattice α] [bounded_order α] :
Prop

A complemented bounded lattice is one where every element has a (not necessarily unique) complement.

Instances of this typeclass
@[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]