Documentation

Mathlib.SetTheory.Ordinal.Family

Arithmetic on families of ordinals #

This file proves basic results about the suprema of families of ordinals.

Various other basic arithmetic results are given in Principal.lean instead.

@[deprecated Ordinal.enum (since := "2026-04-06")]
noncomputable def Ordinal.bfamilyOfFamily' {α : Type u_1} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] (f : ια) (a : Ordinal.{u}) :
a < type rα

Converts a family indexed by a Type u to one indexed by an Ordinal.{u} using a specified well-ordering.

Equations
Instances For
    @[deprecated Ordinal.enum (since := "2026-04-06")]
    noncomputable def Ordinal.bfamilyOfFamily {α : Type u_1} {ι : Type u} :
    (ια)(a : Ordinal.{u}) → a < type WellOrderingRelα

    Converts a family indexed by a Type u to one indexed by an Ordinal.{u} using a well-ordering given by the axiom of choice.

    Equations
    Instances For
      @[deprecated Ordinal.typein (since := "2026-04-06")]
      def Ordinal.familyOfBFamily' {α : Type u_1} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) → a < oα) :
      ια

      Converts a family indexed by an Ordinal.{u} to one indexed by a Type u using a specified well-ordering.

      Equations
      Instances For
        @[deprecated Ordinal.typein (since := "2026-04-06")]
        def Ordinal.familyOfBFamily {α : Type u_1} (o : Ordinal.{u_3}) (f : (a : Ordinal.{u_3}) → a < oα) :
        o.ToTypeα

        Converts a family indexed by an Ordinal.{u} to one indexed by a Type u using a well-ordering given by the axiom of choice.

        Equations
        Instances For
          @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
          theorem Ordinal.bfamilyOfFamily'_typein {α : Type u_1} {ι : Type u_3} (r : ιιProp) [IsWellOrder ι r] (f : ια) (i : ι) :
          @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
          theorem Ordinal.bfamilyOfFamily_typein {α : Type u_1} {ι : Type u_3} (f : ια) (i : ι) :
          @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
          theorem Ordinal.familyOfBFamily'_enum {α : Type u_1} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) → a < oα) (i : Ordinal.{u}) (hi : i < o) :
          familyOfBFamily' r ho f ((enum r) i, ) = f i hi
          @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
          theorem Ordinal.familyOfBFamily_enum {α : Type u_1} (o : Ordinal.{u_3}) (f : (a : Ordinal.{u_3}) → a < oα) (i : Ordinal.{u_3}) (hi : i < o) :
          o.familyOfBFamily f ((enum fun (x1 x2 : o.ToType) => x1 < x2) i, ) = f i hi
          @[deprecated Set.range (since := "2026-04-06")]
          def Ordinal.brange {α : Type u_1} (o : Ordinal.{u_3}) (f : (a : Ordinal.{u_3}) → a < oα) :
          Set α

          The range of a family indexed by ordinals.

          Equations
          Instances For
            @[deprecated Set.mem_range (since := "2026-04-06")]
            theorem Ordinal.mem_brange {α : Type u_1} {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < oα} {a : α} :
            a o.brange f ∃ (i : Ordinal.{u_3}) (hi : i < o), f i hi = a
            @[deprecated Set.mem_range_self (since := "2026-04-06")]
            theorem Ordinal.mem_brange_self {α : Type u_1} {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oα) (i : Ordinal.{u_3}) (hi : i < o) :
            f i hi o.brange f
            @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.range_familyOfBFamily' {α : Type u_1} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) → a < oα) :
            @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.range_familyOfBFamily {α : Type u_1} {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oα) :
            @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.brange_bfamilyOfFamily' {α : Type u_1} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] (f : ια) :
            @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.brange_bfamilyOfFamily {α : Type u_1} {ι : Type u} (f : ια) :
            @[deprecated "brange is deprecated" (since := "2026-04-06")]
            theorem Ordinal.brange_const {α : Type u_1} {o : Ordinal.{u_3}} (ho : o 0) {c : α} :
            (o.brange fun (x : Ordinal.{u_3}) (x_1 : x < o) => c) = {c}
            @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.comp_bfamilyOfFamily' {α : Type u_1} {β : Type u_2} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] (f : ια) (g : αβ) :
            (fun (i : Ordinal.{u}) (hi : i < type r) => g (bfamilyOfFamily' r f i hi)) = bfamilyOfFamily' r (g f)
            @[deprecated "bfamilyOfFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.comp_bfamilyOfFamily {α : Type u_1} {β : Type u_2} {ι : Type u} (f : ια) (g : αβ) :
            (fun (i : Ordinal.{u}) (hi : i < type WellOrderingRel) => g (bfamilyOfFamily f i hi)) = bfamilyOfFamily (g f)
            @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.comp_familyOfBFamily' {α : Type u_1} {β : Type u_2} {ι : Type u} (r : ιιProp) [IsWellOrder ι r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) → a < oα) (g : αβ) :
            g familyOfBFamily' r ho f = familyOfBFamily' r ho fun (i : Ordinal.{u}) (hi : i < o) => g (f i hi)
            @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.comp_familyOfBFamily {α : Type u_1} {β : Type u_2} {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oα) (g : αβ) :
            g o.familyOfBFamily f = o.familyOfBFamily fun (i : Ordinal.{u_3}) (hi : i < o) => g (f i hi)

            Supremum of a family of ordinals #

            @[deprecated Ordinal.bddAbove_of_small (since := "2026-04-04")]
            theorem Ordinal.le_iSup {ι : Type u_3} (f : ιOrdinal.{u}) [Small.{u, u_3} ι] (i : ι) :
            f i ⨆ (i : ι), f i

            le_ciSup whenever the input type is small in the output universe. This lemma sometimes fails to infer f in simple cases and needs it to be given explicitly.

            @[simp]
            theorem Ordinal.iSup_le_iff {ι : Type u_3} {f : ιOrdinal.{u}} {a : Ordinal.{u}} [Small.{u, u_3} ι] :
            ⨆ (i : ι), f i a ∀ (i : ι), f i a

            ciSup_le_iff' whenever the input type is small in the output universe.

            theorem Ordinal.iSup_le {ι : Sort u_3} {f : ιOrdinal.{u_4}} {a : Ordinal.{u_4}} :
            (∀ (i : ι), f i a)⨆ (i : ι), f i a

            An alias of ciSup_le' for discoverability.

            @[simp]
            theorem Ordinal.lt_iSup_iff {ι : Type u_3} {f : ιOrdinal.{u}} {a : Ordinal.{u}} [Small.{u, u_3} ι] :
            a < ⨆ (i : ι), f i ∃ (i : ι), a < f i

            lt_ciSup_iff' whenever the input type is small in the output universe.

            theorem Ordinal.lt_iSup_add_one {ι : Type u_3} (f : ιOrdinal.{u}) [Small.{u, u_3} ι] (i : ι) :
            f i < ⨆ (i : ι), f i + 1
            theorem Ordinal.iSup_add_one_le_iff {ι : Type u_3} {f : ιOrdinal.{u}} {a : Ordinal.{u}} [Small.{u, u_3} ι] :
            ⨆ (i : ι), f i + 1 a ∀ (i : ι), f i < a
            theorem Ordinal.iSup_add_one_le {ι : Sort u_3} {f : ιOrdinal.{u}} {a : Ordinal.{u}} (h : ∀ (i : ι), f i < a) :
            ⨆ (i : ι), f i + 1 a
            theorem Ordinal.lt_iSup_add_one_iff {ι : Type u_3} {f : ιOrdinal.{u}} {a : Ordinal.{u}} [Small.{u, u_3} ι] :
            a < ⨆ (i : ι), f i + 1 ∃ (i : ι), a f i
            theorem Ordinal.succ_lt_iSup_of_ne_iSup {ι : Type u_3} {f : ιOrdinal.{u}} [Small.{u, u_3} ι] (hf : ∀ (i : ι), f i iSup f) {a : Ordinal.{u}} (hao : a < iSup f) :
            theorem Ordinal.iSup_eq_zero_iff {ι : Type u_3} {f : ιOrdinal.{u}} [Small.{u, u_3} ι] :
            iSup f = 0 ∀ (i : ι), f i = 0
            @[deprecated congrArg (since := "2026-03-27")]
            theorem Ordinal.iSup_eq_of_range_eq {ι : Sort u_3} {ι' : Sort u_4} {f : ιOrdinal.{u_5}} {g : ι'Ordinal.{u_5}} (h : Set.range f = Set.range g) :
            iSup f = iSup g
            theorem Ordinal.iSup_sum {α : Type u_3} {β : Type u_4} (f : α βOrdinal.{u}) [Small.{u, u_3} α] [Small.{u, u_4} β] :
            iSup f = max (⨆ (a : α), f (Sum.inl a)) (⨆ (b : β), f (Sum.inr b))
            theorem Ordinal.unbounded_range_of_le_iSup {α β : Type u} (r : ααProp) [IsWellOrder α r] (f : βα) (h : type r ⨆ (i : β), (typein r).toRelEmbedding (f i)) :
            @[deprecated Order.IsNormal.map_iSup (since := "2025-12-25")]
            theorem Ordinal.IsNormal.map_iSup_of_bddAbove {f : Ordinal.{u}Ordinal.{v}} (H : Ordinal.IsNormal f) {ι : Type u_3} (g : ιOrdinal.{u}) (hg : BddAbove (Set.range g)) [Nonempty ι] :
            f (⨆ (i : ι), g i) = ⨆ (i : ι), f (g i)
            @[deprecated Order.IsNormal.map_iSup (since := "2025-12-25")]
            theorem Ordinal.IsNormal.map_iSup {f : Ordinal.{u}Ordinal.{v}} (H : Ordinal.IsNormal f) {ι : Type w} (g : ιOrdinal.{u}) [Small.{u, w} ι] [Nonempty ι] :
            f (⨆ (i : ι), g i) = ⨆ (i : ι), f (g i)
            @[deprecated Order.IsNormal.map_sSup (since := "2025-12-25")]
            @[deprecated Order.IsNormal.map_sSup (since := "2025-12-25")]
            @[deprecated Order.IsNormal.apply_of_isSuccLimit (since := "2025-12-25")]
            theorem Ordinal.IsNormal.apply_of_isSuccLimit {f : Ordinal.{u}Ordinal.{v}} (H : Ordinal.IsNormal f) {o : Ordinal.{u}} (ho : Order.IsSuccLimit o) :
            f o = ⨆ (a : (Set.Iio o)), f a
            theorem Ordinal.iSup_ord {ι : Sort u_3} (f : ιCardinal.{u_4}) :
            (⨆ (i : ι), f i).ord = ⨆ (i : ι), (f i).ord
            theorem Ordinal.bddAbove_range_add_one_iff {β : Type u_2} {f : βOrdinal.{u}} :
            BddAbove (Set.range fun (i : β) => f i + 1) BddAbove (Set.range f)
            theorem Ordinal.iSup_le_iSup_add_one {β : Type u_2} (f : βOrdinal.{u_3}) :
            ⨆ (i : β), f i ⨆ (i : β), f i + 1
            theorem Ordinal.iSup_add_one {β : Type u_3} [LinearOrder β] [NoMaxOrder β] {f : βOrdinal.{u}} (hf : StrictMono f) :
            ⨆ (i : β), f i + 1 = ⨆ (i : β), f i
            theorem Ordinal.iSup_Iio_add_one {a : Ordinal.{u}} {f : (Set.Iio a)Ordinal.{u}} (hf : StrictMono f) (ha : Order.IsSuccPrelimit a) :
            ⨆ (i : (Set.Iio a)), f i + 1 = ⨆ (i : (Set.Iio a)), f i
            @[deprecated "familyOfBFamily is deprecated" (since := "2026-04-06")]
            theorem Ordinal.iSup_eq_iSup {ι ι' : Type u} (r : ιιProp) (r' : ι'ι'Prop) [IsWellOrder ι r] [IsWellOrder ι' r'] {o : Ordinal.{u}} (ho : type r = o) (ho' : type r' = o) (f : (a : Ordinal.{u}) → a < oOrdinal.{u_3}) :
            @[deprecated "write `⨆ i : Iio a, f i` instead." (since := "2026-04-05")]
            noncomputable def Ordinal.bsup (o : Ordinal.{u}) (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :

            The supremum of a family of ordinals indexed by the set of ordinals less than some o : Ordinal.{u}. This is a special case of iSup over the family provided by familyOfBFamily.

            Equations
            Instances For
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.iSup'_eq_bsup {o : Ordinal.{u_3}} {ι : Type u_3} (r : ιιProp) [IsWellOrder ι r] (ho : type r = o) (f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_3 u_4}) :
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.sSup_eq_bsup {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_3 u_4}) :
              sSup (o.brange f) = o.bsup f
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup'_eq_iSup {ι : Type u_3} (r : ιιProp) [IsWellOrder ι r] (f : ιOrdinal.{max u_3 u_4}) :
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_eq_bsup {ι : Type u} (r r' : ιιProp) [IsWellOrder ι r] [IsWellOrder ι r'] (f : ιOrdinal.{max u v}) :
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_congr {o₁ o₂ : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < o₁Ordinal.{max u v}) (ho : o₁ = o₂) :
              o₁.bsup f = o₂.bsup fun (a : Ordinal.{u}) (h : a < o₂) => f a
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_le_iff {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} {a : Ordinal.{max u v}} :
              o.bsup f a ∀ (i : Ordinal.{u}) (h : i < o), f i h a
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_le {o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < oOrdinal.{max u v}} {a : Ordinal.{max u v}} :
              (∀ (i : Ordinal.{u}) (h : i < o), f i h a)o.bsup f a
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.le_bsup {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_4 u_3}) (i : Ordinal.{u_3}) (h : i < o) :
              f i h o.bsup f
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.lt_bsup {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) {a : Ordinal.{max u v}} :
              a < o.bsup f ∃ (i : Ordinal.{u}) (hi : i < o), a < f i hi
              @[deprecated Ordinal.IsNormal.map_iSup (since := "2026-04-05")]
              theorem Ordinal.IsNormal.bsup {f : Ordinal.{max u_3 u_4}Ordinal.{max u_4 u_5}} (H : Order.IsNormal f) {o : Ordinal.{u_4}} (g : (a : Ordinal.{u_4}) → a < oOrdinal.{max u_4 u_3}) :
              o 0f (o.bsup g) = o.bsup fun (a : Ordinal.{u_4}) (h : a < o) => f (g a h)
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.lt_bsup_of_ne_bsup {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} :
              (∀ (i : Ordinal.{u}) (h : i < o), f i h o.bsup f) ∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_not_succ_of_ne_bsup {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} (hf : ∀ {i : Ordinal.{u}} (h : i < o), f i h o.bsup f) (a : Ordinal.{max u v}) :
              a < o.bsup fOrder.succ a < o.bsup f
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_eq_zero_iff {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_4 u_3}} :
              o.bsup f = 0 ∀ (i : Ordinal.{u_3}) (hi : i < o), f i hi = 0
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.lt_bsup_of_limit {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_3 u_4}} (hf : ∀ {a a' : Ordinal.{u_3}} (ha : a < o) (ha' : a' < o), a < a'f a ha < f a' ha') (ho : a < o, Order.succ a < o) (i : Ordinal.{u_3}) (h : i < o) :
              f i h < o.bsup f
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_succ_of_mono {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < Order.succ oOrdinal.{max u_3 u_4}} (hf : ∀ {i j : Ordinal.{u_3}} (hi : i < Order.succ o) (hj : j < Order.succ o), i jf i hi f j hj) :
              (Order.succ o).bsup f = f o
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_zero (f : (a : Ordinal.{u_3}) → a < 0Ordinal.{max u_3 u_4}) :
              bsup 0 f = 0
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_const {o : Ordinal.{u}} (ho : o 0) (a : Ordinal.{max u v}) :
              (o.bsup fun (x : Ordinal.{u}) (x_1 : x < o) => a) = a
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_one (f : (a : Ordinal.{u_3}) → a < 1Ordinal.{max u_3 u_4}) :
              bsup 1 f = f 0
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_le_of_brange_subset {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max (max u v) w}} {g : (a : Ordinal.{v}) → a < o'Ordinal.{max (max u v) w}} (h : o.brange f o'.brange g) :
              o.bsup f o'.bsup g
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.bsup_eq_of_brange_eq {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max (max u v) w}} {g : (a : Ordinal.{v}) → a < o'Ordinal.{max (max u v) w}} (h : o.brange f = o'.brange g) :
              o.bsup f = o'.bsup g
              @[deprecated "bsup is deprecated" (since := "2026-04-05")]
              theorem Ordinal.iSup_Iio_eq_bsup {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_4 u_3}} :
              ⨆ (a : (Set.Iio o)), f a = o.bsup f
              @[deprecated "write `⨆ i, f i + 1` instead." (since := "2026-03-27")]
              noncomputable def Ordinal.lsub {ι : Type u} (f : ιOrdinal.{max u v}) :

              The least strict upper bound of a family of ordinals.

              Equations
              Instances For
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.iSup_eq_lsub {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_le_iff {ι : Type u_3} {f : ιOrdinal.{max u_4 u_3}} {a : Ordinal.{max u_3 u_4}} :
                lsub f a ∀ (i : ι), f i < a
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_le {ι : Type u_3} {f : ιOrdinal.{max u_4 u_3}} {a : Ordinal.{max u_4 u_3}} :
                (∀ (i : ι), f i < a)lsub f a
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lt_lsub {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) (i : ι) :
                f i < lsub f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lt_lsub_iff {ι : Type u_3} {f : ιOrdinal.{max u_4 u_3}} {a : Ordinal.{max u_3 u_4}} :
                a < lsub f ∃ (i : ι), a f i
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.iSup_le_lsub {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.succ_iSup_le_lsub_iff {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                Order.succ (iSup f) lsub f ∃ (i : ι), f i = iSup f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.succ_iSup_eq_lsub_iff {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                Order.succ (iSup f) = lsub f ∃ (i : ι), f i = iSup f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.iSup_eq_lsub_iff {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                iSup f = lsub f a < lsub f, Order.succ a < lsub f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.iSup_eq_lsub_iff_lt_iSup {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                iSup f = lsub f ∀ (i : ι), f i < iSup f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_empty {ι : Type u_3} [h : IsEmpty ι] (f : ιOrdinal.{max u_4 u_3}) :
                lsub f = 0
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_pos {ι : Type u_3} [h : Nonempty ι] (f : ιOrdinal.{max u_4 u_3}) :
                0 < lsub f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_eq_zero_iff {ι : Type u_3} (f : ιOrdinal.{max v u_3}) :
                lsub f = 0 IsEmpty ι
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_const {ι : Type u_3} [Nonempty ι] (o : Ordinal.{max u_4 u_3}) :
                (lsub fun (x : ι) => o) = Order.succ o
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_unique {ι : Type u_3} [Unique ι] (f : ιOrdinal.{max u_4 u_3}) :
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_eq_of_range_eq {ι : Type u} {ι' : Type v} {f : ιOrdinal.{max (max u v) w}} {g : ι'Ordinal.{max (max u v) w}} (h : Set.range f = Set.range g) :
                lsub f = lsub g
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_sum {α : Type u} {β : Type v} (f : α βOrdinal.{max (max u v) w}) :
                lsub f = max (lsub fun (a : α) => f (Sum.inl a)) (lsub fun (b : β) => f (Sum.inr b))
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_notMem_range {ι : Type u_3} (f : ιOrdinal.{max u_4 u_3}) :
                lsub fSet.range f
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                @[deprecated "lsub is deprecated" (since := "2026-03-27")]
                theorem Ordinal.lsub_typein (o : Ordinal.{u}) :
                lsub (typein fun (x1 x2 : o.ToType) => x1 < x2).toRelEmbedding = o
                @[deprecated Order.IsSuccPrelimit.sSup_Iio (since := "2026-03-27")]
                theorem Ordinal.iSup_typein_limit {o : Ordinal.{u}} (ho : a < o, Order.succ a < o) :
                iSup (typein fun (x1 x2 : o.ToType) => x1 < x2).toRelEmbedding = o
                @[deprecated csSup_Iic (since := "2026-03-27")]
                theorem Ordinal.iSup_typein_succ {o : Ordinal.{u_3}} :
                iSup (typein fun (x1 x2 : (Order.succ o).ToType) => x1 < x2).toRelEmbedding = o
                @[deprecated "write `⨆ i : Iio o, f i + 1` instead." (since := "2026-03-23")]
                noncomputable def Ordinal.blsub (o : Ordinal.{u}) (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :

                The least strict upper bound of a family of ordinals indexed by the set of ordinals less than some o : Ordinal.{u}.

                Equations
                Instances For
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_eq_blsub (o : Ordinal.{u}) (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  (o.bsup fun (a : Ordinal.{u}) (ha : a < o) => Order.succ (f a ha)) = o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.lsub_eq_blsub' {ι : Type u} (r : ιιProp) [IsWellOrder ι r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) → a < oOrdinal.{max u u_3}) :
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.lsub_eq_lsub {ι ι' : Type u} (r : ιιProp) (r' : ι'ι'Prop) [IsWellOrder ι r] [IsWellOrder ι' r'] {o : Ordinal.{u}} (ho : type r = o) (ho' : type r' = o) (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_eq_lsub' {ι : Type u} (r : ιιProp) [IsWellOrder ι r] (f : ιOrdinal.{max u v}) :
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_eq_blsub {ι : Type u} (r r' : ιιProp) [IsWellOrder ι r] [IsWellOrder ι r'] (f : ιOrdinal.{max u v}) :
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_congr {o₁ o₂ : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < o₁Ordinal.{max u v}) (ho : o₁ = o₂) :
                  o₁.blsub f = o₂.blsub fun (a : Ordinal.{u}) (h : a < o₂) => f a
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_le_iff {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} {a : Ordinal.{max u v}} :
                  o.blsub f a ∀ (i : Ordinal.{u}) (h : i < o), f i h < a
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_le {o : Ordinal.{u_3}} {f : (b : Ordinal.{u_3}) → b < oOrdinal.{max u_3 u_4}} {a : Ordinal.{max u_3 u_4}} :
                  (∀ (i : Ordinal.{u_3}) (h : i < o), f i h < a)o.blsub f a
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.lt_blsub {o : Ordinal.{u_3}} (f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_4 u_3}) (i : Ordinal.{u_3}) (h : i < o) :
                  f i h < o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.lt_blsub_iff {o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < oOrdinal.{max u v}} {a : Ordinal.{max u v}} :
                  a < o.blsub f ∃ (i : Ordinal.{u}) (hi : i < o), a f i hi
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_le_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  o.bsup f o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_succ_le_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  Order.succ (o.bsup f) o.blsub f ∃ (i : Ordinal.{u}) (hi : i < o), f i hi = o.bsup f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_succ_eq_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  Order.succ (o.bsup f) = o.blsub f ∃ (i : Ordinal.{u}) (hi : i < o), f i hi = o.bsup f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_eq_blsub_iff_succ {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  o.bsup f = o.blsub f a < o.blsub f, Order.succ a < o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_eq_blsub_iff_lt_bsup {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}) :
                  o.bsup f = o.blsub f ∀ (i : Ordinal.{u}) (hi : i < o), f i hi < o.bsup f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_eq_blsub_of_lt_succ_limit {o : Ordinal.{u}} (ho : Order.IsSuccLimit o) {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} (hf : ∀ (a : Ordinal.{u}) (ha : a < o), f a ha < f (Order.succ a) ) :
                  o.bsup f = o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_succ_of_mono {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < Order.succ oOrdinal.{max u v}} (hf : ∀ {i j : Ordinal.{u}} (hi : i < Order.succ o) (hj : j < Order.succ o), i jf i hi f j hj) :
                  (Order.succ o).blsub f = Order.succ (f o )
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_eq_zero_iff {o : Ordinal.{u_3}} {f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_4 u_3}} :
                  o.blsub f = 0 o = 0
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_zero (f : (a : Ordinal.{u_3}) → a < 0Ordinal.{max u_3 u_4}) :
                  blsub 0 f = 0
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_pos {o : Ordinal.{u_3}} (ho : 0 < o) (f : (a : Ordinal.{u_3}) → a < oOrdinal.{max u_3 u_4}) :
                  0 < o.blsub f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_type {α : Type u} (r : ααProp) [IsWellOrder α r] (f : (a : Ordinal.{u}) → a < type rOrdinal.{max u v}) :
                  (type r).blsub f = lsub fun (a : α) => f ((typein r).toRelEmbedding a)
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_const {o : Ordinal.{u}} (ho : o 0) (a : Ordinal.{max u v}) :
                  (o.blsub fun (x : Ordinal.{u}) (x_1 : x < o) => a) = Order.succ a
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_one (f : (a : Ordinal.{u_3}) → a < 1Ordinal.{max u_3 u_4}) :
                  blsub 1 f = Order.succ (f 0 )
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_id (o : Ordinal.{u}) :
                  (o.blsub fun (x : Ordinal.{u}) (x_1 : x < o) => x) = o
                  @[deprecated Order.IsSuccPrelimit.sSup_Iio (since := "2026-03-23")]
                  theorem Ordinal.bsup_id_limit {o : Ordinal.{u}} :
                  (∀ a < o, Order.succ a < o)(o.bsup fun (x : Ordinal.{u}) (x_1 : x < o) => x) = o
                  @[deprecated csSup_Iic (since := "2026-03-23")]
                  theorem Ordinal.bsup_id_add_one (o : Ordinal.{u}) :
                  ((o + 1).bsup fun (x : Ordinal.{u}) (x_1 : x < o + 1) => x) = o
                  @[deprecated csSup_Iic (since := "2026-03-23")]
                  theorem Ordinal.bsup_id_succ (o : Ordinal.{u}) :
                  ((Order.succ o).bsup fun (x : Ordinal.{u}) (x_1 : x < Order.succ o) => x) = o
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_le_of_brange_subset {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max (max u v) w}} {g : (a : Ordinal.{v}) → a < o'Ordinal.{max (max u v) w}} (h : o.brange f o'.brange g) :
                  o.blsub f o'.blsub g
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_eq_of_brange_eq {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max (max u v) w}} {g : (a : Ordinal.{v}) → a < o'Ordinal.{max (max u v) w}} (h : {o_1 : Ordinal.{max (max u v) w} | ∃ (i : Ordinal.{u}) (hi : i < o), f i hi = o_1} = {o : Ordinal.{max (max u v) w} | ∃ (i : Ordinal.{v}) (hi : i < o'), g i hi = o}) :
                  o.blsub f = o'.blsub g
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.bsup_comp {o o' : Ordinal.{max u v}} {f : (a : Ordinal.{max u v}) → a < oOrdinal.{max u v w}} (hf : ∀ {i j : Ordinal.{max u v}} (hi : i < o) (hj : j < o), i jf i hi f j hj) {g : (a : Ordinal.{max u v}) → a < o'Ordinal.{max u v}} (hg : o'.blsub g = o) :
                  (o'.bsup fun (a : Ordinal.{max u v}) (ha : a < o') => f (g a ha) ) = o.bsup f
                  @[deprecated "blsub is deprecated" (since := "2026-03-23")]
                  theorem Ordinal.blsub_comp {o o' : Ordinal.{max u v}} {f : (a : Ordinal.{max u v}) → a < oOrdinal.{max u v w}} (hf : ∀ {i j : Ordinal.{max u v}} (hi : i < o) (hj : j < o), i jf i hi f j hj) {g : (a : Ordinal.{max u v}) → a < o'Ordinal.{max u v}} (hg : o'.blsub g = o) :
                  (o'.blsub fun (a : Ordinal.{max u v}) (ha : a < o') => f (g a ha) ) = o.blsub f
                  @[deprecated Ordinal.IsNormal.apply_of_isSuccLimit (since := "2026-03-23")]
                  theorem Ordinal.IsNormal.bsup_eq {f : Ordinal.{u}Ordinal.{max u v}} (H : Order.IsNormal f) {o : Ordinal.{u}} (h : Order.IsSuccLimit o) :
                  (o.bsup fun (x : Ordinal.{u}) (x_1 : x < o) => f x) = f o
                  @[deprecated Ordinal.IsNormal.apply_of_isSuccLimit (since := "2026-03-23")]
                  theorem Ordinal.IsNormal.blsub_eq {f : Ordinal.{u}Ordinal.{max u v}} (H : Order.IsNormal f) {o : Ordinal.{u}} (h : Order.IsSuccLimit o) :
                  (o.blsub fun (x : Ordinal.{u}) (x_1 : x < o) => f x) = f o
                  @[deprecated Order.isNormal_iff (since := "2026-03-23")]
                  theorem Ordinal.isNormal_iff_lt_succ_and_bsup_eq {f : Ordinal.{u}Ordinal.{max u v}} :
                  Order.IsNormal f (∀ (a : Ordinal.{u}), f a < f (Order.succ a)) ∀ (o : Ordinal.{u}), Order.IsSuccLimit o(o.bsup fun (x : Ordinal.{u}) (x_1 : x < o) => f x) = f o
                  @[deprecated Order.isNormal_iff (since := "2026-03-23")]
                  theorem Ordinal.isNormal_iff_lt_succ_and_blsub_eq {f : Ordinal.{u}Ordinal.{max u v}} :
                  Order.IsNormal f (∀ (a : Ordinal.{u}), f a < f (Order.succ a)) ∀ (o : Ordinal.{u}), Order.IsSuccLimit o(o.blsub fun (x : Ordinal.{u}) (x_1 : x < o) => f x) = f o
                  @[deprecated Order.IsNormal.ext_iff (since := "2025-12-25")]
                  theorem Ordinal.IsNormal.eq_iff_zero_and_succ {f g : Ordinal.{u}Ordinal.{u}} (hf : Order.IsNormal f) (hg : Order.IsNormal g) :
                  f = g f 0 = g 0 ∀ (a : Ordinal.{u}), f a = g af (Order.succ a) = g (Order.succ a)

                  Results about injectivity and surjectivity #

                  The type of ordinals in universe u is not Small.{u}. This is the type-theoretic analog of the Burali-Forti paradox.

                  Casting naturals into ordinals, compatibility with operations #

                  @[deprecated Ordinal.apply_omega0_of_isNormal (since := "2025-12-25")]
                  theorem Ordinal.IsNormal.apply_omega0 {f : Ordinal.{u}Ordinal.{v}} (hf : Order.IsNormal f) :
                  ⨆ (n : ), f n = f omega0

                  Alias of Ordinal.apply_omega0_of_isNormal.

                  @[simp]
                  theorem Ordinal.add_iSup (o : Ordinal.{u}) {ι : Type u_1} [Small.{u, u_1} ι] [Nonempty ι] (f : ιOrdinal.{u}) :
                  o + ⨆ (i : ι), f i = ⨆ (i : ι), o + f i
                  @[simp]
                  theorem Ordinal.add_sSup (o : Ordinal.{u}) {s : Set Ordinal.{u}} [Small.{u, u + 1} s] (hs : s.Nonempty) :
                  o + sSup s = sSup ((fun (x : Ordinal.{u}) => o + x) '' s)
                  @[simp]
                  theorem Ordinal.mul_sSup (o : Ordinal.{u_1}) (s : Set Ordinal.{u_1}) :
                  o * sSup s = sSup ((fun (x : Ordinal.{u_1}) => o * x) '' s)
                  @[simp]
                  theorem Ordinal.mul_iSup (o : Ordinal.{u_1}) {ι : Sort u_2} (f : ιOrdinal.{u_1}) :
                  o * ⨆ (i : ι), f i = ⨆ (i : ι), o * f i
                  @[simp]
                  theorem Ordinal.iSup_add_natCast (o : Ordinal.{u_1}) :
                  ⨆ (n : ), o + n = o + omega0
                  @[deprecated Ordinal.iSup_add_natCast (since := "2025-12-25")]
                  theorem Ordinal.iSup_add_nat (o : Ordinal.{u_1}) :
                  ⨆ (n : ), o + n = o + omega0

                  Alias of Ordinal.iSup_add_natCast.

                  @[simp]
                  theorem Ordinal.iSup_mul_natCast (o : Ordinal.{u_1}) :
                  ⨆ (n : ), o * n = o * omega0
                  @[deprecated Ordinal.iSup_mul_natCast (since := "2025-12-25")]
                  theorem Ordinal.iSup_mul_nat (o : Ordinal.{u_1}) :
                  ⨆ (n : ), o * n = o * omega0

                  Alias of Ordinal.iSup_mul_natCast.