@@ -512,6 +512,10 @@ theorem preBeth_lt_preBeth {o₁ o₂ : Ordinal} : preBeth o₁ < preBeth o₂
512512theorem preBeth_le_preBeth {o₁ o₂ : Ordinal} : preBeth o₁ ≤ preBeth o₂ ↔ o₁ ≤ o₂ :=
513513 preBeth_strictMono.le_iff_le
514514
515+ @[simp]
516+ theorem preBeth_inj {o₁ o₂ : Ordinal} : preBeth o₁ = preBeth o₂ ↔ o₁ = o₂ :=
517+ preBeth_strictMono.injective.eq_iff
518+
515519@[simp]
516520theorem preBeth_zero : preBeth 0 = 0 := by
517521 rw [preBeth]
@@ -538,7 +542,7 @@ theorem isNormal_preBeth : Order.IsNormal preBeth := by
538542
539543theorem preBeth_nat : ∀ n : ℕ, preBeth n = (2 ^ ·)^[n] (0 : ℕ)
540544 | 0 => by simp
541- | ( n + 1 ) => by
545+ | n + 1 => by
542546 rw [natCast_succ, preBeth_succ, Function.iterate_succ_apply', preBeth_nat]
543547 simp
544548
@@ -560,6 +564,25 @@ theorem preBeth_omega : preBeth ω = ℵ₀ := by
560564theorem preBeth_pos {o : Ordinal} : 0 < preBeth o ↔ 0 < o := by
561565 simpa using preBeth_lt_preBeth (o₁ := 0 )
562566
567+ @[simp]
568+ theorem preBeth_eq_zero {o : Ordinal} : preBeth o = 0 ↔ o = 0 := by
569+ simpa using preBeth_inj (o₂ := 0 )
570+
571+ theorem isStrongLimit_preBeth {o : Ordinal} : IsStrongLimit (preBeth o) ↔ IsSuccLimit o := by
572+ by_cases H : IsSuccLimit o
573+ · refine iff_of_true ⟨by simpa using H.ne_bot, fun a ha ↦ ?_⟩ H
574+ rw [preBeth_limit H.isSuccPrelimit] at ha
575+ rcases exists_lt_of_lt_ciSup' ha with ⟨⟨i, hi⟩, ha⟩
576+ have := power_le_power_left two_ne_zero ha.le
577+ rw [← preBeth_succ] at this
578+ exact this.trans_lt (preBeth_strictMono (H.succ_lt hi))
579+ · apply iff_of_false _ H
580+ rw [not_isSuccLimit_iff, not_isSuccPrelimit_iff'] at H
581+ obtain ho | ⟨a, rfl⟩ := H
582+ · simp [ho.eq_bot]
583+ · intro h
584+ simpa using h.two_power_lt (preBeth_strictMono (lt_succ a))
585+
563586/-- The Beth function is defined so that `beth 0 = ℵ₀'`, `beth (succ o) = 2 ^ beth o`, and that for
564587a limit ordinal `o`, `beth o` is the supremum of `beth a` for `a < o`.
565588
@@ -619,17 +642,7 @@ theorem beth_pos (o : Ordinal) : 0 < ℶ_ o :=
619642theorem beth_ne_zero (o : Ordinal) : ℶ_ o ≠ 0 :=
620643 (beth_pos o).ne'
621644
622- theorem isStrongLimit_beth {o : Ordinal} (H : IsSuccPrelimit o) : IsStrongLimit (ℶ_ o) := by
623- rcases eq_or_ne o 0 with (rfl | h)
624- · rw [beth_zero]
625- exact isStrongLimit_aleph0
626- · refine ⟨beth_ne_zero o, fun a ha ↦ ?_⟩
627- rw [beth_limit] at ha
628- · rcases exists_lt_of_lt_ciSup' ha with ⟨⟨i, hi⟩, ha⟩
629- have := power_le_power_left two_ne_zero ha.le
630- rw [← beth_succ] at this
631- exact this.trans_lt (beth_strictMono (H.succ_lt hi))
632- · rw [isSuccLimit_iff]
633- exact ⟨h, H⟩
645+ theorem isStrongLimit_beth {o : Ordinal} : IsStrongLimit (ℶ_ o) ↔ IsSuccPrelimit o := by
646+ rw [beth_eq_preBeth, isStrongLimit_preBeth, isSuccLimit_add_iff_of_isSuccLimit isSuccLimit_omega0]
634647
635648end Cardinal
0 commit comments