Atoms, Coatoms, and Simple Lattices #
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 #
is_atom aindicates that the only element belowais⊥.is_coatom aindicates that the only element aboveais⊤.
Atomic and Atomistic Lattices #
is_atomicindicates that every element other than⊥is above an atom.is_coatomicindicates that every element other than⊤is below a coatom.is_atomisticindicates that every element is theSupof a set of atoms.is_coatomisticindicates that every element is theInfof a set of coatoms.
Simple Lattices #
is_simple_orderindicates that an order has only two unique elements,⊥and⊤.is_simple_order.bounded_orderis_simple_order.distrib_lattice- Given an instance of
is_simple_order, we provide the following definitions. These are not made global instances as they contain data :
Main results #
is_atom_dual_iff_is_coatomandis_coatom_dual_iff_is_atomexpress the (definitional) duality ofis_atomandis_coatom.is_simple_order_iff_is_atom_topandis_simple_order_iff_is_coatom_botexpress the connection between atoms, coatoms, and simple latticesis_compl.is_atom_iff_is_coatomandis_compl.is_coatom_if_is_atom: In a modular bounded lattice, a complement of an atom is a coatom and vice versa.is_atomic_iff_is_coatomic: A modular complemented lattice is atomic iff it is coatomic.finite.to_is_atomic,finite.to_is_coatomic: Finite partial orders with bottom resp. top are atomic resp. coatomic.
Alias of the forward direction of bot_covby_iff.
Alias of the reverse direction of bot_covby_iff.
Alias of the reverse direction of is_coatom_dual_iff_is_atom.
Alias of the reverse direction of is_atom_dual_iff_is_coatom.
Alias of the forward direction of covby_top_iff.
Alias of the reverse direction of covby_top_iff.
A lattice is atomic iff every element other than ⊥ has an atom below it.
A lattice is coatomic iff every element other than ⊤ has a coatom above it.
A lattice is atomistic iff every element is a Sup of a set of atoms.
Instances of this typeclass
A lattice is coatomistic iff every element is an Inf of a set of coatoms.
Instances of this typeclass
An order is simple iff it has exactly two elements, ⊥ and ⊤.
A simple bounded_order induces a preorder. This is not an instance to prevent loops.
A simple partial ordered bounded_order induces a linear order.
This is not an instance to prevent loops.
Equations
- is_simple_order.linear_order = {le := partial_order.le infer_instance, lt := partial_order.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_total := _, decidable_le := λ (a b : α), dite (a = ⊥) (λ (ha : a = ⊥), decidable.is_true _) (λ (ha : ¬a = ⊥), dite (b = ⊤) (λ (hb : b = ⊤), decidable.is_true _) (λ (hb : ¬b = ⊤), decidable.is_false _)), decidable_eq := _inst_4, decidable_lt := decidable_lt_of_decidable_le (λ (a b : α), dite (a = ⊥) (λ (ha : a = ⊥), decidable.is_true _) (λ (ha : ¬a = ⊥), dite (b = ⊤) (λ (hb : b = ⊤), decidable.is_true _) (λ (hb : ¬b = ⊤), decidable.is_false _))), max := max_default (λ (a b : α), dite (a = ⊥) (λ (ha : a = ⊥), decidable.is_true _) (λ (ha : ¬a = ⊥), dite (b = ⊤) (λ (hb : b = ⊤), decidable.is_true _) (λ (hb : ¬b = ⊤), decidable.is_false _))), max_def := _, min := min_default (λ (a b : α), dite (a = ⊥) (λ (ha : a = ⊥), decidable.is_true _) (λ (ha : ¬a = ⊥), dite (b = ⊤) (λ (hb : b = ⊤), decidable.is_true _) (λ (hb : ¬b = ⊤), decidable.is_false _))), min_def := _}
Alias of is_simple_order.eq_bot_of_lt.
Alias of is_simple_order.eq_top_of_lt.
A simple partial ordered bounded_order induces a lattice.
This is not an instance to prevent loops
Equations
A lattice that is a bounded_order is a distributive lattice.
This is not an instance to prevent loops
Equations
- is_simple_order.distrib_lattice = {sup := lattice.sup infer_instance, le := lattice.le infer_instance, lt := lattice.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := lattice.inf infer_instance, inf_le_left := _, inf_le_right := _, le_inf := _, le_sup_inf := _}
Every simple lattice is isomorphic to bool, regardless of order.
Every simple lattice over a partial order is order-isomorphic to bool.
Equations
- is_simple_order.order_iso_bool = {to_equiv := {to_fun := is_simple_order.equiv_bool.to_fun, inv_fun := is_simple_order.equiv_bool.inv_fun, left_inv := _, right_inv := _}, map_rel_iff' := _}
A simple bounded_order is also a boolean_algebra.
Equations
- is_simple_order.boolean_algebra = {sup := distrib_lattice.sup is_simple_order.distrib_lattice, le := distrib_lattice.le is_simple_order.distrib_lattice, lt := distrib_lattice.lt is_simple_order.distrib_lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := distrib_lattice.inf is_simple_order.distrib_lattice, inf_le_left := _, inf_le_right := _, le_inf := _, le_sup_inf := _, compl := λ (x : α), ite (x = ⊥) ⊤ ⊥, sdiff := λ (x y : α), ite (x = ⊤ ∧ y = ⊥) ⊤ ⊥, himp := λ (x y : α), distrib_lattice.sup y (ite (x = ⊥) ⊤ ⊥), top := bounded_order.top (show bounded_order α, from _inst_7), bot := bounded_order.bot (show bounded_order α, from _inst_7), inf_compl_le_bot := _, top_le_sup_compl := _, le_top := _, bot_le := _, sdiff_eq := _, himp_eq := _}
A simple bounded_order is also complete.
Equations
- is_simple_order.complete_lattice = {sup := lattice.sup infer_instance, le := lattice.le infer_instance, lt := lattice.lt infer_instance, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := lattice.inf infer_instance, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := λ (s : set α), ite (⊤ ∈ s) ⊤ ⊥, le_Sup := _, Sup_le := _, Inf := λ (s : set α), ite (⊥ ∈ s) ⊥ ⊤, Inf_le := _, le_Inf := _, top := bounded_order.top infer_instance, bot := bounded_order.bot infer_instance, le_top := _, bot_le := _}
A simple bounded_order is also a complete_boolean_algebra.
Equations
- is_simple_order.complete_boolean_algebra = {sup := complete_lattice.sup is_simple_order.complete_lattice, le := complete_lattice.le is_simple_order.complete_lattice, lt := complete_lattice.lt is_simple_order.complete_lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := complete_lattice.inf is_simple_order.complete_lattice, inf_le_left := _, inf_le_right := _, le_inf := _, le_sup_inf := _, compl := boolean_algebra.compl is_simple_order.boolean_algebra, sdiff := boolean_algebra.sdiff is_simple_order.boolean_algebra, himp := boolean_algebra.himp is_simple_order.boolean_algebra, top := complete_lattice.top is_simple_order.complete_lattice, bot := complete_lattice.bot is_simple_order.complete_lattice, inf_compl_le_bot := _, top_le_sup_compl := _, le_top := _, bot_le := _, sdiff_eq := _, himp_eq := _, Sup := complete_lattice.Sup is_simple_order.complete_lattice, le_Sup := _, Sup_le := _, Inf := complete_lattice.Inf is_simple_order.complete_lattice, Inf_le := _, le_Inf := _, inf_Sup_le_supr_inf := _, infi_sup_le_sup_Inf := _}