Frames, completely distributive lattices and complete Boolean algebras #
In this file we define and provide API for (co)frames, completely distributive lattices and complete Boolean algebras.
We distinguish two different distributivity properties:
inf_iSup_eq : (a ⊓ ⨆ i, f i) = ⨆ i, a ⊓ f i(finite⊓distributes over infinite⨆). This is required byFrame,CompleteDistribLattice, andCompleteBooleanAlgebra(Coframe, etc., require the dual property).iInf_iSup_eq : (⨅ i, ⨆ j, f i j) = ⨆ s, ⨅ i, f i (s i)(infinite⨅distributes over infinite⨆). This stronger property is called "completely distributive", and is required byCompletelyDistribLatticeandCompleteAtomicBooleanAlgebra.
Typeclasses #
Order.Frame: Frame: A complete lattice whose⊓distributes over⨆.Order.Coframe: Coframe: A complete lattice whose⊔distributes over⨅.CompleteDistribLattice: Complete distributive lattices: A complete lattice whose⊓and⊔distribute over⨆and⨅respectively.CompleteBooleanAlgebra: Complete Boolean algebra: A Boolean algebra whose⊓and⊔distribute over⨆and⨅respectively.CompletelyDistribLattice: Completely distributive lattices: A complete lattice whose⨅and⨆satisfyiInf_iSup_eq.CompleteBooleanAlgebra: Complete Boolean algebra: A Boolean algebra whose⊓and⊔distribute over⨆and⨅respectively.CompleteAtomicBooleanAlgebra: Complete atomic Boolean algebra: A complete Boolean algebra which is additionally completely distributive. (This implies that it's (co)atom(ist)ic.)
A set of opens gives rise to a topological space precisely if it forms a frame. Such a frame is also
completely distributive, but not all frames are. Filter is a coframe but not a completely
distributive lattice.
References #
- Wikipedia, Complete Heyting algebra
- [Francis Borceux, Handbook of Categorical Algebra III][borceux-vol3]
Structure containing the minimal axioms required to check that an order is a frame. Do NOT use,
except for implementing Order.Frame via Order.Frame.ofMinimalAxioms.
This structure omits the himp, compl fields, which can be recovered using
Order.Frame.ofMinimalAxioms.
Instances
Structure containing the minimal axioms required to check that an order is a coframe. Do NOT
use, except for implementing Order.Coframe via Order.Coframe.ofMinimalAxioms.
This structure omits the sdiff, hnot fields, which can be recovered using
Order.Coframe.ofMinimalAxioms.
Instances
A frame, aka complete Heyting algebra, is a complete lattice whose ⊓ distributes over ⨆.
Instances
⊓ distributes over ⨆.
A coframe, aka complete Brouwer algebra or complete co-Heyting algebra, is a complete lattice
whose ⊔ distributes over ⨅.
Instances
⊔ distributes over ⨅.
Structure containing the minimal axioms required to check that an order is a complete
distributive lattice. Do NOT use, except for implementing CompleteDistribLattice via
CompleteDistribLattice.ofMinimalAxioms.
This structure omits the himp, compl, sdiff, hnot fields, which can be recovered using
CompleteDistribLattice.ofMinimalAxioms.
Instances For
A complete distributive lattice is a complete lattice whose ⊔ and ⊓ respectively
distribute over ⨅ and ⨆.
- sup : α → α → α
- inf : α → α → α
- top : α
- bot : α
- himp : α → α → α
- compl : α → α
- sdiff : α → α → α
- hnot : α → α
Instances
Structure containing the minimal axioms required to check that an order is a completely
distributive. Do NOT use, except for implementing CompletelyDistribLattice via
CompletelyDistribLattice.ofMinimalAxioms.
This structure omits the himp, compl, sdiff, hnot fields, which can be recovered using
CompletelyDistribLattice.ofMinimalAxioms.
Instances For
The Order.Frame.MinimalAxioms element corresponding to a frame.
Equations
- Order.Frame.MinimalAxioms.of = { toCompleteLattice := inst✝.toCompleteLattice, inf_sSup_le_iSup_inf := ⋯ }
Instances For
Construct a frame instance using the minimal amount of work needed.
This sets a ⇨ b := sSup {c | c ⊓ a ≤ b} and aᶜ := a ⇨ ⊥.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Order.Coframe.MinimalAxioms element corresponding to a frame.
Equations
- Order.Coframe.MinimalAxioms.of = { toCompleteLattice := inst✝.toCompleteLattice, iInf_sup_le_sup_sInf := ⋯ }
Instances For
Construct a coframe instance using the minimal amount of work needed.
This sets a \ b := sInf {c | a ≤ b ⊔ c} and ¬a := ⊤ \ a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The CompleteDistribLattice.MinimalAxioms element corresponding to a complete distrib lattice.
Equations
- CompleteDistribLattice.MinimalAxioms.of = { toCompleteLattice := inst✝.toCompleteLattice, inf_sSup_le_iSup_inf := ⋯, iInf_sup_le_sup_sInf := ⋯ }
Instances For
Turn minimal axioms for CompleteDistribLattice into minimal axioms for Order.Frame.
Equations
- minAx.toFrame = minAx.toFrameMinimalAxioms
Instances For
Turn minimal axioms for CompleteDistribLattice into minimal axioms for Order.Coframe.
Equations
- minAx.toCoframe = { toCompleteLattice := minAx.toCompleteLattice, iInf_sup_le_sup_sInf := ⋯ }
Instances For
Construct a complete distrib lattice instance using the minimal amount of work needed.
This sets a ⇨ b := sSup {c | c ⊓ a ≤ b}, aᶜ := a ⇨ ⊥, a \ b := sInf {c | a ≤ b ⊔ c} and
¬a := ⊤ \ a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turn minimal axioms for CompletelyDistribLattice into minimal axioms for
CompleteDistribLattice.
Equations
- minAx.toCompleteDistribLattice = { toCompleteLattice := minAx.toCompleteLattice, inf_sSup_le_iSup_inf := ⋯, iInf_sup_le_sup_sInf := ⋯ }
Instances For
The CompletelyDistribLattice.MinimalAxioms element corresponding to a frame.
Equations
- CompletelyDistribLattice.MinimalAxioms.of = { toCompleteLattice := inst✝.toCompleteLattice, iInf_iSup_eq := ⋯ }
Instances For
Construct a completely distributive lattice instance using the minimal amount of work needed.
This sets a ⇨ b := sSup {c | c ⊓ a ≤ b}, aᶜ := a ⇨ ⊥, a \ b := sInf {c | a ≤ b ⊔ c} and
¬a := ⊤ \ a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
Equations
- Prod.instFrame = { toCompleteLattice := Prod.instCompleteLattice, toHImp := Prod.instHeytingAlgebra.toHImp, le_himp_iff := ⋯, toHasCompl := Prod.instHeytingAlgebra.toHasCompl, himp_bot := ⋯ }
Equations
- Pi.instFrame = { toCompleteLattice := Pi.instCompleteLattice, toHImp := Pi.instHeytingAlgebra.toHImp, le_himp_iff := ⋯, toHasCompl := Pi.instHeytingAlgebra.toHasCompl, himp_bot := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Coframe.toDistribLattice = { toLattice := inst✝.toLattice, le_sup_inf := ⋯ }
Equations
- Prod.instCoframe = { toCompleteLattice := Prod.instCompleteLattice, toSDiff := Prod.instCoheytingAlgebra.toSDiff, sdiff_le_iff := ⋯, toHNot := Prod.instCoheytingAlgebra.toHNot, top_sdiff := ⋯ }
Equations
- Pi.instCoframe = { toCompleteLattice := Pi.instCompleteLattice, toSDiff := Pi.instCoheytingAlgebra.toSDiff, sdiff_le_iff := ⋯, toHNot := Pi.instCoheytingAlgebra.toHNot, top_sdiff := ⋯ }
Equations
- OrderDual.instCompleteDistribLattice = { toFrame := OrderDual.instFrame, toSDiff := OrderDual.instCoframe.toSDiff, sdiff_le_iff := ⋯, toHNot := OrderDual.instCoframe.toHNot, top_sdiff := ⋯ }
Equations
- Prod.instCompleteDistribLattice = { toFrame := Prod.instFrame, toSDiff := Prod.instCoframe.toSDiff, sdiff_le_iff := ⋯, toHNot := Prod.instCoframe.toHNot, top_sdiff := ⋯ }
Equations
- Pi.instCompleteDistribLattice = { toFrame := Pi.instFrame, toSDiff := Pi.instCoframe.toSDiff, sdiff_le_iff := ⋯, toHNot := Pi.instCoframe.toHNot, top_sdiff := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
A complete Boolean algebra is a Boolean algebra that is also a complete distributive lattice.
It is only completely distributive if it is also atomic.
Instances
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The symmetric difference of two iSups is at most the iSup of the symmetric differences.
A biSup version of iSup_symmDiff_iSup_le.
A complete atomic Boolean algebra is a complete Boolean algebra that is also completely distributive.
We take iSup_iInf_eq as the definition here, and prove later on that this implies atomicity.
Instances
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Pi.instCompleteAtomicBooleanAlgebra = { toCompleteBooleanAlgebra := Pi.instCompleteBooleanAlgebra, iInf_iSup_eq := ⋯ }
Equations
- OrderDual.instCompleteAtomicBooleanAlgebra = { toCompleteBooleanAlgebra := OrderDual.instCompleteBooleanAlgebra, iInf_iSup_eq := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Pullback an Order.Frame.MinimalAxioms along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback an Order.Coframe.MinimalAxioms along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback an Order.Frame along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback an Order.Coframe along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompleteDistribLattice.MinimalAxioms along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompleteDistribLattice along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompletelyDistribLattice.MinimalAxioms along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompletelyDistribLattice along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompleteBooleanAlgebra along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pullback a CompleteAtomicBooleanAlgebra along an injection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.