@@ -207,6 +207,9 @@ theorem omega_le_omega {o₁ o₂ : Ordinal} : ω_ o₁ ≤ ω_ o₂ ↔ o₁
207207theorem omega_max (o₁ o₂ : Ordinal) : ω_ (max o₁ o₂) = max (ω_ o₁) (ω_ o₂) :=
208208 omega.monotone.map_max
209209
210+ theorem preOmega_le_omega (o : Ordinal) : preOmega o ≤ ω_ o :=
211+ preOmega_le_preOmega.2 (Ordinal.le_add_left _ _)
212+
210213theorem isInitial_omega (o : Ordinal) : IsInitial (omega o) :=
211214 isInitial_preOmega _
212215
@@ -298,13 +301,21 @@ theorem preAleph_succ (o : Ordinal) : preAleph (succ o) = succ (preAleph o) :=
298301 preAleph.map_succ o
299302
300303@[simp]
301- theorem preAleph_nat : ∀ n : ℕ, preAleph n = n
302- | 0 => preAleph_zero
303- | n + 1 => show preAleph (succ n) = n.succ by rw [preAleph_succ, preAleph_nat n, nat_succ]
304+ theorem preAleph_nat (n : ℕ) : preAleph n = n := by
305+ rw [← card_preOmega, preOmega_natCast, card_nat]
306+
307+ @[simp]
308+ theorem preAleph_omega0 : preAleph ω = ℵ₀ := by
309+ rw [← card_preOmega, preOmega_omega0, card_omega0]
304310
311+ @[simp]
305312theorem preAleph_pos {o : Ordinal} : 0 < preAleph o ↔ 0 < o := by
306313 rw [← preAleph_zero, preAleph_lt_preAleph]
307314
315+ @[simp]
316+ theorem aleph0_le_preAleph {o : Ordinal} : ℵ₀ ≤ preAleph o ↔ ω ≤ o := by
317+ rw [← preAleph_omega0, preAleph_le_preAleph]
318+
308319@[simp]
309320theorem lift_preAleph (o : Ordinal.{u}) : lift.{v} (preAleph o) = preAleph (Ordinal.lift.{v} o) :=
310321 (preAleph.toInitialSeg.trans liftInitialSeg).eq
@@ -328,16 +339,6 @@ theorem preAleph_limit {o : Ordinal} (ho : o.IsLimit) : preAleph o = ⨆ a : Iio
328339 rw [preAleph_le_of_isLimit ho]
329340 exact fun a ha => le_ciSup (bddAbove_of_small _) (⟨a, ha⟩ : Iio o)
330341
331- @[simp]
332- theorem preAleph_omega0 : preAleph ω = ℵ₀ :=
333- eq_of_forall_ge_iff fun c => by
334- simp only [preAleph_le_of_isLimit isLimit_omega0, lt_omega0, exists_imp, aleph0_le]
335- exact forall_swap.trans (forall_congr' fun n => by simp only [forall_eq, preAleph_nat])
336-
337- @[simp]
338- theorem aleph0_le_preAleph {o : Ordinal} : ℵ₀ ≤ preAleph o ↔ ω ≤ o := by
339- rw [← preAleph_omega0, preAleph_le_preAleph]
340-
341342/-- The `aleph` function gives the infinite cardinals listed by their ordinal index. `aleph 0 = ℵ₀`,
342343`aleph 1 = succ ℵ₀` is the first uncountable cardinal, and so on.
343344
@@ -381,6 +382,9 @@ theorem aleph_max (o₁ o₂ : Ordinal) : ℵ_ (max o₁ o₂) = max (ℵ_ o₁)
381382theorem max_aleph_eq (o₁ o₂ : Ordinal) : max (ℵ_ o₁) (ℵ_ o₂) = ℵ_ (max o₁ o₂) :=
382383 (aleph_max o₁ o₂).symm
383384
385+ theorem preAleph_le_aleph (o : Ordinal) : preAleph o ≤ ℵ_ o :=
386+ preAleph_le_preAleph.2 (Ordinal.le_add_left _ _)
387+
384388@[simp]
385389theorem aleph_succ (o : Ordinal) : ℵ_ (succ o) = succ (ℵ_ o) := by
386390 rw [aleph_eq_preAleph, add_succ, preAleph_succ, aleph_eq_preAleph]
@@ -399,16 +403,13 @@ theorem _root_.Ordinal.lift_omega (o : Ordinal.{u}) :
399403 simp [omega_eq_preOmega]
400404
401405theorem aleph_limit {o : Ordinal} (ho : o.IsLimit) : ℵ_ o = ⨆ a : Iio o, ℵ_ a := by
402- apply le_antisymm _ (ciSup_le' _)
403- · rw [aleph_eq_preAleph, preAleph_limit (ho.add _)]
404- refine ciSup_mono' (bddAbove_of_small _) ?_
405- rintro ⟨i, hi⟩
406- cases' lt_or_le i ω with h h
407- · rcases lt_omega0.1 h with ⟨n, rfl⟩
408- use ⟨0 , ho.pos⟩
409- simpa using (nat_lt_aleph0 n).le
410- · exact ⟨⟨_, (sub_lt_of_le h).2 hi⟩, preAleph_le_preAleph.2 (le_add_sub _ _)⟩
411- · exact fun i => aleph_le_aleph.2 i.2 .le
406+ rw [aleph_eq_preAleph, preAleph_limit (isLimit_add ω ho)]
407+ apply le_antisymm <;>
408+ apply ciSup_mono' (bddAbove_of_small _) <;>
409+ intro i
410+ · refine ⟨⟨_, sub_lt_of_lt_add i.2 ho.pos⟩, ?_⟩
411+ simpa [aleph_eq_preAleph] using le_add_sub _ _
412+ · exact ⟨⟨_, add_lt_add_left i.2 ω⟩, le_rfl⟩
412413
413414theorem aleph0_le_aleph (o : Ordinal) : ℵ₀ ≤ ℵ_ o := by
414415 rw [aleph_eq_preAleph, aleph0_le_preAleph]
0 commit comments