Documentation

Mathlib.SetTheory.Cardinal.Cofinality.Ordinal

Cofinality of an ordinal #

This file contains the definition of the cofinality Ordinal.cof o of an ordinal. This is the cofinality of the ordinal o when viewed as a linear order.

Main statements #

Implementation notes #

Cofinality of ordinals #

noncomputable def Ordinal.cof (o : Ordinal.{u}) :

The cofinality on an ordinal is the Order.cof of any isomorphic linear order.

In particular, cof 0 = 0 and cof (succ o) = 1.

Equations
Instances For
    @[simp]
    theorem Ordinal.cof_type (α : Type u_1) [LinearOrder α] [WellFoundedLT α] :
    (type fun (x1 x2 : α) => x1 < x2).cof = Order.cof α
    @[deprecated Ordinal.cof_type (since := "2026-02-18")]
    theorem Ordinal.cof_type_lt (α : Type u_1) [LinearOrder α] [WellFoundedLT α] :
    (type fun (x1 x2 : α) => x1 < x2).cof = Order.cof α

    Alias of Ordinal.cof_type.

    @[deprecated Ordinal.cof_toType (since := "2026-02-18")]

    Alias of Ordinal.cof_toType.

    @[deprecated Order.le_cof_iff (since := "2026-02-18")]
    theorem Ordinal.le_cof_type {α : Type u} [Preorder α] {c : Cardinal.{u}} :
    c Order.cof α ∀ (s : Set α), IsCofinal sc Cardinal.mk s

    Alias of Order.le_cof_iff.

    @[deprecated Order.cof_le (since := "2026-02-18")]
    theorem Ordinal.cof_type_le {α : Type u} [Preorder α] {s : Set α} (h : IsCofinal s) :

    Alias of Order.cof_le.

    @[deprecated Order.cof_le (since := "2026-02-18")]
    theorem Ordinal.lt_cof_type {α : Type u} [Preorder α] {s : Set α} (h : IsCofinal s) :

    Alias of Order.cof_le.

    @[deprecated Order.cof_eq (since := "2026-02-18")]
    theorem Ordinal.cof_eq (α : Type u) [Preorder α] :
    ∃ (s : Set α), IsCofinal s Cardinal.mk s = Order.cof α

    Alias of Order.cof_eq.

    theorem Order.cof_Iio {α : Type u} [LinearOrder α] [WellFoundedLT α] (x : α) :
    cof (Set.Iio x) = ((Ordinal.typein fun (x1 x2 : α) => x1 < x2).toRelEmbedding x).cof
    @[simp]
    theorem Ordinal.cof_eq_zero {o : Ordinal.{u_1}} :
    o.cof = 0 o = 0
    @[deprecated Ordinal.cof_eq_zero (since := "2026-02-18")]
    @[simp]
    theorem Ordinal.cof_pos {o : Ordinal.{u_1}} :
    0 < o.cof 0 < o
    @[simp]
    theorem Ordinal.cof_zero :
    cof 0 = 0
    @[simp]
    theorem Ordinal.cof_one :
    cof 1 = 1
    @[deprecated Ordinal.one_lt_cof_iff (since := "2026-03-22")]

    A countable limit ordinal has cofinality ℵ₀.

    @[deprecated Ordinal.cof_eq_one_iff (since := "2026-02-18")]

    Alias of Ordinal.cof_eq_one_iff.

    theorem Ordinal.ord_cof_eq (α : Type u_1) [LinearOrder α] [WellFoundedLT α] :
    ∃ (s : Set α), IsCofinal s (type fun (x1 x2 : s) => x1 < x2) = (Order.cof α).ord
    @[simp]
    theorem Order.cof_ord_cof (α : Type u_1) [LinearOrder α] [WellFoundedLT α] :
    (cof α).ord.cof = cof α
    @[deprecated Ordinal.cof_ord_cof (since := "2026-03-21")]

    Alias of Ordinal.cof_ord_cof.

    Cofinalities and suprema #

    theorem Ordinal.cof_iSup_add_one {γ : Type u} [LinearOrder γ] {f : γOrdinal.{u}} (hf : StrictMono f) :
    (⨆ (i : γ), f i + 1).cof = Order.cof γ
    theorem Ordinal.cof_iSup {γ : Type u} [LinearOrder γ] [NoMaxOrder γ] {f : γOrdinal.{u}} (hf : StrictMono f) :
    (⨆ (i : γ), f i).cof = Order.cof γ
    theorem Ordinal.cof_iSup_Iio_add_one {a : Ordinal.{u_1}} {f : (Set.Iio a)Ordinal.{u_1}} (hf : StrictMono f) :
    (⨆ (i : (Set.Iio a)), f i + 1).cof = a.cof
    theorem Ordinal.cof_iSup_Iio {a : Ordinal.{u_1}} {f : (Set.Iio a)Ordinal.{u_1}} (hf : StrictMono f) (ha : Order.IsSuccPrelimit a) :
    (⨆ (i : (Set.Iio a)), f i).cof = a.cof
    @[deprecated Ordinal.cof_map_of_isNormal (since := "2026-03-19")]

    Alias of Ordinal.cof_map_of_isNormal.

    @[deprecated Ordinal.cof_eq_of_isNormal (since := "2025-12-25")]

    Alias of Ordinal.cof_map_of_isNormal.


    Alias of Ordinal.cof_map_of_isNormal.

    @[deprecated Ordinal.le_cof_map_of_isNormal (since := "2026-03-19")]

    Alias of Ordinal.le_cof_map_of_isNormal.

    @[deprecated Ordinal.le_cof_map_of_isNormal (since := "2025-12-25")]

    Alias of Ordinal.le_cof_map_of_isNormal.

    theorem Ordinal.sSup_add_one_lt_of_lt_cof {s : Set Ordinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.mk s < (lift.{u + 1, u} a).cof) (hs : is, i < a) :
    sSup ((fun (x : Ordinal.{u}) => x + 1) '' s) < a
    theorem Ordinal.sSup_lt_of_lt_cof {s : Set Ordinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.mk s < (lift.{u + 1, u} a).cof) (hs : is, i < a) :
    sSup s < a
    theorem Ordinal.lift_iSup_add_one_lt_of_lt_cof {β : Type v} {f : βOrdinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.lift.{u, v} (Cardinal.mk β) < (lift.{v, u} a).cof) (hf : ∀ (i : β), f i < a) :
    ⨆ (i : β), f i + 1 < a
    theorem Ordinal.iSup_add_one_lt_of_lt_cof {α : Type u} {f : αOrdinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.mk α < a.cof) (hf : ∀ (i : α), f i < a) :
    ⨆ (i : α), f i + 1 < a
    theorem Ordinal.lift_iSup_lt_of_lt_cof {β : Type v} {f : βOrdinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.lift.{u, v} (Cardinal.mk β) < (lift.{v, u} a).cof) (hf : ∀ (i : β), f i < a) :
    ⨆ (i : β), f i < a
    theorem Ordinal.iSup_lt_of_lt_cof {α : Type u} {f : αOrdinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.mk α < a.cof) (hf : ∀ (i : α), f i < a) :
    ⨆ (i : α), f i < a
    theorem Ordinal.cof_iSup_add_one_le {α : Type u} (f : αOrdinal.{u}) :
    (⨆ (i : α), f i + 1).cof Cardinal.mk α
    theorem Cardinal.sSup_lt_of_lt_cof_ord {s : Set Cardinal.{u}} {a : Cardinal.{u}} (ha : mk s < (lift.{u + 1, u} a).ord.cof) (hs : is, i < a) :
    sSup s < a
    theorem Cardinal.lift_iSup_lt_of_lt_cof_ord {β : Type v} {f : βCardinal.{u}} {a : Cardinal.{u}} (ha : lift.{u, v} (mk β) < (lift.{v, u} a).ord.cof) (hf : ∀ (i : β), f i < a) :
    ⨆ (i : β), f i < a
    theorem Cardinal.iSup_lt_of_lt_cof_ord {α : Type u} {f : αCardinal.{u}} {a : Cardinal.{u}} (ha : mk α < a.ord.cof) (hf : ∀ (i : α), f i < a) :
    ⨆ (i : α), f i < a
    @[deprecated "to build an increasing function with limit o, use the fundamental sequence API." (since := "2026-03-27")]

    The set in the lsub characterization of cof is nonempty.

    @[deprecated "to build an increasing function with limit o, use the fundamental sequence API." (since := "2026-03-27")]
    theorem Ordinal.cof_eq_sInf_lsub (o : Ordinal.{u}) :
    o.cof = sInf {a : Cardinal.{u} | ∃ (ι : Type u) (f : ιOrdinal.{u}), lsub f = o Cardinal.mk ι = a}
    @[deprecated "to build an increasing function with limit o, use the fundamental sequence API." (since := "2026-03-27")]
    theorem Ordinal.exists_lsub_cof (o : Ordinal.{u}) :
    ∃ (ι : Type u) (f : ιOrdinal.{u}), lsub f = o Cardinal.mk ι = o.cof
    @[deprecated Ordinal.cof_iSup_add_one_le (since := "2026-03-22")]
    theorem Ordinal.cof_lsub_le {ι : Type u} (f : ιOrdinal.{u}) :
    @[deprecated Ordinal.cof_lift_iSup_add_one_le (since := "2026-03-22")]
    @[deprecated Order.le_cof_iff (since := "2026-03-21")]
    theorem Ordinal.le_cof_iff_lsub {o : Ordinal.{u}} {a : Cardinal.{u}} :
    a o.cof ∀ {ι : Type u} (f : ιOrdinal.{u}), lsub f = oa Cardinal.mk ι
    @[deprecated Ordinal.lift_iSup_add_one_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.lsub_lt_ord_lift {ι : Type u} {f : ιOrdinal.{max u v}} {c : Ordinal.{max u v}} ( : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.cof) (hf : ∀ (i : ι), f i < c) :
    lsub f < c
    @[deprecated Ordinal.iSup_add_one_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.lsub_lt_ord {ι : Type u} {f : ιOrdinal.{u}} {c : Ordinal.{u}} ( : Cardinal.mk ι < c.cof) :
    (∀ (i : ι), f i < c)lsub f < c
    @[deprecated Ordinal.lift_iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.cof_iSup_le_lift {ι : Type u} {f : ιOrdinal.{max u v}} (H : ∀ (i : ι), f i < iSup f) :
    @[deprecated Ordinal.iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.cof_iSup_le {ι : Type u_1} {f : ιOrdinal.{u_1}} (H : ∀ (i : ι), f i < iSup f) :
    @[deprecated Ordinal.lift_iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.iSup_lt_ord_lift {ι : Type u} {f : ιOrdinal.{max u v}} {c : Ordinal.{max u v}} ( : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.cof) (hf : ∀ (i : ι), f i < c) :
    iSup f < c
    @[deprecated Ordinal.iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.iSup_lt_ord {α : Type u} {f : αOrdinal.{u}} {a : Ordinal.{u}} (ha : Cardinal.mk α < a.cof) (hf : ∀ (i : α), f i < a) :
    ⨆ (i : α), f i < a

    Alias of Ordinal.iSup_lt_of_lt_cof.

    @[deprecated Ordinal.lift_iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.iSup_lt_lift {ι : Type u} {f : ιCardinal.{max u v}} {c : Cardinal.{max u v}} ( : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.ord.cof) (hf : ∀ (i : ι), f i < c) :
    iSup f < c
    @[deprecated Cardinal.iSup_lt_of_lt_cof_ord (since := "2026-03-22")]
    theorem Ordinal.iSup_lt {α : Type u} {f : αCardinal.{u}} {a : Cardinal.{u}} (ha : Cardinal.mk α < a.ord.cof) (hf : ∀ (i : α), f i < a) :
    ⨆ (i : α), f i < a

    Alias of Cardinal.iSup_lt_of_lt_cof_ord.

    theorem Ordinal.nfpFamily_lt_ord_lift {ι : Type u} {f : ιOrdinal.{max u v}Ordinal.{max u v}} {c : Ordinal.{max u v}} (hc : Cardinal.aleph0 < c.cof) (hc' : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.cof) (hf : ∀ (i : ι), b < c, f i b < c) {a : Ordinal.{max u v}} (ha : a < c) :
    nfpFamily f a < c
    theorem Ordinal.nfpFamily_lt_ord {ι : Type u} {f : ιOrdinal.{u}Ordinal.{u}} {c : Ordinal.{u}} (hc : Cardinal.aleph0 < c.cof) (hc' : Cardinal.mk ι < c.cof) (hf : ∀ (i : ι), b < c, f i b < c) {a : Ordinal.{u}} :
    a < cnfpFamily f a < c
    theorem Ordinal.nfp_lt_ord {f : Ordinal.{u_1}Ordinal.{u_1}} {c : Ordinal.{u_1}} (hc : Cardinal.aleph0 < c.cof) (hf : i < c, f i < c) {a : Ordinal.{u_1}} :
    a < cnfp f a < c
    @[deprecated Ordinal.exists_lsub_cof (since := "2026-03-21")]
    theorem Ordinal.exists_blsub_cof (o : Ordinal.{u}) :
    ∃ (f : (a : Ordinal.{u}) → a < o.cof.ordOrdinal.{u}), o.cof.ord.blsub f = o
    @[deprecated Order.le_cof_iff (since := "2026-03-21")]
    theorem Ordinal.le_cof_iff_blsub {b : Ordinal.{u}} {a : Cardinal.{u}} :
    a b.cof ∀ {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{u}), o.blsub f = ba o.card
    @[deprecated Ordinal.cof_lift_iSup_add_one_le (since := "2026-03-22")]
    @[deprecated Ordinal.cof_iSup_add_one_le (since := "2026-03-22")]
    theorem Ordinal.cof_blsub_le {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{u}) :
    (o.blsub f).cof o.card
    @[deprecated Ordinal.lift_iSup_add_one_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.blsub_lt_ord_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} {c : Ordinal.{max u v}} (ho : Cardinal.lift.{v, u} o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c) :
    o.blsub f < c
    @[deprecated Ordinal.iSup_add_one_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.blsub_lt_ord {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{u}} {c : Ordinal.{u}} (ho : o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c) :
    o.blsub f < c
    @[deprecated Ordinal.lift_iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.cof_bsup_le_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} (H : ∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) :
    @[deprecated Ordinal.iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.cof_bsup_le {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{u}} :
    (∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f)(o.bsup f).cof o.card
    @[deprecated Ordinal.lift_iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.bsup_lt_ord_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{max u v}} {c : Ordinal.{max u v}} (ho : Cardinal.lift.{v, u} o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c) :
    o.bsup f < c
    @[deprecated Ordinal.iSup_lt_of_lt_cof (since := "2026-03-22")]
    theorem Ordinal.bsup_lt_ord {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < oOrdinal.{u}} {c : Ordinal.{u}} (ho : o.card < c.cof) :
    (∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c)o.bsup f < c

    Cofinality arithmetic #

    @[simp]
    theorem Ordinal.cof_add (a : Ordinal.{u_1}) {b : Ordinal.{u_1}} (hb : b 0) :
    (a + b).cof = b.cof
    @[simp]
    theorem Ordinal.cof_mul {a b : Ordinal.{u_1}} (ha : a 0) (hb : Order.IsSuccPrelimit b) :
    (a * b).cof = b.cof
    @[simp]
    theorem Ordinal.cof_eq' {α : Type u} (r : ααProp) [H : IsWellOrder α r] (h : Order.IsSuccLimit (type r)) :
    ∃ (S : Set α), (∀ (a : α), bS, r a b) Cardinal.mk S = (type r).cof

    Results on sets #

    theorem Cardinal.mk_bounded_subset {α : Type u_1} (h : x < mk α, 2 ^ x < mk α) {r : ααProp} [IsWellOrder α r] (hr : (mk α).ord = Ordinal.type r) :
    mk { s : Set α // Set.Bounded r s } = mk α
    theorem Cardinal.mk_subset_mk_lt_cof {α : Type u_1} (h : x < mk α, 2 ^ x < mk α) :
    mk { s : Set α // mk s < (mk α).ord.cof } = mk α
    @[deprecated isCofinal_of_isCofinal_sUnion (since := "2026-02-25")]
    theorem Cardinal.unbounded_of_unbounded_sUnion {α : Type u_1} [LinearOrder α] {s : Set (Set α)} (h₁ : IsCofinal (⋃₀ s)) (h₂ : mk s < Order.cof α) :
    xs, IsCofinal x

    Alias of isCofinal_of_isCofinal_sUnion.

    @[deprecated isCofinal_of_isCofinal_iUnion (since := "2026-02-25")]
    theorem Cardinal.unbounded_of_unbounded_iUnion {α ι : Type u_1} [LinearOrder α] {s : ιSet α} (h₁ : IsCofinal (⋃ (i : ι), s i)) (h₂ : mk ι < Order.cof α) :
    ∃ (i : ι), IsCofinal (s i)

    Alias of isCofinal_of_isCofinal_iUnion.

    Consequences of König's lemma #

    @[deprecated Cardinal.lt_power_cof_ord (since := "2026-03-30")]
    theorem Cardinal.lt_power_cof {c : Cardinal.{u_1}} (hc : aleph0 c) :
    c < c ^ c.ord.cof

    Alias of Cardinal.lt_power_cof_ord.

    theorem Cardinal.lt_cof_ord_power {a b : Cardinal.{u_1}} (ha : aleph0 a) (hb : 1 < b) :
    a < (b ^ a).ord.cof
    @[deprecated Cardinal.lt_cof_ord_power (since := "2026-03-30")]
    theorem Cardinal.lt_cof_power {a b : Cardinal.{u_1}} (ha : aleph0 a) (hb : 1 < b) :
    a < (b ^ a).ord.cof

    Alias of Cardinal.lt_cof_ord_power.