⊤ and ⊥, bounded lattices and variants #
This file defines top and bottom elements (greatest and least elements) of a type, the bounded
variants of different kinds of lattices, sets up the typeclass hierarchy between them and provides
instances for Prop and fun.
Main declarations #
: Typeclasses to declare theα ⊤/⊥notation.Order: Order with a top/bottom element.α BoundedOrder α: Order with a top and bottom element.
Common lattices #
- Distributive lattices with a bottom element. Notated by
[DistribLattice α] [OrderBot α]It captures the properties ofDisjointthat are common toGeneralizedBooleanAlgebraandDistribLatticewhenOrderBot. - Bounded and distributive lattice. Notated by
[DistribLattice α] [BoundedOrder α]. Typical examples includePropandDet α.
Top, bottom element #
The top (⊤, \top) element
Equations
- «term⊤» = Lean.ParserDescr.node `term⊤ 1024 (Lean.ParserDescr.symbol "⊤")
Instances For
The bot (⊥, \bot) element
Equations
- «term⊥» = Lean.ParserDescr.node `term⊥ 1024 (Lean.ParserDescr.symbol "⊥")
Instances For
Equations
Equations
An order is (noncomputably) either an OrderTop or a NoTopOrder. Use as
casesI topOrderOrNoTopOrder α.
Equations
- topOrderOrNoTopOrder α = if H : ∀ (a : α), ∃ b, ¬b ≤ a then PSum.inr (_ : NoTopOrder α) else PSum.inl (OrderTop.mk (_ : ∀ (b : α), b ≤ Classical.choose (_ : ∃ x, ∀ (a : α), a ≤ x)))
Instances For
Alias of ne_top_of_lt.
Alias of the forward direction of isMax_iff_eq_top.
Alias of the forward direction of isTop_iff_eq_top.
An order is (noncomputably) either an OrderBot or a NoBotOrder. Use as
casesI botOrderOrNoBotOrder α.
Equations
- botOrderOrNoBotOrder α = if H : ∀ (a : α), ∃ b, ¬a ≤ b then PSum.inr (_ : NoBotOrder α) else PSum.inl (OrderBot.mk (_ : ∀ (b : α), Classical.choose (_ : ∃ x, ∀ (a : α), x ≤ a) ≤ b))
Instances For
Equations
- OrderDual.orderTop α = let src := inferInstanceAs (Top αᵒᵈ); OrderTop.mk (_ : ∀ {a : α}, ⊥ ≤ a)
Equations
- OrderDual.orderBot α = let src := inferInstanceAs (Bot αᵒᵈ); OrderBot.mk (_ : ∀ {a : α}, a ≤ ⊤)
Alias of ne_bot_of_gt.
Alias of the forward direction of isMin_iff_eq_bot.
Alias of the forward direction of isBot_iff_eq_bot.
Bounded order #
Equations
- OrderDual.boundedOrder α = let src := inferInstanceAs (OrderTop αᵒᵈ); let src_1 := inferInstanceAs (OrderBot αᵒᵈ); BoundedOrder.mk
In this section we prove some properties about monotone and antitone operations on Prop #
Function lattices #
Equations
- Pi.orderTop = let src := inferInstanceAs (Top ((i : ι) → α' i)); OrderTop.mk (_ : ∀ (x : (i : ι) → α' i) (x_1 : ι), x x_1 ≤ ⊤)
Equations
- Pi.orderBot = let src := inferInstanceAs (Bot ((i : ι) → α' i)); OrderBot.mk (_ : ∀ (x : (i : ι) → α' i) (x_1 : ι), ⊥ ≤ x x_1)
Equations
- Pi.boundedOrder = let src := inferInstanceAs (OrderTop ((i : ι) → α' i)); let src_1 := inferInstanceAs (OrderBot ((i : ι) → α' i)); BoundedOrder.mk
Pullback a BoundedOrder.
Equations
- BoundedOrder.lift f map_le map_top map_bot = let src := OrderTop.lift f map_le map_top; let src_1 := OrderBot.lift f map_le map_bot; BoundedOrder.mk
Instances For
Subtype, order dual, product lattices #
A subtype remains a ⊥-order if the property holds at ⊥.
Equations
- Subtype.orderBot hbot = OrderBot.mk (_ : ∀ (x : { x // p x }), ⊥ ≤ ↑x)
Instances For
A subtype remains a ⊤-order if the property holds at ⊤.
Equations
- Subtype.orderTop htop = OrderTop.mk (_ : ∀ (x : { x // p x }), ↑x ≤ ⊤)
Instances For
A subtype remains a bounded order if the property holds at ⊥ and ⊤.
Equations
- Subtype.boundedOrder hbot htop = let src := Subtype.orderTop htop; let src_1 := Subtype.orderBot hbot; BoundedOrder.mk
Instances For
Equations
- Prod.boundedOrder α β = let src := inferInstanceAs (OrderTop (α × β)); let src_1 := inferInstanceAs (OrderBot (α × β)); BoundedOrder.mk
Equations
- ULift.instOrderBotULiftInstLEULift = OrderBot.lift ULift.down (_ : ∀ (x x_1 : ULift.{v, u} α), x.down ≤ x_1.down → x ≤ x_1) (_ : ⊥.down = ⊥)
Equations
- ULift.instOrderTopULiftInstLEULift = OrderTop.lift ULift.down (_ : ∀ (x x_1 : ULift.{v, u} α), x.down ≤ x_1.down → x ≤ x_1) (_ : ⊤.down = ⊤)
Equations
- ULift.instBoundedOrderULiftInstLEULift = BoundedOrder.mk