@@ -517,7 +517,8 @@ theorem isNormal_add_right (a : Ordinal) : IsNormal (a + ·) := by
517517theorem isSuccLimit_add (a : Ordinal) {b : Ordinal} : IsSuccLimit b → IsSuccLimit (a + b) :=
518518 (isNormal_add_right a).map_isSuccLimit
519519
520- theorem isSuccLimit_sub {a b : Ordinal} (ha : IsSuccLimit a) (h : b < a) : IsSuccLimit (a - b) := by
520+ theorem isSuccLimit_sub {a b : Ordinal} (ha : IsSuccPrelimit a) (h : b < a) :
521+ IsSuccLimit (a - b) := by
521522 rw [isSuccLimit_iff, Ordinal.sub_ne_zero_iff_lt, isSuccPrelimit_iff_succ_lt]
522523 refine ⟨h, fun c hc ↦ ?_⟩
523524 rw [lt_sub] at hc ⊢
@@ -722,16 +723,32 @@ theorem le_of_mul_le_mul_left {a b c : Ordinal} (h : c * a ≤ c * b) (h0 : 0 <
722723theorem mul_right_inj {a b c : Ordinal} (a0 : 0 < a) : a * b = a * c ↔ b = c :=
723724 mul_left_cancel_iff_of_pos a0
724725
725- theorem isSuccLimit_mul {a b : Ordinal} (a0 : 0 < a) : IsSuccLimit b → IsSuccLimit (a * b) :=
726- (isNormal_mul_right a0).map_isSuccLimit
726+ theorem isSuccLimit_mul_right {a b : Ordinal} (a0 : 0 < a) (l : IsSuccLimit b) :
727+ IsSuccLimit (a * b) :=
728+ (isNormal_mul_right a0).map_isSuccLimit l
729+
730+ @ [deprecated (since := "2026-02-01" )]
731+ alias isSuccLimit_mul := isSuccLimit_mul_right
732+
733+ theorem isSuccPrelimit_mul_right {a b : Ordinal} (hb : IsSuccLimit b) : IsSuccPrelimit (a * b) := by
734+ obtain rfl | ha := eq_zero_or_pos a
735+ · rw [zero_mul]
736+ exact isSuccPrelimit_zero
737+ · exact (isSuccLimit_mul_right ha hb).isSuccPrelimit
727738
728739theorem isSuccLimit_mul_left {a b : Ordinal} (l : IsSuccLimit a) (b0 : 0 < b) :
729740 IsSuccLimit (a * b) := by
730741 rcases zero_or_succ_or_isSuccLimit b with (rfl | ⟨b, rfl⟩ | lb)
731742 · exact b0.false .elim
732743 · rw [mul_succ]
733744 exact isSuccLimit_add _ l
734- · exact isSuccLimit_mul l.bot_lt lb
745+ · exact isSuccLimit_mul_right l.bot_lt lb
746+
747+ theorem isSuccPrelimit_mul_left {a b : Ordinal} (ha : IsSuccLimit a) : IsSuccPrelimit (a * b) := by
748+ obtain rfl | hb := eq_zero_or_pos b
749+ · rw [mul_zero]
750+ exact isSuccPrelimit_zero
751+ · exact (isSuccLimit_mul_left ha hb).isSuccPrelimit
735752
736753theorem smul_eq_mul : ∀ (n : ℕ) (a : Ordinal), n • a = a * n
737754 | 0 , a => by rw [zero_nsmul, Nat.cast_zero, mul_zero]
@@ -878,7 +895,7 @@ theorem isSuccLimit_add_iff {a b : Ordinal} :
878895 exact ⟨h', h⟩
879896 left
880897 rw [← add_sub_cancel a b]
881- apply isSuccLimit_sub h
898+ apply isSuccLimit_sub h.isSuccPrelimit
882899 suffices a + 0 < a + b by simpa only [add_zero] using this
883900 rwa [add_lt_add_iff_left, pos_iff_ne_zero]
884901 rcases h with (h | ⟨rfl, h⟩)
@@ -1114,9 +1131,8 @@ theorem one_add_of_omega0_le {o} (h : ω ≤ o) : 1 + o = o :=
11141131
11151132open Ordinal
11161133
1117- -- TODO: prove `IsSuccPrelimit a ↔ ω ∣ a`.
1118- theorem isSuccLimit_iff_omega0_dvd {a : Ordinal} : IsSuccLimit a ↔ a ≠ 0 ∧ ω ∣ a := by
1119- refine ⟨fun l => ⟨l.ne_bot, ⟨a / ω, le_antisymm ?_ (mul_div_le _ _)⟩⟩, fun h => ?_⟩
1134+ theorem isSuccPrelimit_iff_omega0_dvd {a : Ordinal} : IsSuccPrelimit a ↔ ω ∣ a := by
1135+ refine ⟨fun l => ⟨a / ω, le_antisymm ?_ (mul_div_le _ _)⟩, fun h => ?_⟩
11201136 · refine l.le_iff_forall_le.2 fun x hx => le_of_lt ?_
11211137 rw [← div_lt omega0_ne_zero, ← succ_le_iff, le_div omega0_ne_zero, mul_succ,
11221138 add_le_iff_of_isSuccLimit isSuccLimit_omega0]
@@ -1125,9 +1141,11 @@ theorem isSuccLimit_iff_omega0_dvd {a : Ordinal} : IsSuccLimit a ↔ a ≠ 0 ∧
11251141 grw [mul_div_le]
11261142 exact (lt_sub.1 <| natCast_lt_of_isSuccLimit (isSuccLimit_sub l hx) _).le
11271143 · rcases h with ⟨a0, b, rfl⟩
1128- refine isSuccLimit_mul_left isSuccLimit_omega0 (pos_iff_ne_zero.2 <| mt ?_ a0)
1129- intro e
1130- simp only [e, mul_zero]
1144+ exact isSuccPrelimit_mul_left isSuccLimit_omega0
1145+
1146+ @ [deprecated isSuccPrelimit_iff_omega0_dvd (since := "2026-02-01" )]
1147+ theorem isSuccLimit_iff_omega0_dvd {a : Ordinal} : IsSuccLimit a ↔ a ≠ 0 ∧ ω ∣ a := by
1148+ rw [isSuccLimit_iff, isSuccPrelimit_iff_omega0_dvd]
11311149
11321150@[simp]
11331151theorem natCast_mod_omega0 (n : ℕ) : n % ω = n :=
0 commit comments