⊤ 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 ofDisjoint
that are common toGeneralizedBooleanAlgebra
andDistribLattice
whenOrderBot
. - Bounded and distributive lattice. Notated by
[DistribLattice α] [BoundedOrder α]
. Typical examples includeProp
andDet α
.
Top, bottom element #
- top : α
The top (
⊤
,\top
) element
Typeclass for the ⊤
(\top
) notation
Instances
- AddGroupTopology.instTopAddGroupTopology
- AddSubgroup.instTopAddSubgroup
- AddSubmonoid.instTopAddSubmonoid
- AddSubsemigroup.instTopSubsemigroup
- Associates.instTopAssociates
- Filter.instTopFilter
- GroupTopology.instTopGroupTopology
- InfHom.instTopInfHomToInf
- LowerSet.instTopLowerSet
- OrderDual.top
- OrderHom.instTopOrderHom
- PartENat.instTopPartENat
- Pi.instTopForAll
- Prod.top
- Subfield.instTopSubfield
- Subgroup.instTopSubgroup
- Submodule.instTopSubmodule
- Submonoid.instTopSubmonoid
- Subring.instTopSubring
- Subsemigroup.instTopSubsemigroup
- Subsemiring.instTopSubsemiring
- SupHom.instTopSupHomToSup
- ULift.instTopULift
- UpperSet.instTopUpperSet
- WithTop.top
- instTopUniformSpace
- sInfHom.instTopSInfHomToInfSet
- bot : α
The bot (
⊥
,\bot
) element
Typeclass for the ⊥
(\bot
) notation
Instances
- AddGroupTopology.instBotAddGroupTopology
- AddSubgroup.instBotAddSubgroup
- AddSubmonoid.instBotAddSubmonoid
- AddSubsemigroup.instBotSubsemigroup
- Associates.instBotAssociates
- GroupTopology.instBotGroupTopology
- InfHom.instBotInfHomToInf
- LinearPMap.bot
- LowerSet.instBotLowerSet
- OrderDual.bot
- OrderHom.instBotOrderHom
- PEquiv.instBotPEquiv
- PartENat.instBotPartENat
- Pi.instBotForAll
- Prod.bot
- SubMulAction.instBotSubMulAction
- Subgroup.instBotSubgroup
- Submodule.instBotSubmodule
- Submonoid.instBotSubmonoid
- Subring.instBotSubring
- Subsemigroup.instBotSubsemigroup
- Subsemiring.instBotSubsemiring
- SupHom.instBotSupHomToSup
- ULift.instBotULift
- UpperSet.instBotUpperSet
- WithBot.bot
- instBotUniformSpace
- sSupHom.instBotSSupHomToSupSet
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
- top : α
⊤
is the greatest element
An order is an OrderTop
if it has a greatest element.
We state this using a data mixin, holding the value of ⊤
and the greatest element constraint.
Instances
- Additive.orderTop
- Associates.instOrderTop
- ENat.instOrderTopENatToLEToPreorderToPartialOrderToOrderedSemiringToOrderedCommSemiringInstENatCanonicallyOrderedCommSemiring
- Flag.instOrderTopSubtypeMemFlagToLEInstMembershipInstSetLikeFlagLe
- GeneralizedHeytingAlgebra.toOrderTop
- InfHom.instOrderTopInfHomToInfToLEToPreorderToPartialOrderInstSemilatticeInfInfHomToInf
- InfTopHom.instOrderTopInfTopHomToInfToTopToLEToPreorderToPartialOrderToLEToPreorderToPartialOrderInstSemilatticeInfInfTopHomToInfToTopToLEToPreorderToPartialOrder
- LinearOrderedAddCommMonoidWithTop.toOrderTop
- Multiplicative.orderTop
- OrderDual.orderTop
- OrderHom.orderTop
- Ordinal.orderTopOutSucc
- PartENat.orderTop
- Pi.instOrderTopLexForAllToLEToPreorderInstPartialOrderLexForAll
- Pi.orderTop
- Prod.Lex.orderTop
- Prod.orderTop
- Set.Ici.orderTop
- Set.Iic.orderTop
- Set.instOrderTopSetInstLESet
- Submodule.instOrderTopSubmoduleToLEToPreorderInstPartialOrderSetLike
- Sum.Lex.orderTop
- SupHom.instOrderTopSupHomToSupToLEToPreorderToPartialOrderInstSemilatticeSupSupHomToSup
- TopHom.instOrderTopTopHomToTopToLEToLEInstPreorderTopHom
- TopologicalSpace.OpenNhdsOf.instOrderTopOpenNhdsOfToLEToPreorderInstPartialOrderInstSetLikeOpenNhdsOf
- ULift.instOrderTopULiftInstLEULift
- WithBot.orderTop
- WithTop.orderTop
- sInfHom.instOrderTopSInfHomToInfSetToLEToPreorderInstPartialOrderSInfHomToInfSet
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
.
- bot : α
⊥
is the least element
An order is an OrderBot
if it has a least element.
We state this using a data mixin, holding the value of ⊥
and the least element constraint.
Instances
- Additive.orderBot
- Associates.instOrderBot
- BotHom.instOrderBotBotHomToBotToLEToLEInstPreorderBotHom
- CanonicallyOrderedAddMonoid.toOrderBot
- CanonicallyOrderedMonoid.toOrderBot
- ConditionallyCompleteLinearOrderBot.toOrderBot
- ENNReal.instOrderBotENNRealToLEToPreorderToPartialOrderToSemilatticeInfToLatticeInstENNRealDistribLattice
- ENat.instOrderBotENatToLEToPreorderToPartialOrderToOrderedSemiringToOrderedCommSemiringInstENatCanonicallyOrderedCommSemiring
- Finset.instOrderBotFinsetToLEToPreorderPartialOrder
- Finsupp.orderBot
- Flag.instOrderBotSubtypeMemFlagToLEInstMembershipInstSetLikeFlagLe
- GeneralizedBooleanAlgebra.toOrderBot
- GeneralizedCoheytingAlgebra.toOrderBot
- IdemSemiring.toOrderBot
- InfHom.instOrderBotInfHomToInfToLEToPreorderToPartialOrderInstSemilatticeInfInfHomToInf
- IntermediateField.instOrderBotLiftsToLEToPreorderInstPartialOrderLifts
- LinearPMap.orderBot
- Multiplicative.orderBot
- Multiset.instOrderBotMultisetToLEToPreorderInstPartialOrderMultiset
- NNReal.instOrderBotNNRealToLEToPreorderToPartialOrderInstNNRealStrictOrderedSemiring
- Nat.Subtype.orderBot
- Nat.orderBot
- Nonneg.orderBot
- OrderDual.orderBot
- OrderHom.orderBot
- Ordinal.orderBot
- PEquiv.instOrderBotPEquivToLEToPreorderInstPartialOrderPEquiv
- PNat.instOrderBotPNatToLEToPreorderToPartialOrderToOrderedCancelCommMonoidInstPNatLinearOrderedCancelCommMonoid
- Part.instOrderBotPartToLEToPreorderInstPartialOrderPart
- PartENat.orderBot
- Pi.instOrderBotLexForAllToLEToPreorderInstPartialOrderLexForAll
- Pi.orderBot
- Prod.Lex.orderBot
- Prod.orderBot
- Seminorm.instOrderBot
- Set.Ici.orderBot
- Set.Iic.orderBot
- Submodule.instOrderBotSubmoduleToLEToPreorderInstPartialOrderSetLike
- Sum.Lex.orderBot
- SupBotHom.instOrderBotSupBotHomToSupToBotToLEToPreorderToPartialOrderToLEToPreorderToPartialOrderInstSemilatticeSupSupBotHomToSupToBotToLEToPreorderToPartialOrder
- SupHom.instOrderBotSupHomToSupToLEToPreorderToPartialOrderInstSemilatticeSupSupHomToSup
- ULift.instOrderBotULiftInstLEULift
- WithBot.orderBot
- WithTop.orderBot
- WithZero.orderBot
- instOrderBotSetSemiringToLEToPreorderInstPartialOrderSetSemiring
- sSupHom.instOrderBotSSupHomToSupSetToLEToPreorderInstPartialOrderSSupHomToSupSet
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 #
A bounded order describes an order (≤)
with a top and bottom element,
denoted ⊤
and ⊥
respectively.
Instances
- AddGroupTopology.instBoundedOrderAddGroupTopologyToLEToPreorderInstPartialOrderAddGroupTopology
- Additive.boundedOrder
- Associates.instBoundedOrder
- Bool.boundedOrder
- BooleanAlgebra.toBoundedOrder
- CoheytingAlgebra.toBoundedOrder
- Complementeds.instBoundedOrderComplementedsLeToLEToPreorderToPartialOrderToSemilatticeInfIsComplemented
- CompleteLattice.toBoundedOrder
- ENNReal.instBoundedOrderENNRealToLEToPreorderToPartialOrderToSemilatticeInfToLatticeInstENNRealDistribLattice
- Fin.instBoundedOrderFinHAddNatInstHAddInstAddNatOfNatInstLEFin
- Finset.boundedOrder
- Flag.instBoundedOrderSubtypeMemFlagToLEInstMembershipInstSetLikeFlagLe
- GroupTopology.instBoundedOrderGroupTopologyToLEToPreorderInstPartialOrderGroupTopology
- HeytingAlgebra.toBoundedOrder
- InfHom.instBoundedOrderInfHomToInfToLEToPreorderToPartialOrderInstSemilatticeInfInfHomToInf
- Multiplicative.boundedOrder
- OrderDual.boundedOrder
- PartENat.boundedOrder
- Pi.boundedOrder
- Pi.instBoundedOrderLexForAllToLEToPreorderInstPartialOrderLexForAll
- Prod.Lex.boundedOrder
- Prod.boundedOrder
- Prop.boundedOrder
- Set.Ici.boundedOrder
- Set.Iic.instBoundedOrderElemIicLeToLEMemSetInstMembershipSet
- SignType.instBoundedOrderSignTypeInstLESignType
- Sum.Lex.boundedOrder
- SupHom.instBoundedOrderSupHomToSupToLEToPreorderToPartialOrderInstSemilatticeSupSupHomToSup
- ULift.instBoundedOrderULiftInstLEULift
- WithBot.instBoundedOrder
- WithTop.boundedOrder
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