Documentation

Mathlib.SetTheory.Cardinal.Cofinality

Cofinality #

This file contains the definition of cofinality of an order and an ordinal number.

Main Definitions #

Main Statements #

Implementation Notes #

Cofinality of orders #

def Order.cof {α : Type u} (r : α → α → Prop) :

Cofinality of a reflexive order ≼. This is the smallest cardinality of a subset S : Set α such that ∀ a, ∃ b ∈ S, a ≼ b.

Equations
Instances For
    theorem Order.cof_le {α : Type u} (r : α → α → Prop) {S : Set α} (h : ∀ (a : α), ∃ b ∈ S, r a b) :
    theorem Order.le_cof {α : Type u} {r : α → α → Prop} [IsRefl α r] (c : Cardinal.{u}) :
    c ≤ cof r ↔ ∀ {S : Set α}, (∀ (a : α), ∃ b ∈ S, r a b) → c ≤ Cardinal.mk ↑S
    theorem RelIso.cof_eq_lift {α : Type u} {β : Type v} {r : α → α → Prop} {s : β → β → Prop} [IsRefl β s] (f : r ≃r s) :
    theorem RelIso.cof_eq {α β : Type u} {r : α → α → Prop} {s : β → β → Prop} [IsRefl β s] (f : r ≃r s) :
    @[deprecated RelIso.cof_eq (since := "2024-10-22")]
    theorem RelIso.cof_le {α β : Type u} {r : α → α → Prop} {s : β → β → Prop} [IsRefl β s] (f : r ≃r s) :
    @[deprecated Order.cof (since := "2024-10-22")]
    def StrictOrder.cof {α : Type u} (r : α → α → Prop) :

    Cofinality of a strict order ≺. This is the smallest cardinality of a set S : Set α such that ∀ a, ∃ b ∈ S, ¬ b ≺ a.

    Equations
    Instances For
      @[deprecated "No deprecation message was provided." (since := "2024-10-22")]
      theorem StrictOrder.cof_nonempty {α : Type u} (r : α → α → Prop) [IsIrrefl α r] :

      The set in the definition of Order.StrictOrder.cof is nonempty.

      Cofinality of ordinals #

      Cofinality of an ordinal. This is the smallest cardinal of a subset S of the ordinal which is unbounded, in the sense ∀ a, ∃ b ∈ S, a ≤ b.

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

      Equations
      Instances For
        theorem Ordinal.cof_type {α : Type u} (r : α → α → Prop) [IsWellOrder α r] :
        theorem Ordinal.cof_type_lt {α : Type u} [LinearOrder α] [IsWellOrder α fun (x1 x2 : α) => x1 < x2] :
        (type fun (x1 x2 : α) => x1 < x2).cof = Order.cof fun (x1 x2 : α) => x1 ≤ x2
        theorem Ordinal.cof_eq_cof_toType (o : Ordinal.{u_1}) :
        o.cof = Order.cof fun (x1 x2 : o.toType) => x1 ≤ x2
        theorem Ordinal.le_cof_type {α : Type u} {r : α → α → Prop} [IsWellOrder α r] {c : Cardinal.{u}} :
        c ≤ (type r).cof ↔ ∀ (S : Set α), Set.Unbounded r S → c ≤ Cardinal.mk ↑S
        theorem Ordinal.cof_type_le {α : Type u} {r : α → α → Prop} [IsWellOrder α r] {S : Set α} (h : Set.Unbounded r S) :
        theorem Ordinal.lt_cof_type {α : Type u} {r : α → α → Prop} [IsWellOrder α r] {S : Set α} :
        Cardinal.mk ↑S < (type r).cof → Set.Bounded r S
        theorem Ordinal.cof_eq {α : Type u} (r : α → α → Prop) [IsWellOrder α r] :
        ∃ (S : Set α), Set.Unbounded r S ∧ Cardinal.mk ↑S = (type r).cof
        theorem Ordinal.ord_cof_eq {α : Type u} (r : α → α → Prop) [IsWellOrder α r] :
        ∃ (S : Set α), Set.Unbounded r S ∧ type (Subrel r fun (x : α) => x ∈ S) = (type r).cof.ord

        Cofinality of suprema and least strict upper bounds #

        The set in the lsub characterization of cof is nonempty.

        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}
        theorem Ordinal.exists_lsub_cof (o : Ordinal.{u}) :
        ∃ (ι : Type u) (f : ι → Ordinal.{u}), lsub f = o ∧ Cardinal.mk ι = o.cof
        theorem Ordinal.cof_lsub_le {ι : Type u} (f : ι → Ordinal.{u}) :
        theorem Ordinal.le_cof_iff_lsub {o : Ordinal.{u}} {a : Cardinal.{u}} :
        a ≤ o.cof ↔ ∀ {ι : Type u} (f : ι → Ordinal.{u}), lsub f = o → a ≤ Cardinal.mk ι
        theorem Ordinal.lsub_lt_ord_lift {ι : Type u} {f : ι → Ordinal.{max u v}} {c : Ordinal.{max u v}} (hι : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.cof) (hf : ∀ (i : ι), f i < c) :
        lsub f < c
        theorem Ordinal.lsub_lt_ord {ι : Type u} {f : ι → Ordinal.{u}} {c : Ordinal.{u}} (hι : Cardinal.mk ι < c.cof) :
        (∀ (i : ι), f i < c) → lsub f < c
        theorem Ordinal.cof_iSup_le_lift {ι : Type u} {f : ι → Ordinal.{max u v}} (H : ∀ (i : ι), f i < iSup f) :
        theorem Ordinal.cof_iSup_le {ι : Type u_1} {f : ι → Ordinal.{u_1}} (H : ∀ (i : ι), f i < iSup f) :
        theorem Ordinal.iSup_lt_ord_lift {ι : Type u} {f : ι → Ordinal.{max u v}} {c : Ordinal.{max u v}} (hι : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.cof) (hf : ∀ (i : ι), f i < c) :
        iSup f < c
        theorem Ordinal.iSup_lt_ord {ι : Type u_1} {f : ι → Ordinal.{u_1}} {c : Ordinal.{u_1}} (hι : Cardinal.mk ι < c.cof) :
        (∀ (i : ι), f i < c) → iSup f < c
        theorem Ordinal.iSup_lt_lift {ι : Type u} {f : ι → Cardinal.{max u v}} {c : Cardinal.{max u v}} (hι : Cardinal.lift.{v, u} (Cardinal.mk ι) < c.ord.cof) (hf : ∀ (i : ι), f i < c) :
        iSup f < c
        theorem Ordinal.iSup_lt {ι : Type u_1} {f : ι → Cardinal.{u_1}} {c : Cardinal.{u_1}} (hι : Cardinal.mk ι < c.ord.cof) :
        (∀ (i : ι), f i < c) → iSup f < c
        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
        @[deprecated Ordinal.nfpFamily_lt_ord_lift (since := "2024-10-14")]
        theorem Ordinal.nfpBFamily_lt_ord_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v} → Ordinal.{max u v}} {c : Ordinal.{max u v}} (hc : Cardinal.aleph0 < c.cof) (hc' : Cardinal.lift.{v, u} o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), ∀ b < c, f i hi b < c) {a : Ordinal.{max u v}} :
        a < c → o.nfpBFamily f a < c
        @[deprecated Ordinal.nfpFamily_lt_ord (since := "2024-10-14")]
        theorem Ordinal.nfpBFamily_lt_ord {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{u} → Ordinal.{u}} {c : Ordinal.{u}} (hc : Cardinal.aleph0 < c.cof) (hc' : o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), ∀ b < c, f i hi b < c) {a : Ordinal.{u}} :
        a < c → o.nfpBFamily 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
        theorem Ordinal.exists_blsub_cof (o : Ordinal.{u}) :
        ∃ (f : (a : Ordinal.{u}) → a < o.cof.ord → Ordinal.{u}), o.cof.ord.blsub f = o
        theorem Ordinal.le_cof_iff_blsub {b : Ordinal.{u}} {a : Cardinal.{u}} :
        a ≤ b.cof ↔ ∀ {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < o → Ordinal.{u}), o.blsub f = b → a ≤ o.card
        theorem Ordinal.cof_blsub_le {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < o → Ordinal.{u}) :
        (o.blsub f).cof ≤ o.card
        theorem Ordinal.blsub_lt_ord_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{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
        theorem Ordinal.blsub_lt_ord {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{u}} {c : Ordinal.{u}} (ho : o.card < c.cof) (hf : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c) :
        o.blsub f < c
        theorem Ordinal.cof_bsup_le_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}} (H : ∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) :
        theorem Ordinal.cof_bsup_le {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{u}} :
        (∀ (i : Ordinal.{u}) (h : i < o), f i h < o.bsup f) → (o.bsup f).cof ≤ o.card
        theorem Ordinal.bsup_lt_ord_lift {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{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
        theorem Ordinal.bsup_lt_ord {o : Ordinal.{u}} {f : (a : Ordinal.{u}) → a < o → Ordinal.{u}} {c : Ordinal.{u}} (ho : o.card < c.cof) :
        (∀ (i : Ordinal.{u}) (hi : i < o), f i hi < c) → o.bsup f < c

        Basic results #

        @[simp]
        theorem Ordinal.cof_zero :
        cof 0 = 0
        @[simp]
        theorem Ordinal.cof_eq_zero {o : Ordinal.{u_1}} :
        o.cof = 0 ↔ o = 0
        @[simp]

        Fundamental sequences #

        A fundamental sequence for a is an increasing sequence of length o = cof a that converges at a. We provide o explicitly in order to avoid type rewrites.

        Equations
        Instances For
          theorem Ordinal.IsFundamentalSequence.strict_mono {a o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < o → Ordinal.{u}} (hf : a.IsFundamentalSequence o f) {i j : Ordinal.{u}} (hi : i < o) (hj : j < o) :
          i < j → f i hi < f j hj
          theorem Ordinal.IsFundamentalSequence.ord_cof {a o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < o → Ordinal.{u}} (hf : a.IsFundamentalSequence o f) :
          a.IsFundamentalSequence a.cof.ord fun (i : Ordinal.{u}) (hi : i < a.cof.ord) => f i ⋯
          theorem Ordinal.IsFundamentalSequence.monotone {a o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < o → Ordinal.{u}} (hf : a.IsFundamentalSequence o f) {i j : Ordinal.{u}} (hi : i < o) (hj : j < o) (hij : i ≤ j) :
          f i hi ≤ f j hj
          theorem Ordinal.IsFundamentalSequence.trans {a o o' : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < o → Ordinal.{u}} (hf : a.IsFundamentalSequence o f) {g : (b : Ordinal.{u}) → b < o' → Ordinal.{u}} (hg : o.IsFundamentalSequence o' g) :
          a.IsFundamentalSequence o' fun (i : Ordinal.{u}) (hi : i < o') => f (g i hi) ⋯
          theorem Ordinal.IsFundamentalSequence.lt {a o : Ordinal.{u_1}} {s : (p : Ordinal.{u_1}) → p < o → Ordinal.{u_1}} (h : a.IsFundamentalSequence o s) {p : Ordinal.{u_1}} (hp : p < o) :
          s p hp < a

          Every ordinal has a fundamental sequence.

          @[simp]
          theorem Ordinal.IsNormal.isFundamentalSequence {f : Ordinal.{u} → Ordinal.{u}} (hf : IsNormal f) {a o : Ordinal.{u}} (ha : a.IsLimit) {g : (b : Ordinal.{u}) → b < o → Ordinal.{u}} (hg : a.IsFundamentalSequence o g) :
          (f a).IsFundamentalSequence o fun (b : Ordinal.{u}) (hb : b < o) => f (g b hb)
          @[simp]
          theorem Ordinal.cof_add (a b : Ordinal.{u_1}) :
          b ≠ 0 → (a + b).cof = b.cof
          @[simp]
          theorem Ordinal.cof_omega {o : Ordinal.{u_1}} (ho : o.IsLimit) :
          (omega o).cof = o.cof
          @[deprecated Ordinal.cof_preOmega (since := "2024-10-22")]
          @[deprecated Ordinal.cof_preOmega (since := "2024-10-22")]
          @[deprecated Ordinal.cof_omega (since := "2024-10-22")]
          theorem Ordinal.cof_eq' {α : Type u} (r : α → α → Prop) [IsWellOrder α r] (h : (type r).IsLimit) :
          ∃ (S : Set α), (∀ (a : α), ∃ b ∈ S, 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 α
          theorem Cardinal.unbounded_of_unbounded_sUnion {α : Type u} (r : α → α → Prop) [wo : IsWellOrder α r] {s : Set (Set α)} (h₁ : Set.Unbounded r (⋃₀ s)) (h₂ : mk ↑s < Order.cof (Function.swap rᶜ)) :
          ∃ x ∈ s, Set.Unbounded r x

          If the union of s is unbounded and s is smaller than the cofinality, then s has an unbounded member

          theorem Cardinal.unbounded_of_unbounded_iUnion {α β : Type u} (r : α → α → Prop) [wo : IsWellOrder α r] (s : β → Set α) (h₁ : Set.Unbounded r (⋃ (x : β), s x)) (h₂ : mk β < Order.cof (Function.swap rᶜ)) :
          ∃ (x : β), Set.Unbounded r (s x)

          If the union of s is unbounded and s is smaller than the cofinality, then s has an unbounded member

          Consequences of König's lemma #

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