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 α
    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
    @[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.cof_add_one (since := "2026-05-25")]

    A countable limit ordinal has cofinality ℵ₀.

    theorem Ordinal.exists_ord_cof_eq (α : Type u) [LinearOrder α] [WellFoundedLT α] :
    ∃ (s : Set α), IsCofinal s ∧ (type fun (x1 x2 : ↑s) => x1 < x2) = (Order.cof α).ord

    Every well-order has a cofinal subset of order type (cof α).ord.

    @[deprecated Ordinal.exists_ord_cof_eq (since := "2026-05-25")]
    theorem Ordinal.ord_cof_eq (α : Type u) [LinearOrder α] [WellFoundedLT α] :
    ∃ (s : Set α), IsCofinal s ∧ (type fun (x1 x2 : ↑s) => x1 < x2) = (Order.cof α).ord

    Alias of Ordinal.exists_ord_cof_eq.


    Every well-order has a cofinal subset of order type (cof α).ord.

    theorem Ordinal.exists_ord_cof_eq_of_isCofinal {α : Type u} [LinearOrder α] [WellFoundedLT α] {s : Set α} (hs : IsCofinal s) :
    ∃ t ⊆ s, IsCofinal t ∧ (type fun (x1 x2 : ↑t) => x1 < x2) = (Order.cof α).ord

    Every cofinal set has a cofinal subset of order type (cof α).ord.

    @[simp]
    theorem Order.cof_ord_cof (α : Type u_1) [LinearOrder α] [WellFoundedLT α] :
    (cof α).ord.cof = 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
    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 : ∀ i ∈ s, 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 : ∀ i ∈ s, 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 : ∀ i ∈ s, 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
    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 < c → nfpFamily 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 < c → nfp f a < 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]

    Results on sets #

    theorem Cardinal.mk_bounded_subset {α : Type u_1} (h : (mk α).IsStrongPrelimit) {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 : (mk α).IsStrongPrelimit) :
    mk { s : Set α // mk ↑s < (mk α).ord.cof } = mk α

    Consequences of König's lemma #

    theorem Cardinal.lt_cof_ord_power {a b : Cardinal.{u_1}} (ha : aleph0 ≤ a) (hb : 1 < b) :
    a < (b ^ a).ord.cof