# mathlibdocumentation

set_theory.cofinality

# Cofinality #

This file contains the definition of cofinality of a ordinal number and regular cardinals

## Main Definitions #

• ordinal.cof o is the cofinality of the ordinal o. If o is the order type of the relation < on α, then o.cof is the smallest cardinality of a subset s of α that is cofinal in α, i.e. ∀ x : α, ∃ y ∈ s, ¬ y < x.
• cardinal.is_limit c means that c is a (weak) limit cardinal: c ≠ 0 ∧ ∀ x < c, succ x < c.
• cardinal.is_strong_limit c means that c is a strong limit cardinal: c ≠ 0 ∧ ∀ x < c, 2 ^ x < c.
• cardinal.is_regular c means that c is a regular cardinal: omega ≤ c ∧ c.ord.cof = c.
• cardinal.is_inaccessible c means that c is strongly inaccessible: omega < c ∧ is_regular c ∧ is_strong_limit c.

## Main Statements #

• ordinal.infinite_pigeonhole_card: the infinite pigeonhole principle
• cardinal.lt_power_cof: A consequence of König's theorem stating that c < c ^ c.ord.cof for c ≥ cardinal.omega
• cardinal.univ_inaccessible: The type of ordinals in Type u form an inaccessible cardinal (in Type v with v > u). This shows (externally) that in Type u there are at least u inaccessible cardinals.

## Implementation Notes #

• The cofinality is defined for ordinals. If c is a cardinal number, its cofinality is c.ord.cof.

## Tags #

cofinality, regular cardinals, limits cardinals, inaccessible cardinals, infinite pigeonhole principle

def order.cof {α : Type u_1} (r : α → α → Prop) [ r] :

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

Equations
• = (λ (S : {S // ∀ (a : α), ∃ (b : α) (H : b S), r a b}), # S)
theorem order.cof_le {α : Type u_1} (r : α → α → Prop) [ r] {S : set α} (h : ∀ (a : α), ∃ (b : α) (H : b S), r a b) :
theorem order.le_cof {α : Type u_1} {r : α → α → Prop} [ r] (c : cardinal) :
c ∀ {S : set α}, (∀ (a : α), ∃ (b : α) (H : b S), r a b)c # S
theorem rel_iso.cof.aux {α : Type u} {β : Type v} {r : α → α → Prop} {s : β → β → Prop} [ r] [ s] (f : r ≃r s) :
theorem rel_iso.cof {α : Type u} {β : Type v} {r : α → α → Prop} {s : β → β → Prop} [ r] [ s] (f : r ≃r s) :
def strict_order.cof {α : Type u_1} (r : α → α → Prop) [h : r] :
Equations

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, ¬(b > a). It is defined for all ordinals, but cof 0 = 0 and cof (succ o) = 1, so it is only really interesting on limit ordinals (when it is an infinite cardinal).

Equations
• o.cof = (λ (_x : Well_order), ordinal.cof._match_1 _x) ordinal.cof._proof_1
• ordinal.cof._match_1 {α := α, r := r, wo := _x} =
theorem ordinal.cof_type {α : Type u_1} (r : α → α → Prop) [ r] :
theorem ordinal.le_cof_type {α : Type u_1} {r : α → α → Prop} [ r] {c : cardinal} :
c (ordinal.type r).cof ∀ (S : set α), (∀ (a : α), ∃ (b : α) (H : b S), ¬r b a)c # S
theorem ordinal.cof_type_le {α : Type u_1} {r : α → α → Prop} [ r] (S : set α) (h : ∀ (a : α), ∃ (b : α) (H : b S), ¬r b a) :
theorem ordinal.lt_cof_type {α : Type u_1} {r : α → α → Prop} [ r] (S : set α) (hl : # S < (ordinal.type r).cof) :
∃ (a : α), ∀ (b : α), b Sr b a
theorem ordinal.cof_eq {α : Type u_1} (r : α → α → Prop) [ r] :
∃ (S : set α), (∀ (a : α), ∃ (b : α) (H : b S), ¬r b a) # S = (ordinal.type r).cof
theorem ordinal.ord_cof_eq {α : Type u_1} (r : α → α → Prop) [ r] :
∃ (S : set α), (∀ (a : α), ∃ (b : α) (H : b S), ¬r b a) ordinal.type (subrel r S) = (ordinal.type r).cof.ord
theorem ordinal.lift_cof (o : ordinal) :
theorem ordinal.cof_le_card (o : ordinal) :
theorem ordinal.cof_ord_le (c : cardinal) :
c.ord.cof c
@[simp]
theorem ordinal.cof_zero  :
0.cof = 0
@[simp]
theorem ordinal.cof_eq_zero {o : ordinal} :
o.cof = 0 o = 0
@[simp]
theorem ordinal.cof_succ (o : ordinal) :
o.succ.cof = 1
@[simp]
theorem ordinal.cof_eq_one_iff_is_succ {o : ordinal} :
o.cof = 1 ∃ (a : ordinal), o = a.succ
@[simp]
theorem ordinal.cof_add (a b : ordinal) :
b 0(a + b).cof = b.cof
@[simp]
theorem ordinal.cof_cof (o : ordinal) :
@[simp]
theorem ordinal.cof_omega  :
theorem ordinal.cof_eq' {α : Type u_1} (r : α → α → Prop) [ r] (h : (ordinal.type r).is_limit) :
∃ (S : set α), (∀ (a : α), ∃ (b : α) (H : b S), r a b) # S = (ordinal.type r).cof
theorem ordinal.cof_sup_le_lift {ι : Type u_1} (f : ι → ordinal) (H : ∀ (i : ι), f i < ) :
theorem ordinal.cof_sup_le {ι : Type u} (f : ι → ordinal) (H : ∀ (i : ι), f i < ) :
theorem ordinal.cof_bsup_le_lift {o : ordinal} (f : Π (a : ordinal), a < oordinal) :
(∀ (i : ordinal) (h : i < o), f i h < o.bsup f)(o.bsup f).cof o.card.lift
theorem ordinal.cof_bsup_le {o : ordinal} (f : Π (a : ordinal), a < oordinal) :
(∀ (i : ordinal) (h : i < o), f i h < o.bsup f)(o.bsup f).cof o.card
@[simp]
theorem ordinal.sup_lt_ord {ι : Type u} (f : ι → ordinal) {c : ordinal} (H1 : # ι < c.cof) (H2 : ∀ (i : ι), f i < c) :
< c
theorem ordinal.sup_lt {ι : Type u} (f : ι → cardinal) {c : cardinal} (H1 : # ι < c.ord.cof) (H2 : ∀ (i : ι), f i < c) :
theorem ordinal.unbounded_of_unbounded_sUnion {α : Type u_1} (r : α → α → Prop) [wo : r] {s : set (set α)} (h₁ : (⋃₀s)) (h₂ : # s < ) :
∃ (x : set α) (H : x s), x

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

theorem ordinal.unbounded_of_unbounded_Union {α β : Type u} (r : α → α → Prop) [wo : r] (s : β → set α) (h₁ : (⋃ (x : β), s x)) (h₂ : # β < ) :
∃ (x : β), (s x)

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

theorem ordinal.infinite_pigeonhole {β α : Type u} (f : β → α) (h₁ : cardinal.omega # β) (h₂ : # α < (# β).ord.cof) :
∃ (a : α), # (f ⁻¹' {a}) = # β

The infinite pigeonhole principle

theorem ordinal.infinite_pigeonhole_card {β α : Type u} (f : β → α) (θ : cardinal) (hθ : θ # β) (h₁ : cardinal.omega θ) (h₂ : # α < θ.ord.cof) :
∃ (a : α), θ # (f ⁻¹' {a})

pigeonhole principle for a cardinality below the cardinality of the domain

theorem ordinal.infinite_pigeonhole_set {β α : Type u} {s : set β} (f : s → α) (θ : cardinal) (hθ : θ # s) (h₁ : cardinal.omega θ) (h₂ : # α < θ.ord.cof) :
∃ (a : α) (t : set β) (h : t s), θ # t ∀ ⦃x : β⦄ (hx : x t), f x, _⟩ = a
def cardinal.is_limit (c : cardinal) :
Prop

A cardinal is a limit if it is not zero or a successor cardinal. Note that ω is a limit cardinal by this definition.

Equations

A cardinal is a strong limit if it is not zero and it is closed under powersets. Note that ω is a strong limit by this definition.

Equations
def cardinal.is_regular (c : cardinal) :
Prop

A cardinal is regular if it is infinite and it equals its own cofinality.

Equations
theorem cardinal.cof_is_regular {o : ordinal} (h : o.is_limit) :
theorem cardinal.sup_lt_ord_of_is_regular {ι : Type u} (f : ι → ordinal) {c : cardinal} (hc : c.is_regular) (H1 : # ι < c) (H2 : ∀ (i : ι), f i < c.ord) :
< c.ord
theorem cardinal.sup_lt_of_is_regular {ι : Type u} (f : ι → cardinal) {c : cardinal} (hc : c.is_regular) (H1 : # ι < c) (H2 : ∀ (i : ι), f i < c) :
theorem cardinal.sum_lt_of_is_regular {ι : Type u} (f : ι → cardinal) {c : cardinal} (hc : c.is_regular) (H1 : # ι < c) (H2 : ∀ (i : ι), f i < c) :

A cardinal is inaccessible if it is an uncountable regular strong limit cardinal.

Equations
theorem cardinal.is_inaccessible.mk {c : cardinal} (h₁ : cardinal.omega < c) (h₂ : c c.ord.cof) (h₃ : ∀ (x : cardinal), x < c2 ^ x < c) :
theorem cardinal.lt_power_cof {c : cardinal} :
c < c ^ c.ord.cof
theorem cardinal.lt_cof_power {a b : cardinal} (ha : cardinal.omega a) (b1 : 1 < b) :
a < (b ^ a).ord.cof