Documentation

Mathlib.Order.Types.Defs

Order types #

Order types are defined as the quotient of linear orders under order isomorphism. They are preordered by order embeddings.

Main definitions #

A preorder with a bottom element is registered on order types, where is 0, the order type corresponding to the empty type.

Notation #

The following are notations in the OrderType namespace:

References #

Tags #

order type, order isomorphism, linear order

Equivalence relation on linear orders on arbitrary types in universe u, given by order isomorphism.

Equations
Instances For
    def OrderType :
    Type (u + 1)

    OrderType.{u} is the type of linear orders in Type u, up to order isomorphism.

    Equations
    Instances For

      A "canonical" type order-isomorphic to the order type o, living in the same universe. This is defined through the axiom of choice.

      Equations
      Instances For
        @[instance_reducible]

        The instance for some arbitrary linear order on Type u , order isomorphic within order type o.

        Equations

        Basic properties of the order type #

        The order type of the linear order on α.

        Equations
        Instances For
          @[instance_reducible]
          Equations
          theorem OrderType.type_eq_type {α β : Type u} [LinearOrder α] [LinearOrder β] :
          type α = type β Nonempty (α ≃o β)
          theorem OrderType.type_congr {α β : Type u} [LinearOrder α] [LinearOrder β] (h : α ≃o β) :
          type α = type β
          @[simp]
          theorem OrderType.type_of_isEmpty {α : Type u} [LinearOrder α] [IsEmpty α] :
          type α = 0
          @[simp]
          theorem OrderType.type_ne_zero {α : Type u} [LinearOrder α] [h : Nonempty α] :
          type α 0
          @[simp]
          theorem OrderType.type_of_unique {α : Type u} [LinearOrder α] [Nonempty α] [Subsingleton α] :
          type α = 1
          theorem OrderType.inductionOn {C : OrderType.{u_1}Prop} (o : OrderType.{u_1}) (H : ∀ (α : Type u_1) [inst : LinearOrder α], C (type α)) :
          C o

          Quotient.inductionOn specialized to OrderType.

          theorem OrderType.inductionOn₂ {C : OrderType.{u_1}OrderType.{u_2}Prop} (o₁ : OrderType.{u_1}) (o₂ : OrderType.{u_2}) (H : ∀ (α : Type u_1) [inst : LinearOrder α] (β : Type u_2) [inst_1 : LinearOrder β], C (type α) (type β)) :
          C o₁ o₂

          Quotient.inductionOn₂ specialized to OrderType.

          theorem OrderType.inductionOn₃ {C : OrderType.{u_1}OrderType.{u_2}OrderType.{u_3}Prop} (o₁ : OrderType.{u_1}) (o₂ : OrderType.{u_2}) (o₃ : OrderType.{u_3}) (H : ∀ (α : Type u_1) [inst : LinearOrder α] (β : Type u_2) [inst_1 : LinearOrder β] (γ : Type u_3) [inst_2 : LinearOrder γ], C (type α) (type β) (type γ)) :
          C o₁ o₂ o₃

          Quotient.inductionOn₃ specialized to OrderType.

          def OrderType.liftOn {δ : Sort v} (o : OrderType.{u_1}) (f : (α : Type u_1) → [LinearOrder α] → δ) (c : ∀ (α : Type u_1) [inst : LinearOrder α] (β : Type u_1) [inst_1 : LinearOrder β], type α = type βf α = f β) :
          δ

          To define a function on OrderType, it suffices to define it on all linear orders.

          Equations
          Instances For
            def OrderType.liftOn₂ {δ : Sort v} (o₁ : OrderType.{u_1}) (o₂ : OrderType.{u_2}) (f : (α : Type u_1) → [LinearOrder α] → (β : Type u_2) → [LinearOrder β] → δ) (c : ∀ (α₁ : Type u_1) [inst : LinearOrder α₁] (β₁ : Type u_2) [inst_1 : LinearOrder β₁] (α₂ : Type u_1) [inst_2 : LinearOrder α₂] (β₂ : Type u_2) [inst_3 : LinearOrder β₂], type α₁ = type α₂type β₁ = type β₂f α₁ β₁ = f α₂ β₂) :
            δ

            Quotient.liftOn₂ specialized to OrderType.

            Equations
            Instances For
              @[simp]
              theorem OrderType.liftOn_type {δ : Sort v} (f : (α : Type u_1) → [LinearOrder α] → δ) (c : ∀ (α : Type u_1) [inst : LinearOrder α] (β : Type u_1) [inst_1 : LinearOrder β], type α = type βf α = f β) {γ : Type u_1} [LinearOrder γ] :
              (type γ).liftOn f c = f γ
              @[simp]
              theorem OrderType.liftOn₂_type {α : Type u} {β : Type v} {δ : Type u_1} [LinearOrder α] [LinearOrder β] (f : (α : Type u) → [LinearOrder α] → (β : Type v) → [LinearOrder β] → δ) (c : ∀ (α₁ : Type u) [inst : LinearOrder α₁] (β₁ : Type v) [inst_1 : LinearOrder β₁] (α₂ : Type u) [inst_2 : LinearOrder α₂] (β₂ : Type v) [inst_3 : LinearOrder β₂], type α₁ = type α₂type β₁ = type β₂f α₁ β₁ = f α₂ β₂) :
              (type α).liftOn₂ (type β) f c = f α β

              The order on OrderType #

              @[instance_reducible]

              The order is defined so that type α ≤ type β iff there exists an order embedding α ↪o β.

              Equations
              • One or more equations did not get rendered due to their size.
              theorem OrderType.type_le_type {α β : Type u} [LinearOrder α] [LinearOrder β] (h : α ↪o β) :
              type α type β
              theorem OrderType.type_lt_type {α β : Type u} [LinearOrder α] [LinearOrder β] (h : α ↪o β) (hne : IsEmpty (β ↪o α)) :
              type α < type β
              @[simp]
              @[instance_reducible]
              Equations
              @[simp]

              ω is the first infinite ordinal, defined as the order type of .

              Conventions for notations in identifiers:

              • The recommended spelling of ω in identifiers is omega0.
              Equations
              Instances For

                ω is the first infinite ordinal, defined as the order type of .

                Conventions for notations in identifiers:

                • The recommended spelling of ω in identifiers is omega0.
                Equations
                Instances For