@@ -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]
170182theorem _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]
181188theorem cof_ord_cof (o : Ordinal) : o.cof.ord.cof = o.cof := by
0 commit comments