Documentation

Mathlib.SetTheory.Ordinal.Family

Arithmetic on families of ordinals #

Main definitions and results #

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

Families of ordinals #

There are two kinds of indexed families that naturally arise when dealing with ordinals: those indexed by some type in the appropriate universe, and those indexed by ordinals less than another. The following API allows one to convert from one kind of family to the other.

In many cases, this makes it easy to prove claims about one kind of family via the corresponding claim on the other.

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.

Instances For
    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.

    Instances For
      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.

      Instances For
        def Ordinal.familyOfBFamily {ฮฑ : Type u_1} (o : Ordinal.{u_4}) (f : (a : Ordinal.{u_4}) โ†’ 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.

        Instances For
          @[simp]
          theorem Ordinal.bfamilyOfFamily'_typein {ฮฑ : Type u_1} {ฮน : Type u_4} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (f : ฮน โ†’ ฮฑ) (i : ฮน) :
          bfamilyOfFamily' r f ((typein r).toRelEmbedding i) โ‹ฏ = f i
          @[simp]
          theorem Ordinal.bfamilyOfFamily_typein {ฮฑ : Type u_1} {ฮน : Type u_4} (f : ฮน โ†’ ฮฑ) (i : ฮน) :
          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
          theorem Ordinal.familyOfBFamily_enum {ฮฑ : Type u_1} (o : Ordinal.{u_4}) (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ) (i : Ordinal.{u_4}) (hi : i < o) :
          o.familyOfBFamily f ((enum fun (x1 x2 : o.ToType) => x1 < x2) โŸจi, โ‹ฏโŸฉ) = f i hi
          def Ordinal.brange {ฮฑ : Type u_1} (o : Ordinal.{u_4}) (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ) :
          Set ฮฑ

          The range of a family indexed by ordinals.

          Instances For
            theorem Ordinal.mem_brange {ฮฑ : Type u_1} {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ} {a : ฮฑ} :
            a โˆˆ o.brange f โ†” โˆƒ (i : Ordinal.{u_4}) (hi : i < o), f i hi = a
            theorem Ordinal.mem_brange_self {ฮฑ : Type u_1} {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ) (i : Ordinal.{u_4}) (hi : i < o) :
            f i hi โˆˆ o.brange f
            @[simp]
            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 โ†’ ฮฑ) :
            @[simp]
            theorem Ordinal.range_familyOfBFamily {ฮฑ : Type u_1} {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ) :
            @[simp]
            theorem Ordinal.brange_bfamilyOfFamily' {ฮฑ : Type u_1} {ฮน : Type u} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (f : ฮน โ†’ ฮฑ) :
            @[simp]
            theorem Ordinal.brange_bfamilyOfFamily {ฮฑ : Type u_1} {ฮน : Type u} (f : ฮน โ†’ ฮฑ) :
            @[simp]
            theorem Ordinal.brange_const {ฮฑ : Type u_1} {o : Ordinal.{u_4}} (ho : o โ‰  0) {c : ฮฑ} :
            (o.brange fun (x : Ordinal.{u_4}) (x_1 : x < o) => c) = {c}
            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)
            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)
            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)
            theorem Ordinal.comp_familyOfBFamily {ฮฑ : Type u_1} {ฮฒ : Type u_2} {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ ฮฑ) (g : ฮฑ โ†’ ฮฒ) :
            g โˆ˜ o.familyOfBFamily f = o.familyOfBFamily fun (i : Ordinal.{u_4}) (hi : i < o) => g (f i hi)

            Supremum of a family of ordinals #

            theorem Ordinal.bddAbove_range {ฮน : Type u} (f : ฮน โ†’ Ordinal.{max u v}) :

            The range of an indexed ordinal function, whose outputs live in a higher universe than the inputs, is always bounded above. See Ordinal.lsub for an explicit bound.

            theorem Ordinal.bddAbove_range_comp {ฮน : Type u} {f : ฮน โ†’ Ordinal.{v}} (hf : BddAbove (Set.range f)) (g : Ordinal.{v} โ†’ Ordinal.{max v w}) :
            BddAbove (Set.range (g โˆ˜ f))
            theorem Ordinal.le_iSup {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{u}) [Small.{u, u_4} ฮน] (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_4} {f : ฮน โ†’ Ordinal.{u}} {a : Ordinal.{u}} [Small.{u, u_4} ฮน] :
            โจ† (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_4} {f : ฮน โ†’ Ordinal.{u_5}} {a : Ordinal.{u_5}} :
            (โˆ€ (i : ฮน), f i โ‰ค a) โ†’ โจ† (i : ฮน), f i โ‰ค a

            An alias of ciSup_le' for discoverability.

            @[simp]
            theorem Ordinal.lt_iSup_iff {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{u}} {a : Ordinal.{u}} [Small.{u, u_4} ฮน] :
            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_4} (f : ฮน โ†’ Ordinal.{u}) [Small.{u, u_4} ฮน] (i : ฮน) :
            f i < โจ† (i : ฮน), f i + 1
            theorem Ordinal.iSup_add_one_le_iff {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{u}} {a : Ordinal.{u}} [Small.{u, u_4} ฮน] :
            โจ† (i : ฮน), f i + 1 โ‰ค a โ†” โˆ€ (i : ฮน), f i < a
            theorem Ordinal.iSup_add_one_le {ฮน : Sort u_4} {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_4} {f : ฮน โ†’ Ordinal.{u}} {a : Ordinal.{u}} [Small.{u, u_4} ฮน] :
            a < โจ† (i : ฮน), f i + 1 โ†” โˆƒ (i : ฮน), a โ‰ค f i
            theorem Ordinal.succ_lt_iSup_of_ne_iSup {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{u}} [Small.{u, u_4} ฮน] (hf : โˆ€ (i : ฮน), f i โ‰  iSup f) {a : Ordinal.{u}} (hao : a < iSup f) :
            theorem Ordinal.iSup_eq_zero_iff {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{u}} [Small.{u, u_4} ฮน] :
            iSup f = 0 โ†” โˆ€ (i : ฮน), f i = 0
            @[deprecated congrArg (since := "2026-03-27")]
            theorem Ordinal.iSup_eq_of_range_eq {ฮน : Sort u_4} {ฮน' : Sort u_5} {f : ฮน โ†’ Ordinal.{u_6}} {g : ฮน' โ†’ Ordinal.{u_6}} (h : Set.range f = Set.range g) :
            iSup f = iSup g
            @[deprecated iSup_succ (since := "2025-10-08")]
            theorem Ordinal.iSup_succ {ฮฑ : Type u_2} [ConditionallyCompleteLinearOrderBot ฮฑ] [SuccOrder ฮฑ] (x : ฮฑ) :
            โจ† (a : โ†‘(Set.Iio x)), Order.succ โ†‘a = x

            Alias of iSup_succ.

            theorem Ordinal.iSup_sum {ฮฑ : Type u_4} {ฮฒ : Type u_5} (f : ฮฑ โŠ• ฮฒ โ†’ Ordinal.{u}) [Small.{u, u_4} ฮฑ] [Small.{u, u_5} ฮฒ] :
            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_4} (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")]
            theorem Ordinal.IsNormal.map_sSup_of_bddAbove {f : Ordinal.{u} โ†’ Ordinal.{v}} (H : Ordinal.IsNormal f) {s : Set Ordinal.{u}} (hs : BddAbove s) (hn : s.Nonempty) :
            f (sSup s) = sSup (f '' s)
            @[deprecated Order.IsNormal.map_sSup (since := "2025-12-25")]
            theorem Ordinal.IsNormal.map_sSup {f : Ordinal.{u} โ†’ Ordinal.{v}} (H : Order.IsNormal f) {s : Set Ordinal.{u}} (hn : s.Nonempty) [Small.{u, u + 1} โ†‘s] :
            f (sSup s) = sSup (f '' s)
            @[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_4} (f : ฮน โ†’ Cardinal.{u_5}) :
            (โจ† (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_4}) :
            โจ† (i : ฮฒ), f i โ‰ค โจ† (i : ฮฒ), f i + 1
            theorem Ordinal.iSup_add_one {ฮฒ : Type u_4} [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
            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 < o โ†’ Ordinal.{u_4}) :
            noncomputable def Ordinal.bsup (o : Ordinal.{u}) (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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.

            Instances For
              theorem Ordinal.iSup'_eq_bsup {o : Ordinal.{u_4}} {ฮน : Type u_4} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (ho : type r = o) (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_4 u_5}) :
              iSup (familyOfBFamily' r ho f) = o.bsup f
              @[simp]
              theorem Ordinal.bsup'_eq_iSup {ฮน : Type u_4} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (f : ฮน โ†’ Ordinal.{max u_4 u_5}) :
              theorem Ordinal.bsup_eq_bsup {ฮน : Type u} (r r' : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] [IsWellOrder ฮน r'] (f : ฮน โ†’ Ordinal.{max u v}) :
              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 โ‹ฏ
              theorem Ordinal.bsup_le_iff {o : Ordinal.{u}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}} {a : Ordinal.{max u v}} :
              o.bsup f โ‰ค a โ†” โˆ€ (i : Ordinal.{u}) (h : i < o), f i h โ‰ค a
              theorem Ordinal.bsup_le {o : Ordinal.{u}} {f : (b : Ordinal.{u}) โ†’ b < o โ†’ Ordinal.{max u v}} {a : Ordinal.{max u v}} :
              (โˆ€ (i : Ordinal.{u}) (h : i < o), f i h โ‰ค a) โ†’ o.bsup f โ‰ค a
              theorem Ordinal.le_bsup {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}) (i : Ordinal.{u_4}) (h : i < o) :
              f i h โ‰ค o.bsup f
              theorem Ordinal.lt_bsup {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) {a : Ordinal.{max u v}} :
              a < o.bsup f โ†” โˆƒ (i : Ordinal.{u}) (hi : i < o), a < f i hi
              theorem Ordinal.IsNormal.bsup {f : Ordinal.{max u_4 u_5} โ†’ Ordinal.{max u_5 u_6}} (H : Order.IsNormal f) {o : Ordinal.{u_5}} (g : (a : Ordinal.{u_5}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}) :
              o โ‰  0 โ†’ f (o.bsup g) = o.bsup fun (a : Ordinal.{u_5}) (h : a < o) => f (g a h)
              theorem Ordinal.lt_bsup_of_ne_bsup {o : Ordinal.{u}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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
              theorem Ordinal.bsup_not_succ_of_ne_bsup {o : Ordinal.{u}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}} (hf : โˆ€ {i : Ordinal.{u}} (h : i < o), f i h โ‰  o.bsup f) (a : Ordinal.{max u v}) :
              a < o.bsup f โ†’ Order.succ a < o.bsup f
              @[simp]
              theorem Ordinal.bsup_eq_zero_iff {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}} :
              o.bsup f = 0 โ†” โˆ€ (i : Ordinal.{u_4}) (hi : i < o), f i hi = 0
              theorem Ordinal.lt_bsup_of_limit {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_4 u_5}} (hf : โˆ€ {a a' : Ordinal.{u_4}} (ha : a < o) (ha' : a' < o), a < a' โ†’ f a ha < f a' ha') (ho : โˆ€ a < o, Order.succ a < o) (i : Ordinal.{u_4}) (h : i < o) :
              f i h < o.bsup f
              theorem Ordinal.bsup_succ_of_mono {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < Order.succ o โ†’ Ordinal.{max u_4 u_5}} (hf : โˆ€ {i j : Ordinal.{u_4}} (hi : i < Order.succ o) (hj : j < Order.succ o), i โ‰ค j โ†’ f i hi โ‰ค f j hj) :
              (Order.succ o).bsup f = f o โ‹ฏ
              @[simp]
              theorem Ordinal.bsup_zero (f : (a : Ordinal.{u_4}) โ†’ a < 0 โ†’ Ordinal.{max u_4 u_5}) :
              bsup 0 f = 0
              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
              @[simp]
              theorem Ordinal.bsup_one (f : (a : Ordinal.{u_4}) โ†’ a < 1 โ†’ Ordinal.{max u_4 u_5}) :
              bsup 1 f = f 0 โ‹ฏ
              theorem Ordinal.bsup_le_of_brange_subset {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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
              theorem Ordinal.bsup_eq_of_brange_eq {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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
              theorem Ordinal.iSup_Iio_eq_bsup {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}} :
              โจ† (a : โ†‘(Set.Iio o)), f โ†‘a โ‹ฏ = o.bsup f
              @[deprecated Ordinal.iSup_eq_iSup (since := "2025-10-01")]
              theorem Ordinal.sup_eq_sup {ฮน ฮน' : 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 < o โ†’ Ordinal.{u_4}) :

              Alias of Ordinal.iSup_eq_iSup.

              @[deprecated Ordinal.iSup'_eq_bsup (since := "2025-10-01")]
              theorem Ordinal.sup_eq_bsup' {o : Ordinal.{u_4}} {ฮน : Type u_4} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (ho : type r = o) (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_4 u_5}) :
              iSup (familyOfBFamily' r ho f) = o.bsup f

              Alias of Ordinal.iSup'_eq_bsup.

              @[deprecated Ordinal.iSup_eq_bsup (since := "2025-10-01")]
              theorem Ordinal.sup_eq_bsup {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_4 u_5}) :

              Alias of Ordinal.iSup_eq_bsup.

              @[deprecated Ordinal.bsup'_eq_iSup (since := "2025-10-01")]
              theorem Ordinal.bsup_eq_sup' {ฮน : Type u_4} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (f : ฮน โ†’ Ordinal.{max u_4 u_5}) :

              Alias of Ordinal.bsup'_eq_iSup.

              @[deprecated Ordinal.bsup_eq_iSup (since := "2025-10-01")]
              theorem Ordinal.bsup_eq_sup {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :

              Alias of Ordinal.bsup_eq_iSup.

              noncomputable def Ordinal.lsub {ฮน : Type u} (f : ฮน โ†’ Ordinal.{max u v}) :

              The least strict upper bound of a family of ordinals.

              Instances For
                @[simp]
                theorem Ordinal.iSup_eq_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup (Order.succ โˆ˜ f) = lsub f
                theorem Ordinal.lsub_le_iff {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{max u_5 u_4}} {a : Ordinal.{max u_4 u_5}} :
                lsub f โ‰ค a โ†” โˆ€ (i : ฮน), f i < a
                theorem Ordinal.lsub_le {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{max u_5 u_4}} {a : Ordinal.{max u_5 u_4}} :
                (โˆ€ (i : ฮน), f i < a) โ†’ lsub f โ‰ค a
                theorem Ordinal.lt_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) (i : ฮน) :
                f i < lsub f
                theorem Ordinal.lt_lsub_iff {ฮน : Type u_4} {f : ฮน โ†’ Ordinal.{max u_5 u_4}} {a : Ordinal.{max u_4 u_5}} :
                a < lsub f โ†” โˆƒ (i : ฮน), a โ‰ค f i
                theorem Ordinal.succ_iSup_le_lsub_iff {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                Order.succ (iSup f) โ‰ค lsub f โ†” โˆƒ (i : ฮน), f i = iSup f
                theorem Ordinal.succ_iSup_eq_lsub_iff {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                Order.succ (iSup f) = lsub f โ†” โˆƒ (i : ฮน), f i = iSup f
                theorem Ordinal.iSup_eq_lsub_iff {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup f = lsub f โ†” โˆ€ a < lsub f, Order.succ a < lsub f
                theorem Ordinal.iSup_eq_lsub_iff_lt_iSup {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup f = lsub f โ†” โˆ€ (i : ฮน), f i < iSup f
                @[simp]
                theorem Ordinal.lsub_empty {ฮน : Type u_4} [h : IsEmpty ฮน] (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                lsub f = 0
                theorem Ordinal.lsub_pos {ฮน : Type u_4} [h : Nonempty ฮน] (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                0 < lsub f
                @[simp]
                theorem Ordinal.lsub_eq_zero_iff {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max v u_4}) :
                lsub f = 0 โ†” IsEmpty ฮน
                @[simp]
                theorem Ordinal.lsub_const {ฮน : Type u_4} [Nonempty ฮน] (o : Ordinal.{max u_5 u_4}) :
                (lsub fun (x : ฮน) => o) = Order.succ o
                @[simp]
                theorem Ordinal.lsub_unique {ฮน : Type u_4} [Unique ฮน] (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                theorem Ordinal.lsub_le_of_range_subset {ฮน : 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) :
                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
                @[simp]
                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))
                theorem Ordinal.lsub_notMem_range {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                lsub f โˆ‰ Set.range f
                @[simp]
                theorem Ordinal.lsub_typein (o : Ordinal.{u}) :
                lsub โ‡‘(typein fun (x1 x2 : o.ToType) => x1 < x2).toRelEmbedding = o
                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
                @[simp]
                theorem Ordinal.iSup_typein_succ {o : Ordinal.{u_4}} :
                iSup โ‡‘(typein fun (x1 x2 : (Order.succ o).ToType) => x1 < x2).toRelEmbedding = o
                @[deprecated Ordinal.iSup_eq_lsub (since := "2025-10-01")]
                theorem Ordinal.sup_eq_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup (Order.succ โˆ˜ f) = lsub f

                Alias of Ordinal.iSup_eq_lsub.

                @[deprecated Ordinal.iSup_le_lsub (since := "2025-10-01")]
                theorem Ordinal.sup_le_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :

                Alias of Ordinal.iSup_le_lsub.

                @[deprecated Ordinal.lsub_le_succ_iSup (since := "2025-10-01")]
                theorem Ordinal.lsub_le_sup_succ {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :

                Alias of Ordinal.lsub_le_succ_iSup.

                @[deprecated Ordinal.iSup_eq_lsub_or_succ_iSup_eq_lsub (since := "2025-10-01")]
                theorem Ordinal.sup_eq_lsub_or_sup_succ_eq_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup f = lsub f โˆจ Order.succ (iSup f) = lsub f

                Alias of Ordinal.iSup_eq_lsub_or_succ_iSup_eq_lsub.

                @[deprecated Ordinal.succ_iSup_le_lsub_iff (since := "2025-10-01")]
                theorem Ordinal.sup_succ_le_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                Order.succ (iSup f) โ‰ค lsub f โ†” โˆƒ (i : ฮน), f i = iSup f

                Alias of Ordinal.succ_iSup_le_lsub_iff.

                @[deprecated Ordinal.succ_iSup_eq_lsub_iff (since := "2025-10-01")]
                theorem Ordinal.sup_succ_eq_lsub {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                Order.succ (iSup f) = lsub f โ†” โˆƒ (i : ฮน), f i = iSup f

                Alias of Ordinal.succ_iSup_eq_lsub_iff.

                @[deprecated Ordinal.iSup_eq_lsub_iff (since := "2025-10-01")]
                theorem Ordinal.sup_eq_lsub_iff_succ {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup f = lsub f โ†” โˆ€ a < lsub f, Order.succ a < lsub f

                Alias of Ordinal.iSup_eq_lsub_iff.

                @[deprecated Ordinal.iSup_eq_lsub_iff_lt_iSup (since := "2025-10-01")]
                theorem Ordinal.sup_eq_lsub_iff_lt_sup {ฮน : Type u_4} (f : ฮน โ†’ Ordinal.{max u_5 u_4}) :
                iSup f = lsub f โ†” โˆ€ (i : ฮน), f i < iSup f

                Alias of Ordinal.iSup_eq_lsub_iff_lt_iSup.

                @[deprecated Ordinal.iSup_typein_limit (since := "2025-10-01")]
                theorem Ordinal.sup_typein_limit {o : Ordinal.{u}} (ho : โˆ€ a < o, Order.succ a < o) :
                iSup โ‡‘(typein fun (x1 x2 : o.ToType) => x1 < x2).toRelEmbedding = o

                Alias of Ordinal.iSup_typein_limit.

                @[deprecated Ordinal.iSup_typein_succ (since := "2025-10-01")]
                theorem Ordinal.sup_typein_succ {o : Ordinal.{u_4}} :
                iSup โ‡‘(typein fun (x1 x2 : (Order.succ o).ToType) => x1 < x2).toRelEmbedding = o

                Alias of Ordinal.iSup_typein_succ.

                noncomputable def Ordinal.blsub (o : Ordinal.{u}) (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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}.

                This is to lsub as bsup is to sup.

                Instances For
                  @[simp]
                  theorem Ordinal.bsup_eq_blsub (o : Ordinal.{u}) (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  (o.bsup fun (a : Ordinal.{u}) (ha : a < o) => Order.succ (f a ha)) = o.blsub f
                  theorem Ordinal.lsub_eq_blsub' {ฮน : Type u} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] {o : Ordinal.{u}} (ho : type r = o) (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u u_4}) :
                  lsub (familyOfBFamily' r ho f) = o.blsub f
                  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 < o โ†’ Ordinal.{max u v}) :
                  @[simp]
                  theorem Ordinal.lsub_eq_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  @[simp]
                  theorem Ordinal.blsub_eq_lsub' {ฮน : Type u} (r : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] (f : ฮน โ†’ Ordinal.{max u v}) :
                  theorem Ordinal.blsub_eq_blsub {ฮน : Type u} (r r' : ฮน โ†’ ฮน โ†’ Prop) [IsWellOrder ฮน r] [IsWellOrder ฮน r'] (f : ฮน โ†’ Ordinal.{max u v}) :
                  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 โ‹ฏ
                  theorem Ordinal.blsub_le_iff {o : Ordinal.{u}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}} {a : Ordinal.{max u v}} :
                  o.blsub f โ‰ค a โ†” โˆ€ (i : Ordinal.{u}) (h : i < o), f i h < a
                  theorem Ordinal.blsub_le {o : Ordinal.{u_4}} {f : (b : Ordinal.{u_4}) โ†’ b < o โ†’ Ordinal.{max u_4 u_5}} {a : Ordinal.{max u_4 u_5}} :
                  (โˆ€ (i : Ordinal.{u_4}) (h : i < o), f i h < a) โ†’ o.blsub f โ‰ค a
                  theorem Ordinal.lt_blsub {o : Ordinal.{u_4}} (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}) (i : Ordinal.{u_4}) (h : i < o) :
                  f i h < o.blsub f
                  theorem Ordinal.lt_blsub_iff {o : Ordinal.{u}} {f : (b : Ordinal.{u}) โ†’ b < o โ†’ Ordinal.{max u v}} {a : Ordinal.{max u v}} :
                  a < o.blsub f โ†” โˆƒ (i : Ordinal.{u}) (hi : i < o), a โ‰ค f i hi
                  theorem Ordinal.bsup_succ_le_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  Order.succ (o.bsup f) โ‰ค o.blsub f โ†” โˆƒ (i : Ordinal.{u}) (hi : i < o), f i hi = o.bsup f
                  theorem Ordinal.bsup_succ_eq_blsub {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  Order.succ (o.bsup f) = o.blsub f โ†” โˆƒ (i : Ordinal.{u}) (hi : i < o), f i hi = o.bsup f
                  theorem Ordinal.bsup_eq_blsub_iff_succ {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  o.bsup f = o.blsub f โ†” โˆ€ a < o.blsub f, Order.succ a < o.blsub f
                  theorem Ordinal.bsup_eq_blsub_iff_lt_bsup {o : Ordinal.{u}} (f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}) :
                  o.bsup f = o.blsub f โ†” โˆ€ (i : Ordinal.{u}) (hi : i < o), f i hi < o.bsup f
                  theorem Ordinal.bsup_eq_blsub_of_lt_succ_limit {o : Ordinal.{u}} (ho : Order.IsSuccLimit o) {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max u v}} (hf : โˆ€ (a : Ordinal.{u}) (ha : a < o), f a ha < f (Order.succ a) โ‹ฏ) :
                  o.bsup f = o.blsub f
                  theorem Ordinal.blsub_succ_of_mono {o : Ordinal.{u}} {f : (a : Ordinal.{u}) โ†’ a < Order.succ o โ†’ Ordinal.{max u v}} (hf : โˆ€ {i j : Ordinal.{u}} (hi : i < Order.succ o) (hj : j < Order.succ o), i โ‰ค j โ†’ f i hi โ‰ค f j hj) :
                  (Order.succ o).blsub f = Order.succ (f o โ‹ฏ)
                  @[simp]
                  theorem Ordinal.blsub_eq_zero_iff {o : Ordinal.{u_4}} {f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_5 u_4}} :
                  o.blsub f = 0 โ†” o = 0
                  @[simp]
                  theorem Ordinal.blsub_zero (f : (a : Ordinal.{u_4}) โ†’ a < 0 โ†’ Ordinal.{max u_4 u_5}) :
                  blsub 0 f = 0
                  theorem Ordinal.blsub_pos {o : Ordinal.{u_4}} (ho : 0 < o) (f : (a : Ordinal.{u_4}) โ†’ a < o โ†’ Ordinal.{max u_4 u_5}) :
                  0 < o.blsub f
                  theorem Ordinal.blsub_type {ฮฑ : Type u} (r : ฮฑ โ†’ ฮฑ โ†’ Prop) [IsWellOrder ฮฑ r] (f : (a : Ordinal.{u}) โ†’ a < type r โ†’ Ordinal.{max u v}) :
                  (type r).blsub f = lsub fun (a : ฮฑ) => f ((typein r).toRelEmbedding a) โ‹ฏ
                  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
                  @[simp]
                  theorem Ordinal.blsub_one (f : (a : Ordinal.{u_4}) โ†’ a < 1 โ†’ Ordinal.{max u_4 u_5}) :
                  blsub 1 f = Order.succ (f 0 โ‹ฏ)
                  @[simp]
                  theorem Ordinal.blsub_id (o : Ordinal.{u}) :
                  (o.blsub fun (x : Ordinal.{u}) (x_1 : x < o) => x) = o
                  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
                  @[simp]
                  theorem Ordinal.bsup_id_add_one (o : Ordinal.{u}) :
                  ((o + 1).bsup fun (x : Ordinal.{u}) (x_1 : x < o + 1) => x) = o
                  theorem Ordinal.blsub_le_of_brange_subset {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{max (max u v) w}} {g : (a : Ordinal.{v}) โ†’ a < o' โ†’ Ordinal.{max (max u v) w}} (h : o.brange f โІ o'.brange g) :
                  theorem Ordinal.blsub_eq_of_brange_eq {o : Ordinal.{u}} {o' : Ordinal.{v}} {f : (a : Ordinal.{u}) โ†’ a < o โ†’ Ordinal.{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
                  theorem Ordinal.bsup_comp {o o' : Ordinal.{max u v}} {f : (a : Ordinal.{max u v}) โ†’ a < o โ†’ Ordinal.{max u v w}} (hf : โˆ€ {i j : Ordinal.{max u v}} (hi : i < o) (hj : j < o), i โ‰ค j โ†’ f 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
                  theorem Ordinal.blsub_comp {o o' : Ordinal.{max u v}} {f : (a : Ordinal.{max u v}) โ†’ a < o โ†’ Ordinal.{max u v w}} (hf : โˆ€ {i j : Ordinal.{max u v}} (hi : i < o) (hj : j < o), i โ‰ค j โ†’ f 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
                  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
                  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
                  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
                  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 a โ†’ f (Order.succ a) = g (Order.succ a)

                  Results about injectivity and surjectivity #

                  theorem not_surjective_of_ordinal {ฮฑ : Type u_1} [Small.{u, u_1} ฮฑ] (f : ฮฑ โ†’ Ordinal.{u}) :
                  ยฌFunction.Surjective f
                  theorem not_injective_of_ordinal {ฮฑ : Type u_1} [Small.{u, u_1} ฮฑ] (f : Ordinal.{u} โ†’ ฮฑ) :
                  ยฌFunction.Injective f

                  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 #

                  theorem Ordinal.apply_omega0_of_isNormal {f : Ordinal.{u} โ†’ Ordinal.{v}} (hf : Order.IsNormal f) :
                  โจ† (n : โ„•), f โ†‘n = f omega0
                  @[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.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.