Cofinality #
This file contains the definition of cofinality of an order and an ordinal number.
Main Definitions #
Order.cof r
is the cofinality of a reflexive order. This is the smallest cardinality of a subsets
that is cofinal, i.e.∀ x, ∃ y ∈ s, r x y
.Ordinal.cof o
is the cofinality of the ordinalo
when viewed as a linear order.
Main Statements #
Cardinal.lt_power_cof
: A consequence of König's theorem stating thatc < c ^ c.ord.cof
forc ≥ ℵ₀
.
Implementation Notes #
- The cofinality is defined for ordinals.
If
c
is a cardinal number, its cofinality isc.ord.cof
.
Cofinality of orders #
Cofinality of ordinals #
theorem
Ordinal.cof_type_lt
{α : Type u}
[LinearOrder α]
[IsWellOrder α fun (x1 x2 : α) => x1 < x2]
:
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
Cofinality of suprema and least strict upper bounds #
theorem
Ordinal.cof_lsub_def_nonempty
(o : Ordinal.{u})
:
{a : Cardinal.{u} | ∃ (ι : Type u) (f : ι → Ordinal.{u}), lsub f = o ∧ Cardinal.mk ι = a}.Nonempty
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}
@[simp]
theorem
Ordinal.exists_lsub_cof
(o : Ordinal.{u})
:
∃ (ι : Type u) (f : ι → Ordinal.{u}), lsub f = o ∧ Cardinal.mk ι = o.cof
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)
:
theorem
Ordinal.lsub_lt_ord
{ι : Type u}
{f : ι → Ordinal.{u}}
{c : Ordinal.{u}}
(hι : Cardinal.mk ι < c.cof)
:
theorem
Ordinal.cof_iSup_le_lift
{ι : Type u}
{f : ι → Ordinal.{max u v}}
(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)
:
theorem
Ordinal.iSup_lt_ord
{ι : Type u_1}
{f : ι → Ordinal.{u_1}}
{c : Ordinal.{u_1}}
(hι : Cardinal.mk ι < c.cof)
:
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)
:
theorem
Ordinal.iSup_lt
{ι : Type u_1}
{f : ι → Cardinal.{u_1}}
{c : Cardinal.{u_1}}
(hι : Cardinal.mk ι < c.ord.cof)
:
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)
:
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}}
:
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}}
:
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_lift
{o : Ordinal.{u}}
(f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v})
:
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)
:
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)
:
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.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)
:
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]
Fundamental sequences #
def
Ordinal.IsFundamentalSequence
(a o : Ordinal.{u})
(f : (b : Ordinal.{u}) → b < o → Ordinal.{u})
:
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.cof_eq
{a o : Ordinal.{u}}
{f : (b : Ordinal.{u}) → b < o → Ordinal.{u}}
(hf : a.IsFundamentalSequence o f)
:
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)
:
theorem
Ordinal.IsFundamentalSequence.blsub_eq
{a o : Ordinal.{u}}
{f : (b : Ordinal.{u}) → b < o → Ordinal.{u}}
(hf : a.IsFundamentalSequence o f)
:
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.id_of_le_cof
{o : Ordinal.{u}}
(h : o ≤ o.cof.ord)
:
o.IsFundamentalSequence o fun (a : Ordinal.{u}) (x : a < o) => a
theorem
Ordinal.IsFundamentalSequence.zero
{f : (b : Ordinal.{u_1}) → b < 0 → Ordinal.{u_1}}
:
IsFundamentalSequence 0 0 f
theorem
Ordinal.IsFundamentalSequence.succ
{o : Ordinal.{u}}
:
(Order.succ o).IsFundamentalSequence 1 fun (x : Ordinal.{u}) (x : x < 1) => o
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)
:
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)
:
theorem
Ordinal.exists_fundamental_sequence
(a : Ordinal.{u})
:
∃ (f : (b : Ordinal.{u}) → b < a.cof.ord → Ordinal.{u}), a.IsFundamentalSequence a.cof.ord f
Every ordinal has a fundamental sequence.
theorem
Ordinal.IsNormal.isFundamentalSequence
{f : Ordinal.{u} → Ordinal.{u}}
(hf : IsNormal f)
{a o : Ordinal.{u}}
(ha : Order.IsSuccLimit a)
{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)
theorem
Ordinal.IsNormal.cof_eq
{f : Ordinal.{u_1} → Ordinal.{u_1}}
(hf : IsNormal f)
{a : Ordinal.{u_1}}
(ha : Order.IsSuccLimit a)
:
theorem
Ordinal.IsNormal.cof_le
{f : Ordinal.{u_1} → Ordinal.{u_1}}
(hf : IsNormal f)
(a : Ordinal.{u_1})
:
@[simp]
@[simp]
theorem
Ordinal.cof_eq'
{α : Type u}
(r : α → α → Prop)
[IsWellOrder α r]
(h : Order.IsSuccLimit (type r))
:
Results on sets #
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