Skip to content

Commit 77fa41e

Browse files
committed
add
1 parent 383a355 commit 77fa41e

3 files changed

Lines changed: 22 additions & 7 deletions

File tree

Mathlib/SetTheory/Cardinal/Cofinality/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ theorem le_cof_iff {c : Cardinal} : c ≤ cof α ↔ ∀ s : Set α, IsCofinal s
4848
@[deprecated (since := "2026-02-18")] alias le_cof := le_cof_iff
4949

5050
variable (α) in
51+
/-- Every well-order has a cofinal subset of cardinal `cof α`. -/
5152
theorem cof_eq : ∃ s : Set α, IsCofinal s ∧ #s = cof α := by
5253
obtain ⟨s, hs⟩ := ciInf_mem fun s : {s : Set α // IsCofinal s} ↦ #s
5354
exact ⟨s.1, s.2, hs⟩
@@ -131,6 +132,9 @@ theorem cof_congr_of_strictMono {f : α → γ} (hf : StrictMono f) (hf' : IsCof
131132
cof α = cof γ := by
132133
simpa using lift_cof_congr_of_strictMono hf hf'
133134

135+
theorem cof_eq_of_isCofinal {s : Set α} (hs : IsCofinal s) : cof s = cof α :=
136+
cof_congr_of_strictMono (Subtype.strictMono_coe _) (by simpa)
137+
134138
@[simp]
135139
theorem cof_lt_aleph0_iff : Order.cof α < ℵ₀ ↔ Order.cof α ≤ 1 := by
136140
refine ⟨fun h ↦ ?_, (lt_of_le_of_lt · one_lt_aleph0)⟩

Mathlib/SetTheory/Cardinal/Cofinality/Ordinal.lean

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ theorem cof_omega0 : cof ω = ℵ₀ :=
151151

152152
@[deprecated (since := "2026-02-18")] alias cof_eq_one_iff_is_succ := cof_eq_one_iff
153153

154-
theorem ord_cof_eq (α : Type*) [LinearOrder α] [WellFoundedLT α] :
154+
variable (α) in
155+
/-- Every well-order has a cofinal subset of order type `(cof α).ord`. -/
156+
theorem ord_cof_eq [LinearOrder α] [WellFoundedLT α] :
155157
∃ s : Set α, IsCofinal s ∧ typeLT s = (Order.cof α).ord := by
156158
obtain ⟨s, hs, hs'⟩ := Order.cof_eq α
157159
obtain ⟨r, hr, hr'⟩ := exists_ord_eq s
@@ -166,16 +168,21 @@ theorem ord_cof_eq (α : Type*) [LinearOrder α] [WellFoundedLT α] :
166168
· obtain ⟨x, z, hz, rfl⟩ := x
167169
exact (hz _ hxy').asymm hxy
168170

171+
/-- Every cofinal set has a cofinal subset of order type `(cof α).ord`. -/
172+
theorem ord_cof_eq_of_isCofinal [LinearOrder α] [WellFoundedLT α] {s : Set α} (hs : IsCofinal s) :
173+
∃ t ⊆ s, IsCofinal t ∧ typeLT t = (Order.cof α).ord := by
174+
obtain ⟨t, ht, ht'⟩ := ord_cof_eq s
175+
rw [cof_eq_of_isCofinal hs] at ht'
176+
refine ⟨t, ?_, hs.trans ht, ?_⟩
177+
· simp
178+
· rw [← ht']
179+
exact ((Subtype.strictMono_coe _).strictMonoOn _).orderIso.ordinal_type_eq.symm
180+
169181
@[simp]
170182
theorem _root_.Order.cof_ord_cof (α : Type*) [LinearOrder α] [WellFoundedLT α] :
171183
(Order.cof α).ord.cof = Order.cof α := by
172184
obtain ⟨s, hs, hs'⟩ := ord_cof_eq α
173-
rw [← hs', cof_type]
174-
apply le_antisymm
175-
· rw [← card_ord (Order.cof α), ← hs', card_type]
176-
exact cof_le_cardinalMk s
177-
· rw [le_cof_iff]
178-
exact fun t ht ↦ (cof_le (hs.trans ht)).trans_eq (mk_image_eq Subtype.val_injective)
185+
rw [← hs', cof_type, cof_eq_of_isCofinal hs]
179186

180187
@[simp]
181188
theorem cof_ord_cof (o : Ordinal) : o.cof.ord.cof = o.cof := by

Mathlib/SetTheory/Ordinal/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ theorem _root_.RelIso.ordinal_type_eq {α β} {r : α → α → Prop} {s : β
169169
[IsWellOrder β s] (h : r ≃r s) : type r = type s :=
170170
type_eq.2 ⟨h⟩
171171

172+
theorem _root_.OrderIso.ordinal_type_eq {α β} [LinearOrder α] [LinearOrder β]
173+
[WellFoundedLT α] [WellFoundedLT β] (h : α ≃o β) : typeLT α = typeLT β :=
174+
h.toRelIsoLT.ordinal_type_eq
175+
172176
theorem type_eq_zero_of_empty (r) [IsWellOrder α r] [IsEmpty α] : type r = 0 :=
173177
(RelIso.relIsoOfIsEmpty r _).ordinal_type_eq
174178

0 commit comments

Comments
 (0)