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

              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
                    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
                    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 #

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

                            Equations
                              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 β

                              ω 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