Documentation

Mathlib.Data.Sum.Order

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 #

Notation #

Unbundled relation classes #

theorem Sum.LiftRel.refl {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Refl r] [Std.Refl s] (x : α β) :
LiftRel r s x x
instance Sum.instReflLiftRel_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Refl r] [Std.Refl s] :
Std.Refl (LiftRel r s)
instance Sum.instIrreflLiftRel_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Irrefl r] [Std.Irrefl s] :
Std.Irrefl (LiftRel r s)
theorem Sum.LiftRel.trans {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [IsTrans α r] [IsTrans β s] {a b c : α β} :
LiftRel r s a bLiftRel r s b cLiftRel r s a c
instance Sum.instIsTransLiftRel {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [IsTrans α r] [IsTrans β s] :
IsTrans (α β) (LiftRel r s)
instance Sum.instAntisymmLiftRel_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Antisymm r] [Std.Antisymm s] :
Std.Antisymm (LiftRel r s)
instance Sum.instReflLex_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Refl r] [Std.Refl s] :
Std.Refl (Lex r s)
instance Sum.instIrreflLex_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Irrefl r] [Std.Irrefl s] :
Std.Irrefl (Lex r s)
instance Sum.instIsTransLex {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [IsTrans α r] [IsTrans β s] :
IsTrans (α β) (Lex r s)
instance Sum.instAntisymmLex_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Antisymm r] [Std.Antisymm s] :
Std.Antisymm (Lex r s)
instance Sum.instTotalLex_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Total r] [Std.Total s] :
Std.Total (Lex r s)
instance Sum.instTrichotomousLex_mathlib {α : Type u_1} {β : Type u_2} (r : ααProp) (s : ββProp) [Std.Trichotomous r] [Std.Trichotomous s] :
Std.Trichotomous (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 #

@[implicit_reducible]
instance Sum.instLESum {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
LE (α β)
@[implicit_reducible]
instance Sum.instLTSum {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
LT (α β)
theorem Sum.le_def {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : α β} :
a b LiftRel (fun (x1 x2 : α) => x1 x2) (fun (x1 x2 : β) => x1 x2) a b
theorem Sum.lt_def {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : α β} :
a < b LiftRel (fun (x1 x2 : α) => x1 < x2) (fun (x1 x2 : β) => x1 < x2) a b
@[simp]
theorem Sum.inl_le_inl_iff {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : α} :
inl a inl b a b
@[simp]
theorem Sum.inr_le_inr_iff {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : β} :
inr a inr b a b
@[simp]
theorem Sum.inl_lt_inl_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : α} :
inl a < inl b a < b
@[simp]
theorem Sum.inr_lt_inr_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : β} :
inr a < inr b a < b
@[simp]
theorem Sum.not_inl_le_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a : α} {b : β} :
¬inl b inr a
@[simp]
theorem Sum.not_inl_lt_inr {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a : α} {b : β} :
¬inl b < inr a
@[simp]
theorem Sum.not_inr_le_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a : α} {b : β} :
¬inr b inl a
@[simp]
theorem Sum.not_inr_lt_inl {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a : α} {b : β} :
¬inr b < inl a
@[implicit_reducible]
instance Sum.instPreorderSum {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
Preorder (α β)
theorem Sum.inl_mono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
theorem Sum.inr_mono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
theorem Sum.inl_strictMono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
theorem Sum.inr_strictMono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
@[implicit_reducible]
instance Sum.instPartialOrder {α : Type u_1} {β : Type u_2} [PartialOrder α] [PartialOrder β] :
PartialOrder (α β)
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]
theorem Sum.noMinOrder_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
NoMinOrder (α β) NoMinOrder α NoMinOrder β
@[simp]
theorem Sum.noMaxOrder_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
NoMaxOrder (α β) NoMaxOrder α NoMaxOrder β
instance Sum.denselyOrdered {α : Type u_1} {β : Type u_2} [LT α] [LT β] [DenselyOrdered α] [DenselyOrdered β] :
DenselyOrdered (α β)
@[simp]
theorem Sum.denselyOrdered_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
DenselyOrdered (α β) DenselyOrdered α DenselyOrdered β
@[simp]
theorem Sum.swap_le_swap_iff {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : α β} :
a.swap b.swap a b
@[simp]
theorem Sum.swap_lt_swap_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : α β} :
a.swap < b.swap a < b

Linear sum of two orders #

def Sum.Lex.«term_⊕ₗ_» :
Lean.TrailingParserDescr

The linear sum of two orders

Instances For
    @[reducible, match_pattern, inline]
    abbrev Sum.inlₗ {α : Type u_1} {β : Type u_2} (x : α) :
    _root_.Lex (α β)

    Lexicographical Sum.inl. Only used for pattern matching.

    Instances For
      @[reducible, match_pattern, inline]
      abbrev Sum.inrₗ {α : Type u_1} {β : Type u_2} (x : β) :
      _root_.Lex (α β)

      Lexicographical Sum.inr. Only used for pattern matching.

      Instances For
        @[implicit_reducible]
        instance Sum.Lex.LE {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
        LE (_root_.Lex (α β))

        The linear/lexicographical on a sum.

        @[implicit_reducible]
        instance Sum.Lex.LT {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
        LT (_root_.Lex (α β))

        The linear/lexicographical < on a sum.

        @[simp]
        theorem Sum.Lex.toLex_le_toLex {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : α β} :
        toLex a toLex b Lex (fun (x1 x2 : α) => x1 x2) (fun (x1 x2 : β) => x1 x2) a b
        @[simp]
        theorem Sum.Lex.toLex_lt_toLex {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : α β} :
        toLex a < toLex b Lex (fun (x1 x2 : α) => x1 < x2) (fun (x1 x2 : β) => x1 < x2) a b
        theorem Sum.Lex.le_def {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : _root_.Lex (α β)} :
        a b Lex (fun (x1 x2 : α) => x1 x2) (fun (x1 x2 : β) => x1 x2) (ofLex a) (ofLex b)
        theorem Sum.Lex.lt_def {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : _root_.Lex (α β)} :
        a < b Lex (fun (x1 x2 : α) => x1 < x2) (fun (x1 x2 : β) => x1 < x2) (ofLex a) (ofLex b)
        theorem Sum.Lex.inl_le_inl_iff {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : α} :
        toLex (inl a) toLex (inl b) a b
        theorem Sum.Lex.inr_le_inr_iff {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a b : β} :
        toLex (inr a) toLex (inr b) a b
        theorem Sum.Lex.inl_lt_inl_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : α} :
        toLex (inl a) < toLex (inl b) a < b
        theorem Sum.Lex.inr_lt_inr_iff {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a b : β} :
        toLex (inr a) < toLex (inr b) a < b
        theorem Sum.Lex.inl_le_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] (a : α) (b : β) :
        toLex (inl a) toLex (inr b)
        theorem Sum.Lex.inl_lt_inr {α : Type u_1} {β : Type u_2} [LT α] [LT β] (a : α) (b : β) :
        toLex (inl a) < toLex (inr b)
        theorem Sum.Lex.not_inr_le_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] {a : α} {b : β} :
        ¬toLex (inr b) toLex (inl a)
        theorem Sum.Lex.not_inr_lt_inl {α : Type u_1} {β : Type u_2} [LT α] [LT β] {a : α} {b : β} :
        ¬toLex (inr b) < toLex (inl a)
        def Sum.Lex.toLexRelIsoLT {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
        (Lex (fun (x1 x2 : α) => x1 < x2) fun (x1 x2 : β) => x1 < x2) ≃r fun (x1 x2 : _root_.Lex (α β)) => x1 < x2

        toLex promoted to a RelIso between < relations.

        Instances For
          @[simp]
          theorem Sum.Lex.toLexRelIsoLT_coe {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
          @[simp]
          theorem Sum.Lex.toLexRelIsoLT_symm_coe {α : Type u_1} {β : Type u_2} [LT α] [LT β] :
          def Sum.Lex.toLexRelIsoLE {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
          (Lex (fun (x1 x2 : α) => x1 x2) fun (x1 x2 : β) => x1 x2) ≃r fun (x1 x2 : _root_.Lex (α β)) => x1 x2

          toLex promoted to a RelIso between relations.

          Instances For
            @[simp]
            theorem Sum.Lex.toLexRelIsoLE_coe {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
            @[simp]
            theorem Sum.Lex.toLexRelIsoLE_symm_coe {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
            @[implicit_reducible]
            instance Sum.Lex.preorder {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
            Preorder (_root_.Lex (α β))
            theorem Sum.Lex.toLex_mono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
            theorem Sum.Lex.inl_mono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
            Monotone (toLex inl)
            theorem Sum.Lex.inr_mono {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] :
            Monotone (toLex inr)
            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)
            @[implicit_reducible]
            instance Sum.Lex.partialOrder {α : Type u_1} {β : Type u_2} [PartialOrder α] [PartialOrder β] :
            PartialOrder (_root_.Lex (α β))
            @[implicit_reducible]
            instance Sum.Lex.linearOrder {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] :
            LinearOrder (_root_.Lex (α β))
            @[implicit_reducible]
            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.

            @[simp]
            theorem Sum.Lex.inl_bot {α : Type u_1} {β : Type u_2} [LE α] [OrderBot α] [LE β] :
            toLex (inl ) =
            @[implicit_reducible]
            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.

            @[simp]
            theorem Sum.Lex.inr_top {α : Type u_1} {β : Type u_2} [LE α] [LE β] [OrderTop β] :
            toLex (inr ) =
            @[implicit_reducible]
            instance Sum.Lex.boundedOrder {α : Type u_1} {β : Type u_2} [LE α] [LE β] [OrderBot α] [OrderTop β] :
            BoundedOrder (_root_.Lex (α β))
            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 α] :
            instance Sum.Lex.denselyOrdered_of_noMinOrder {α : Type u_1} {β : Type u_2} [LT α] [LT β] [DenselyOrdered α] [DenselyOrdered β] [NoMinOrder β] :

            Order isomorphisms #

            def OrderIso.sumCongr {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) :
            α₁ β₁ ≃o α₂ β₂

            Equiv.sumCongr promoted to an order isomorphism.

            Instances For
              @[simp]
              theorem OrderIso.sumCongr_apply {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) (a✝ : α₁ β₁) :
              (ea.sumCongr eb) a✝ = Sum.map (⇑ea) (⇑eb) a✝
              @[simp]
              theorem OrderIso.sumCongr_trans {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} {γ₁ : Type u_8} {γ₂ : Type u_9} [LE α₁] [LE α₂] [LE β₁] [LE β₂] [LE γ₁] [LE γ₂] (e₁ : α₁ ≃o β₁) (e₂ : α₂ ≃o β₂) (f₁ : β₁ ≃o γ₁) (f₂ : β₂ ≃o γ₂) :
              (e₁.sumCongr e₂).trans (f₁.sumCongr f₂) = (e₁.trans f₁).sumCongr (e₂.trans f₂)
              @[simp]
              theorem OrderIso.sumCongr_symm {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) :
              (ea.sumCongr eb).symm = ea.symm.sumCongr eb.symm
              @[simp]
              theorem OrderIso.sumCongr_refl {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
              (refl α).sumCongr (refl β) = refl (α β)
              def OrderIso.sumComm (α : Type u_10) (β : Type u_11) [LE α] [LE β] :
              α β ≃o β α

              Equiv.sumComm promoted to an order isomorphism.

              Instances For
                @[simp]
                theorem OrderIso.sumComm_apply (α : Type u_10) (β : Type u_11) [LE α] [LE β] (a✝ : α β) :
                (sumComm α β) a✝ = a✝.swap
                @[simp]
                theorem OrderIso.sumComm_symm (α : Type u_10) (β : Type u_11) [LE α] [LE β] :
                (sumComm α β).symm = sumComm β α
                def OrderIso.sumAssoc (α : Type u_10) (β : Type u_11) (γ : Type u_12) [LE α] [LE β] [LE γ] :
                (α β) γ ≃o α β γ

                Equiv.sumAssoc promoted to an order isomorphism.

                Instances For
                  @[simp]
                  theorem OrderIso.sumAssoc_apply_inl_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (a : α) :
                  (sumAssoc α β γ) (Sum.inl (Sum.inl a)) = Sum.inl a
                  @[simp]
                  theorem OrderIso.sumAssoc_apply_inl_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (b : β) :
                  (sumAssoc α β γ) (Sum.inl (Sum.inr b)) = Sum.inr (Sum.inl b)
                  @[simp]
                  theorem OrderIso.sumAssoc_apply_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (c : γ) :
                  (sumAssoc α β γ) (Sum.inr c) = Sum.inr (Sum.inr c)
                  @[simp]
                  theorem OrderIso.sumAssoc_symm_apply_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (a : α) :
                  (sumAssoc α β γ).symm (Sum.inl a) = Sum.inl (Sum.inl a)
                  @[simp]
                  theorem OrderIso.sumAssoc_symm_apply_inr_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (b : β) :
                  (sumAssoc α β γ).symm (Sum.inr (Sum.inl b)) = Sum.inl (Sum.inr b)
                  @[simp]
                  theorem OrderIso.sumAssoc_symm_apply_inr_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (c : γ) :
                  (sumAssoc α β γ).symm (Sum.inr (Sum.inr c)) = Sum.inr c
                  def OrderIso.sumDualDistrib (α : Type u_10) (β : Type u_11) [LE α] [LE β] :
                  (α β)ᵒᵈ ≃o αᵒᵈ βᵒᵈ

                  orderDual is distributive over up to an order isomorphism.

                  Instances For
                    @[simp]
                    theorem OrderIso.sumDualDistrib_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] (a : α) :
                    (sumDualDistrib α β) (OrderDual.toDual (Sum.inl a)) = Sum.inl (OrderDual.toDual a)
                    @[simp]
                    theorem OrderIso.sumDualDistrib_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] (b : β) :
                    (sumDualDistrib α β) (OrderDual.toDual (Sum.inr b)) = Sum.inr (OrderDual.toDual b)
                    @[simp]
                    theorem OrderIso.sumDualDistrib_symm_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] (a : α) :
                    (sumDualDistrib α β).symm (Sum.inl (OrderDual.toDual a)) = OrderDual.toDual (Sum.inl a)
                    @[simp]
                    theorem OrderIso.sumDualDistrib_symm_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] (b : β) :
                    (sumDualDistrib α β).symm (Sum.inr (OrderDual.toDual b)) = OrderDual.toDual (Sum.inr b)
                    def OrderIso.sumLexCongr {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) :
                    Lex (α₁ β₁) ≃o Lex (α₂ β₂)

                    Equiv.sumCongr promoted to an order isomorphism between lexicographic sums.

                    Instances For
                      @[simp]
                      theorem OrderIso.sumLexCongr_apply {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) (a✝ : Lex (α₁ β₁)) :
                      (ea.sumLexCongr eb) a✝ = toLex (Sum.map (⇑ea) (⇑eb) (ofLex a✝))
                      @[simp]
                      theorem OrderIso.sumLexCongr_trans {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} {γ₁ : Type u_8} {γ₂ : Type u_9} [LE α₁] [LE α₂] [LE β₁] [LE β₂] [LE γ₁] [LE γ₂] (e₁ : α₁ ≃o β₁) (e₂ : α₂ ≃o β₂) (f₁ : β₁ ≃o γ₁) (f₂ : β₂ ≃o γ₂) :
                      (e₁.sumLexCongr e₂).trans (f₁.sumLexCongr f₂) = (e₁.trans f₁).sumLexCongr (e₂.trans f₂)
                      @[simp]
                      theorem OrderIso.sumLexCongr_symm {α₁ : Type u_4} {α₂ : Type u_5} {β₁ : Type u_6} {β₂ : Type u_7} [LE α₁] [LE α₂] [LE β₁] [LE β₂] (ea : α₁ ≃o α₂) (eb : β₁ ≃o β₂) :
                      @[simp]
                      theorem OrderIso.sumLexCongr_refl {α : Type u_1} {β : Type u_2} [LE α] [LE β] :
                      (refl α).sumLexCongr (refl β) = refl (Lex (α β))
                      def OrderIso.sumLexAssoc (α : Type u_10) (β : Type u_11) (γ : Type u_12) [LE α] [LE β] [LE γ] :
                      Lex (Lex (α β) γ) ≃o Lex (α Lex (β γ))

                      Equiv.sumAssoc promoted to an order isomorphism.

                      Instances For
                        @[simp]
                        theorem OrderIso.sumLexAssoc_apply_inl_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (a : α) :
                        (sumLexAssoc α β γ) (toLex (Sum.inl (toLex (Sum.inl a)))) = toLex (Sum.inl a)
                        @[simp]
                        theorem OrderIso.sumLexAssoc_apply_inl_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (b : β) :
                        (sumLexAssoc α β γ) (toLex (Sum.inl (toLex (Sum.inr b)))) = toLex (Sum.inr (toLex (Sum.inl b)))
                        @[simp]
                        theorem OrderIso.sumLexAssoc_apply_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (c : γ) :
                        (sumLexAssoc α β γ) (toLex (Sum.inr c)) = toLex (Sum.inr (toLex (Sum.inr c)))
                        @[simp]
                        theorem OrderIso.sumLexAssoc_symm_apply_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (a : α) :
                        (sumLexAssoc α β γ).symm (Sum.inl a) = Sum.inl (Sum.inl a)
                        @[simp]
                        theorem OrderIso.sumLexAssoc_symm_apply_inr_inl {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (b : β) :
                        (sumLexAssoc α β γ).symm (Sum.inr (Sum.inl b)) = Sum.inl (Sum.inr b)
                        @[simp]
                        theorem OrderIso.sumLexAssoc_symm_apply_inr_inr {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE α] [LE β] [LE γ] (c : γ) :
                        (sumLexAssoc α β γ).symm (Sum.inr (Sum.inr c)) = Sum.inr c
                        def OrderIso.sumLexDualAntidistrib (α : Type u_10) (β : Type u_11) [LE α] [LE β] :
                        (Lex (α β))ᵒᵈ ≃o Lex (βᵒᵈ αᵒᵈ)

                        OrderDual is antidistributive over ⊕ₗ up to an order isomorphism.

                        Instances For
                          @[simp]
                          theorem OrderIso.sumLexDualAntidistrib_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] (a : α) :
                          (sumLexDualAntidistrib α β) (OrderDual.toDual (Sum.inl a)) = Sum.inr (OrderDual.toDual a)
                          @[simp]
                          theorem OrderIso.sumLexDualAntidistrib_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] (b : β) :
                          (sumLexDualAntidistrib α β) (OrderDual.toDual (Sum.inr b)) = Sum.inl (OrderDual.toDual b)
                          @[simp]
                          theorem OrderIso.sumLexDualAntidistrib_symm_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] (b : β) :
                          (sumLexDualAntidistrib α β).symm (Sum.inl (OrderDual.toDual b)) = OrderDual.toDual (Sum.inr b)
                          @[simp]
                          theorem OrderIso.sumLexDualAntidistrib_symm_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] (a : α) :
                          (sumLexDualAntidistrib α β).symm (Sum.inr (OrderDual.toDual a)) = OrderDual.toDual (Sum.inl a)
                          def OrderIso.sumLexEmpty {α : Type u_1} {β : Type u_2} [LE α] [LE β] [IsEmpty β] :
                          Lex (α β) ≃o α

                          Equiv.sumEmpty as an OrderIso with the lexicographic sum.

                          Instances For
                            def OrderIso.emptySumLex {α : Type u_1} {β : Type u_2} [LE α] [LE β] [IsEmpty β] :
                            Lex (β α) ≃o α

                            Equiv.emptySum as an OrderIso with the lexicographic sum.

                            Instances For
                              @[simp]
                              theorem OrderIso.sumLexEmpty_apply_inl {α : Type u_1} {β : Type u_2} [LE α] [LE β] [IsEmpty β] (x : α) :
                              sumLexEmpty (toLex (Sum.inl x)) = x
                              @[simp]
                              theorem OrderIso.emptySumLex_apply_inr {α : Type u_1} {β : Type u_2} [LE α] [LE β] [IsEmpty β] (x : α) :
                              emptySumLex (toLex (Sum.inr x)) = x
                              def WithBot.orderIsoPUnitSumLex {α : Type u_1} [LE α] :
                              WithBot α ≃o Lex (PUnit.{u_4 + 1} α)

                              WithBot α is order-isomorphic to PUnit ⊕ₗ α, by sending to Unit and ↑a to a.

                              Instances For
                                @[simp]
                                theorem WithBot.orderIsoPUnitSumLex_bot {α : Type u_1} [LE α] :
                                orderIsoPUnitSumLex = toLex (Sum.inl PUnit.unit)
                                @[simp]
                                theorem WithBot.orderIsoPUnitSumLex_toLex {α : Type u_1} [LE α] (a : α) :
                                orderIsoPUnitSumLex a = toLex (Sum.inr a)
                                @[simp]
                                theorem WithBot.orderIsoPUnitSumLex_symm_inl {α : Type u_1} [LE α] (x : PUnit.{u_4 + 1}) :
                                @[simp]
                                theorem WithBot.orderIsoPUnitSumLex_symm_inr {α : Type u_1} [LE α] (a : α) :
                                orderIsoPUnitSumLex.symm (toLex (Sum.inr a)) = a
                                def WithTop.orderIsoSumLexPUnit {α : Type u_1} [LE α] :
                                WithTop α ≃o Lex (α PUnit.{u_4 + 1})

                                WithTop α is order-isomorphic to α ⊕ₗ PUnit, by sending to Unit and ↑a to a.

                                Instances For
                                  @[simp]
                                  theorem WithTop.orderIsoSumLexPUnit_top {α : Type u_1} [LE α] :
                                  orderIsoSumLexPUnit = toLex (Sum.inr PUnit.unit)
                                  @[simp]
                                  theorem WithTop.orderIsoSumLexPUnit_toLex {α : Type u_1} [LE α] (a : α) :
                                  orderIsoSumLexPUnit a = toLex (Sum.inl a)
                                  @[simp]
                                  theorem WithTop.orderIsoSumLexPUnit_symm_inr {α : Type u_1} [LE α] (x : PUnit.{u_4 + 1}) :
                                  @[simp]
                                  theorem WithTop.orderIsoSumLexPUnit_symm_inl {α : Type u_1} [LE α] (a : α) :
                                  orderIsoSumLexPUnit.symm (toLex (Sum.inl a)) = a