Orders on a sum type #
This file defines the disjoint sum and the linear (aka lexicographic) sum of two orders and
provides relation instances for Sum.LiftRel and Sum.Lex.
We declare the disjoint sum of orders as the default set of instances. The linear order goes on a type synonym.
Main declarations #
Sum.LE,Sum.LT: Disjoint sum of orders.Sum.Lex.LE,Sum.Lex.LT: Lexicographic/linear sum of orders.
Notation #
α ⊕ₗ β: The linear sum ofαandβ.
Unbundled relation classes #
instance
Sum.instIsAntisymmLiftRel
{α : Type u_1}
{β : Type u_2}
(r : α → α → Prop)
(s : β → β → Prop)
[IsAntisymm α r]
[IsAntisymm β s]
:
IsAntisymm (α ⊕ β) (LiftRel r s)
instance
Sum.instIsAntisymmLex
{α : Type u_1}
{β : Type u_2}
(r : α → α → Prop)
(s : β → β → Prop)
[IsAntisymm α r]
[IsAntisymm β s]
:
IsAntisymm (α ⊕ β) (Lex r s)
instance
Sum.instIsTrichotomousLex
{α : Type u_1}
{β : Type u_2}
(r : α → α → Prop)
(s : β → β → Prop)
[IsTrichotomous α r]
[IsTrichotomous β s]
:
IsTrichotomous (α ⊕ β) (Lex r s)
instance
Sum.instIsWellOrderLex
{α : Type u_1}
{β : Type u_2}
(r : α → α → Prop)
(s : β → β → Prop)
[IsWellOrder α r]
[IsWellOrder β s]
:
IsWellOrder (α ⊕ β) (Lex r s)
Disjoint sum of two orders #
instance
Sum.instPartialOrder
{α : Type u_1}
{β : Type u_2}
[PartialOrder α]
[PartialOrder β]
:
PartialOrder (α ⊕ β)
Equations
instance
Sum.noMinOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMinOrder α]
[NoMinOrder β]
:
NoMinOrder (α ⊕ β)
instance
Sum.noMaxOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMaxOrder α]
[NoMaxOrder β]
:
NoMaxOrder (α ⊕ β)
@[simp]
@[simp]
instance
Sum.denselyOrdered
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[DenselyOrdered α]
[DenselyOrdered β]
:
DenselyOrdered (α ⊕ β)
@[simp]
Linear sum of two orders #
The linear sum of two orders
Equations
Instances For
The linear/lexicographical ≤ on a sum.
Equations
The linear/lexicographical < on a sum.
Equations
@[simp]
@[simp]
@[simp]
@[simp]
instance
Sum.Lex.preorder
{α : Type u_1}
{β : Type u_2}
[Preorder α]
[Preorder β]
:
Preorder (_root_.Lex (α ⊕ β))
Equations
theorem
Sum.Lex.inl_strictMono
{α : Type u_1}
{β : Type u_2}
[Preorder α]
[Preorder β]
:
StrictMono (⇑toLex ∘ inl)
theorem
Sum.Lex.inr_strictMono
{α : Type u_1}
{β : Type u_2}
[Preorder α]
[Preorder β]
:
StrictMono (⇑toLex ∘ inr)
instance
Sum.Lex.partialOrder
{α : Type u_1}
{β : Type u_2}
[PartialOrder α]
[PartialOrder β]
:
PartialOrder (_root_.Lex (α ⊕ β))
Equations
instance
Sum.Lex.linearOrder
{α : Type u_1}
{β : Type u_2}
[LinearOrder α]
[LinearOrder β]
:
LinearOrder (_root_.Lex (α ⊕ β))
Equations
instance
Sum.Lex.orderBot
{α : Type u_1}
{β : Type u_2}
[LE α]
[OrderBot α]
[LE β]
:
OrderBot (_root_.Lex (α ⊕ β))
The lexicographical bottom of a sum is the bottom of the left component.
Equations
instance
Sum.Lex.orderTop
{α : Type u_1}
{β : Type u_2}
[LE α]
[LE β]
[OrderTop β]
:
OrderTop (_root_.Lex (α ⊕ β))
The lexicographical top of a sum is the top of the right component.
Equations
instance
Sum.Lex.boundedOrder
{α : Type u_1}
{β : Type u_2}
[LE α]
[LE β]
[OrderBot α]
[OrderTop β]
:
BoundedOrder (_root_.Lex (α ⊕ β))
Equations
instance
Sum.Lex.noMinOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMinOrder α]
[NoMinOrder β]
:
NoMinOrder (_root_.Lex (α ⊕ β))
instance
Sum.Lex.noMaxOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMaxOrder α]
[NoMaxOrder β]
:
NoMaxOrder (_root_.Lex (α ⊕ β))
instance
Sum.Lex.noMinOrder_of_nonempty
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMinOrder α]
[Nonempty α]
:
NoMinOrder (_root_.Lex (α ⊕ β))
instance
Sum.Lex.noMaxOrder_of_nonempty
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[NoMaxOrder β]
[Nonempty β]
:
NoMaxOrder (_root_.Lex (α ⊕ β))
instance
Sum.Lex.denselyOrdered_of_noMaxOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[DenselyOrdered α]
[DenselyOrdered β]
[NoMaxOrder α]
:
DenselyOrdered (_root_.Lex (α ⊕ β))
instance
Sum.Lex.denselyOrdered_of_noMinOrder
{α : Type u_1}
{β : Type u_2}
[LT α]
[LT β]
[DenselyOrdered α]
[DenselyOrdered β]
[NoMinOrder β]
:
DenselyOrdered (_root_.Lex (α ⊕ β))
Order isomorphisms #
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
OrderIso.sumLexDualAntidistrib_symm_inl
{α : Type u_1}
{β : Type u_2}
[LE α]
[LE β]
(b : β)
:
@[simp]
theorem
OrderIso.sumLexDualAntidistrib_symm_inr
{α : Type u_1}
{β : Type u_2}
[LE α]
[LE β]
(a : α)
:
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]