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 : α), bS, r a b) :
    theorem Order.le_cof {α : Type u} {r : ααProp} [IsRefl α r] (c : Cardinal.{u}) :
    c cof r ∀ {S : Set α}, (∀ (a : α), bS, 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 Sc 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).cofSet.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 = oa Cardinal.mk ι
        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
        theorem Ordinal.lsub_lt_ord {ι : Type u} {f : ιOrdinal.{u}} {c : Ordinal.{u}} ( : 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}} ( : 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}} ( : 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}} ( : 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}} ( : 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 < cnfpFamily 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 < oOrdinal.{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 < co.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 < oOrdinal.{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 < co.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 < cnfp f a < c
        theorem Ordinal.exists_blsub_cof (o : Ordinal.{u}) :
        ∃ (f : (a : Ordinal.{u}) → a < o.cof.ordOrdinal.{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 < oOrdinal.{u}), o.blsub f = ba o.card
        theorem Ordinal.cof_blsub_le {o : Ordinal.{u}} (f : (a : Ordinal.{u}) → a < oOrdinal.{u}) :
        (o.blsub f).cof o.card
        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
        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
        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) :
        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
        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
        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

        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 < oOrdinal.{u}} (hf : a.IsFundamentalSequence o f) {i j : Ordinal.{u}} (hi : i < o) (hj : j < o) :
          i < jf i hi < f j hj
          theorem Ordinal.IsFundamentalSequence.ord_cof {a o : Ordinal.{u}} {f : (b : Ordinal.{u}) → b < oOrdinal.{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 < oOrdinal.{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 < oOrdinal.{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 < oOrdinal.{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 < oOrdinal.{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 : α), 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 α
          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)) :
          xs, 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