⊤ 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 #
<Top/Bot> α: Typeclasses to declare the⊤/⊥notation.Order<Top/Bot> α: Order with a top/bottom element.BoundedOrder α: Order with a top and bottom element.
Top, bottom element #
An order is (noncomputably) either an OrderTop or a NoTopOrder. Use as
cases topOrderOrNoTopOrder α.
Instances For
An order is (noncomputably) either an OrderBot or a NoBotOrder. Use as
cases botOrderOrNoBotOrder α.
Instances For
Alias of ne_top_of_lt.
Alias of lt_top_of_lt.
@[simp]
@[simp]
@[simp]
@[simp]
Alias of the forward direction of isMax_iff_eq_top.
Alias of the forward direction of isTop_iff_eq_top.
@[simp]
@[simp]
theorem
eq_top_mono
{α : Type u}
[PartialOrder α]
[OrderTop α]
{a b : α}
(h : a ≤ b)
(h₂ : a = ⊤)
:
b = ⊤
theorem
eq_bot_mono
{α : Type u}
[PartialOrder α]
[OrderBot α]
{a b : α}
(h : b ≤ a)
(h₂ : a = ⊥)
:
b = ⊥
@[simp]
@[simp]
theorem
ne_top_of_le_ne_top
{α : Type u}
[PartialOrder α]
[OrderTop α]
{a b : α}
(hb : b ≠ ⊤)
(hab : a ≤ b)
:
a ≠ ⊤
theorem
ne_bot_of_le_ne_bot
{α : Type u}
[PartialOrder α]
[OrderBot α]
{a b : α}
(hb : b ≠ ⊥)
(hab : b ≤ a)
:
a ≠ ⊥
theorem
OrderTop.ext_top
{α : Type u_1}
{hA : PartialOrder α}
(A : OrderTop α)
{hB : PartialOrder α}
(B : OrderTop α)
(H : ∀ (x y : α), x ≤ y ↔ x ≤ y)
:
theorem
OrderBot.ext_bot
{α : Type u_1}
{hA : PartialOrder α}
(A : OrderBot α)
{hB : PartialOrder α}
(B : OrderBot α)
(H : ∀ (y x : α), y ≤ x ↔ y ≤ x)
:
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[simp]
@[simp]
@[simp]
@[simp]
@[deprecated not_bot_lt_iff (since := "2025-12-03")]
theorem
eq_bot_of_minimal
{α : Type u}
[PartialOrder α]
[OrderBot α]
{a : α}
(h : ∀ (b : α), ¬b < a)
:
a = ⊥
Bounded order #
@[implicit_reducible]
Function lattices #
@[implicit_reducible]
instance
Pi.instBotForall
{ι : Type u_1}
{α' : ι → Type u_2}
[(i : ι) → Bot (α' i)]
:
Bot ((i : ι) → α' i)
@[implicit_reducible]
instance
Pi.instTopForall
{ι : Type u_1}
{α' : ι → Type u_2}
[(i : ι) → Top (α' i)]
:
Top ((i : ι) → α' i)
@[simp]
@[simp]
@[simp]
@[simp]
@[implicit_reducible]
instance
Pi.instOrderBot
{ι : Type u_1}
{α' : ι → Type u_2}
[(i : ι) → LE (α' i)]
[(i : ι) → OrderBot (α' i)]
:
OrderBot ((i : ι) → α' i)
@[implicit_reducible]
instance
Pi.instOrderTop
{ι : Type u_1}
{α' : ι → Type u_2}
[(i : ι) → LE (α' i)]
[(i : ι) → OrderTop (α' i)]
:
OrderTop ((i : ι) → α' i)
@[implicit_reducible]
instance
Pi.instBoundedOrder
{ι : Type u_1}
{α' : ι → Type u_2}
[(i : ι) → LE (α' i)]
[(i : ι) → BoundedOrder (α' i)]
:
BoundedOrder ((i : ι) → α' i)
theorem
eq_bot_of_bot_eq_top
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊥ = ⊤)
(x : α)
:
x = ⊥
theorem
eq_top_of_top_eq_bot
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊤ = ⊥)
(x : α)
:
x = ⊤
theorem
eq_top_of_bot_eq_top
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊥ = ⊤)
(x : α)
:
x = ⊤
theorem
eq_bot_of_top_eq_bot
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊤ = ⊥)
(x : α)
:
x = ⊥
theorem
subsingleton_of_top_le_bot
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(h : ⊤ ≤ ⊥)
:
Subsingleton α
theorem
subsingleton_of_bot_eq_top
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊥ = ⊤)
:
Subsingleton α
theorem
subsingleton_of_top_eq_bot
{α : Type u}
[PartialOrder α]
[BoundedOrder α]
(hα : ⊤ = ⊥)
:
Subsingleton α
@[reducible, inline]
abbrev
BoundedOrder.lift
{α : Type u}
{β : Type v}
[LE α]
[Top α]
[Bot α]
[LE β]
[BoundedOrder β]
(f : α → β)
(map_le : ∀ (a b : α), f a ≤ f b → a ≤ b)
(map_top : f ⊤ = ⊤)
(map_bot : f ⊥ = ⊥)
:
Pullback a BoundedOrder.
Instances For
Subtype, order dual, product lattices #
@[reducible, inline]
abbrev
Subtype.boundedOrder
{α : Type u}
{p : α → Prop}
[LE α]
[BoundedOrder α]
(hbot : p ⊥)
(htop : p ⊤)
:
BoundedOrder (Subtype p)
A subtype remains a bounded order if the property holds at ⊥ and ⊤.
Instances For
@[simp]
theorem
Subtype.mk_bot
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderBot α]
[OrderBot (Subtype p)]
(hbot : p ⊥)
:
@[simp]
theorem
Subtype.mk_top
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderTop α]
[OrderTop (Subtype p)]
(htop : p ⊤)
:
theorem
Subtype.coe_bot
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderBot α]
[OrderBot (Subtype p)]
(hbot : p ⊥)
:
theorem
Subtype.coe_top
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderTop α]
[OrderTop (Subtype p)]
(htop : p ⊤)
:
@[simp]
theorem
Subtype.coe_eq_bot_iff
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderBot α]
[OrderBot (Subtype p)]
(hbot : p ⊥)
{x : { x : α // p x }}
:
@[simp]
theorem
Subtype.coe_eq_top_iff
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderTop α]
[OrderTop (Subtype p)]
(htop : p ⊤)
{x : { x : α // p x }}
:
@[simp]
theorem
Subtype.mk_eq_bot_iff
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderBot α]
[OrderBot (Subtype p)]
(hbot : p ⊥)
{x : α}
(hx : p x)
:
@[simp]
theorem
Subtype.mk_eq_top_iff
{α : Type u}
{p : α → Prop}
[PartialOrder α]
[OrderTop α]
[OrderTop (Subtype p)]
(htop : p ⊤)
{x : α}
(hx : p x)
:
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
instance
Prod.instBoundedOrder
(α : Type u)
(β : Type v)
[LE α]
[LE β]
[BoundedOrder α]
[BoundedOrder β]
:
BoundedOrder (α × β)
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[simp]
@[simp]
@[simp]