mathlib3 documentation

order.atoms

Atoms, Coatoms, and Simple Lattices #

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

This module defines atoms, which are minimal non-⊥ elements in bounded lattices, simple lattices, which are lattices with only two elements, and related ideas.

Main definitions #

Atoms and Coatoms #

Atomic and Atomistic Lattices #

Simple Lattices #

Main results #

def is_atom {α : Type u_1} [preorder α] [order_bot α] (a : α) :
Prop

An atom of an order_bot is an element with no other element between it and ⊥, which is not ⊥.

Equations
theorem is_atom.Iic {α : Type u_1} [preorder α] [order_bot α] {a x : α} (ha : is_atom a) (hax : a ≤ x) :
is_atom ⟨a, hax⟩
theorem is_atom.of_is_atom_coe_Iic {α : Type u_1} [preorder α] [order_bot α] {x : α} {a : ↥(set.Iic x)} (ha : is_atom a) :
theorem is_atom_iff {α : Type u_1} [preorder α] [order_bot α] {a : α} :
is_atom a ↔ a ≠ ⊥ ∧ ∀ (b : α), b ≠ ⊥ → b ≤ a → a ≤ b
theorem is_atom.lt_iff {α : Type u_1} [partial_order α] [order_bot α] {a x : α} (h : is_atom a) :
x < a ↔ x = ⊥
theorem is_atom.le_iff {α : Type u_1} [partial_order α] [order_bot α] {a x : α} (h : is_atom a) :
x ≤ a ↔ x = ⊥ ∨ x = a
theorem is_atom.Iic_eq {α : Type u_1} [partial_order α] [order_bot α] {a : α} (h : is_atom a) :
set.Iic a = {⊥, a}
@[simp]
theorem bot_covby_iff {α : Type u_1} [partial_order α] [order_bot α] {a : α} :
theorem covby.is_atom {α : Type u_1} [partial_order α] [order_bot α] {a : α} :

Alias of the forward direction of bot_covby_iff.

theorem is_atom.bot_covby {α : Type u_1} [partial_order α] [order_bot α] {a : α} :

Alias of the reverse direction of bot_covby_iff.

def is_coatom {α : Type u_1} [preorder α] [order_top α] (a : α) :
Prop

A coatom of an order_top is an element with no other element between it and ⊤, which is not ⊤.

Equations
@[simp]
@[simp]
theorem is_atom.dual {α : Type u_1} [preorder α] [order_bot α] {a : α} :

Alias of the reverse direction of is_coatom_dual_iff_is_atom.

theorem is_coatom.dual {α : Type u_1} [preorder α] [order_top α] {a : α} :

Alias of the reverse direction of is_atom_dual_iff_is_coatom.

theorem is_coatom.Ici {α : Type u_1} [preorder α] [order_top α] {a x : α} (ha : is_coatom a) (hax : x ≤ a) :
is_coatom ⟨a, hax⟩
theorem is_coatom.of_is_coatom_coe_Ici {α : Type u_1} [preorder α] [order_top α] {x : α} {a : ↥(set.Ici x)} (ha : is_coatom a) :
theorem is_coatom_iff {α : Type u_1} [preorder α] [order_top α] {a : α} :
is_coatom a ↔ a ≠ ⊤ ∧ ∀ (b : α), b ≠ ⊤ → a ≤ b → b ≤ a
theorem is_coatom.lt_iff {α : Type u_1} [partial_order α] [order_top α] {a x : α} (h : is_coatom a) :
a < x ↔ x = ⊤
theorem is_coatom.le_iff {α : Type u_1} [partial_order α] [order_top α] {a x : α} (h : is_coatom a) :
a ≤ x ↔ x = ⊤ ∨ x = a
theorem is_coatom.Ici_eq {α : Type u_1} [partial_order α] [order_top α] {a : α} (h : is_coatom a) :
set.Ici a = {⊤, a}
@[simp]
theorem covby_top_iff {α : Type u_1} [partial_order α] [order_top α] {a : α} :
theorem covby.is_coatom {α : Type u_1} [partial_order α] [order_top α] {a : α} :

Alias of the forward direction of covby_top_iff.

theorem is_coatom.covby_top {α : Type u_1} [partial_order α] [order_top α] {a : α} :

Alias of the reverse direction of covby_top_iff.

@[simp]
theorem set.Ici.is_atom_iff {α : Type u_1} [partial_order α] {a : α} {b : ↥(set.Ici a)} :
@[simp]
theorem set.Iic.is_coatom_iff {α : Type u_1} [partial_order α] {b : α} {a : ↥(set.Iic b)} :
theorem covby_iff_atom_Ici {α : Type u_1} [partial_order α] {a b : α} (h : a ≤ b) :
a ⋖ b ↔ is_atom ⟨b, h⟩
theorem covby_iff_coatom_Iic {α : Type u_1} [partial_order α] {a b : α} (h : a ≤ b) :
a ⋖ b ↔ is_coatom ⟨a, h⟩
theorem is_atom.inf_eq_bot_of_ne {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (ha : is_atom a) (hb : is_atom b) (hab : a ≠ b) :
a ⊓ b = ⊥
theorem is_atom.disjoint_of_ne {α : Type u_1} [semilattice_inf α] [order_bot α] {a b : α} (ha : is_atom a) (hb : is_atom b) (hab : a ≠ b) :
theorem is_coatom.sup_eq_top_of_ne {α : Type u_1} [semilattice_sup α] [order_top α] {a b : α} (ha : is_coatom a) (hb : is_coatom b) (hab : a ≠ b) :
a ⊔ b = ⊤
@[class]
structure is_atomic (α : Type u_1) [partial_order α] [order_bot α] :
Prop

A lattice is atomic iff every element other than ⊥ has an atom below it.

Instances of this typeclass
theorem is_atomic_iff (α : Type u_1) [partial_order α] [order_bot α] :
is_atomic α ↔ ∀ (b : α), b = ⊥ ∨ ∃ (a : α), is_atom a ∧ a ≤ b
@[class]
structure is_coatomic (α : Type u_1) [partial_order α] [order_top α] :
Prop

A lattice is coatomic iff every element other than ⊤ has a coatom above it.

Instances of this typeclass
theorem is_coatomic_iff (α : Type u_1) [partial_order α] [order_top α] :
is_coatomic α ↔ ∀ (b : α), b = ⊤ ∨ ∃ (a : α), is_coatom a ∧ b ≤ a
@[protected, instance]
@[protected, instance]
def is_atomic.set.Iic.is_atomic {α : Type u_1} [partial_order α] [order_bot α] [is_atomic α] {x : α} :
@[protected, instance]
@[protected, instance]
@[class]
structure is_atomistic (α : Type u_1) [complete_lattice α] :
Prop

A lattice is atomistic iff every element is a Sup of a set of atoms.

Instances of this typeclass
@[class]
structure is_coatomistic (α : Type u_1) [complete_lattice α] :
Prop

A lattice is coatomistic iff every element is an Inf of a set of coatoms.

Instances of this typeclass
@[protected, instance]
@[protected, instance]
@[simp]
theorem Sup_atoms_le_eq {α : Type u_1} [complete_lattice α] [is_atomistic α] (b : α) :
has_Sup.Sup {a : α | is_atom a ∧ a ≤ b} = b
@[simp]
theorem Sup_atoms_eq_top {α : Type u_1} [complete_lattice α] [is_atomistic α] :
has_Sup.Sup {a : α | is_atom a} = ⊤
theorem le_iff_atom_le_imp {α : Type u_1} [complete_lattice α] [is_atomistic α] {a b : α} :
a ≤ b ↔ ∀ (c : α), is_atom c → c ≤ a → c ≤ b
@[protected, instance]
@[protected, instance]
@[class]
structure is_simple_order (α : Type u_3) [has_le α] [bounded_order α] :
Prop

An order is simple iff it has exactly two elements, ⊥ and ⊤.

Instances of this typeclass
@[protected, instance]
@[protected]

A simple bounded_order induces a preorder. This is not an instance to prevent loops.

Equations
@[protected]

A simple partial ordered bounded_order induces a linear order. This is not an instance to prevent loops.

Equations
@[simp]
theorem is_atom_top {α : Type u_1} [partial_order α] [bounded_order α] [is_simple_order α] :
@[simp]
theorem is_simple_order.eq_bot_of_lt {α : Type u_1} [preorder α] [bounded_order α] [is_simple_order α] {a b : α} (h : a < b) :
a = ⊥
theorem is_simple_order.eq_top_of_lt {α : Type u_1} [preorder α] [bounded_order α] [is_simple_order α] {a b : α} (h : a < b) :
b = ⊤
theorem is_simple_order.has_lt.lt.eq_bot {α : Type u_1} [preorder α] [bounded_order α] [is_simple_order α] {a b : α} (h : a < b) :
a = ⊥

Alias of is_simple_order.eq_bot_of_lt.

theorem is_simple_order.has_lt.lt.eq_top {α : Type u_1} [preorder α] [bounded_order α] [is_simple_order α] {a b : α} (h : a < b) :
b = ⊤

Alias of is_simple_order.eq_top_of_lt.

@[protected]

A simple partial ordered bounded_order induces a lattice. This is not an instance to prevent loops

Equations
@[protected]

A lattice that is a bounded_order is a distributive lattice. This is not an instance to prevent loops

Equations
@[protected, instance]
@[protected, instance]

Every simple lattice is isomorphic to bool, regardless of order.

Equations

Every simple lattice over a partial order is order-isomorphic to bool.

Equations
@[protected, instance]
@[protected, instance]
theorem order_embedding.is_atom_of_map_bot_of_image {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] (f : β ↪o α) (hbot : ⇑f ⊥ = ⊥) {b : β} (hb : is_atom (⇑f b)) :
theorem order_embedding.is_coatom_of_map_top_of_image {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] (f : β ↪o α) (htop : ⇑f ⊤ = ⊤) {b : β} (hb : is_coatom (⇑f b)) :
theorem galois_insertion.is_atom_of_u_bot {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] {l : α → β} {u : β → α} (gi : galois_insertion l u) (hbot : u ⊥ = ⊥) {b : β} (hb : is_atom (u b)) :
theorem galois_insertion.is_atom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [is_atomic α] [order_bot β] {l : α → β} {u : β → α} (gi : galois_insertion l u) (hbot : u ⊥ = ⊥) (h_atom : ∀ (a : α), is_atom a → u (l a) = a) (a : α) :
theorem galois_insertion.is_atom_iff' {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [is_atomic α] [order_bot β] {l : α → β} {u : β → α} (gi : galois_insertion l u) (hbot : u ⊥ = ⊥) (h_atom : ∀ (a : α), is_atom a → u (l a) = a) (b : β) :
theorem galois_insertion.is_coatom_of_image {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] {l : α → β} {u : β → α} (gi : galois_insertion l u) {b : β} (hb : is_coatom (u b)) :
theorem galois_insertion.is_coatom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [is_coatomic α] [order_top β] {l : α → β} {u : β → α} (gi : galois_insertion l u) (h_coatom : ∀ (a : α), is_coatom a → u (l a) = a) (b : β) :
theorem galois_coinsertion.is_coatom_of_l_top {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] {l : α → β} {u : β → α} (gi : galois_coinsertion l u) (hbot : l ⊤ = ⊤) {a : α} (hb : is_coatom (l a)) :
theorem galois_coinsertion.is_coatom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] [is_coatomic β] {l : α → β} {u : β → α} (gi : galois_coinsertion l u) (htop : l ⊤ = ⊤) (h_coatom : ∀ (b : β), is_coatom b → l (u b) = b) (b : β) :
theorem galois_coinsertion.is_coatom_iff' {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] [is_coatomic β] {l : α → β} {u : β → α} (gi : galois_coinsertion l u) (htop : l ⊤ = ⊤) (h_coatom : ∀ (b : β), is_coatom b → l (u b) = b) (a : α) :
theorem galois_coinsertion.is_atom_of_image {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] {l : α → β} {u : β → α} (gi : galois_coinsertion l u) {a : α} (hb : is_atom (l a)) :
theorem galois_coinsertion.is_atom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] [is_atomic β] {l : α → β} {u : β → α} (gi : galois_coinsertion l u) (h_atom : ∀ (b : β), is_atom b → l (u b) = b) (a : α) :
@[simp]
theorem order_iso.is_atom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] (f : α ≃o β) (a : α) :
@[simp]
theorem order_iso.is_coatom_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] (f : α ≃o β) (a : α) :
theorem order_iso.is_simple_order {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [bounded_order α] [bounded_order β] [h : is_simple_order β] (f : α ≃o β) :
@[protected]
theorem order_iso.is_atomic_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_bot α] [order_bot β] (f : α ≃o β) :
@[protected]
theorem order_iso.is_coatomic_iff {α : Type u_1} {β : Type u_2} [partial_order α] [partial_order β] [order_top α] [order_top β] (f : α ≃o β) :
theorem is_compl.is_atom_iff_is_coatom {α : Type u_1} [lattice α] [bounded_order α] [is_modular_lattice α] {a b : α} (hc : is_compl a b) :
theorem is_compl.is_coatom_iff_is_atom {α : Type u_1} [lattice α] [bounded_order α] [is_modular_lattice α] {a b : α} (hc : is_compl a b) :
theorem set.is_atom_singleton {α : Type u_1} (x : α) :
theorem set.is_atom_iff {α : Type u_1} (s : set α) :
is_atom s ↔ ∃ (x : α), s = {x}
theorem set.is_coatom_iff {α : Type u_1} (s : set α) :
is_coatom s ↔ ∃ (x : α), s = {x}ᶜ
theorem set.is_coatom_singleton_compl {α : Type u_1} (x : α) :
@[protected, instance]
def set.is_atomistic {α : Type u_1} :
@[protected, instance]
def set.is_coatomistic {α : Type u_1} :