@@ -22,15 +22,6 @@ variable {R M : Type*}
2222
2323section Module
2424
25- section Nat
26-
27- theorem Nat.noZeroSMulDivisors
28- (R) (M) [Semiring R] [CharZero R] [AddCommMonoid M] [Module R M] [NoZeroSMulDivisors R M] :
29- NoZeroSMulDivisors ℕ M where
30- eq_zero_or_eq_zero_of_smul_eq_zero {c x} := by rw [← Nat.cast_smul_eq_nsmul R, smul_eq_zero]; simp
31-
32- end Nat
33-
3425variable [Semiring R]
3526variable (R M)
3627
@@ -59,6 +50,22 @@ theorem smul_right_inj [NoZeroSMulDivisors R M] {c : R} (hc : c ≠ 0) {x y : M}
5950 (smul_right_injective M hc).eq_iff
6051
6152end SMulInjective
53+
54+ section Nat
55+ variable (R M) [CharZero R] [NoZeroSMulDivisors R M]
56+
57+ include R in
58+ lemma IsAddTorsionFree.of_noZeroSMulDivisors : IsAddTorsionFree M where
59+ nsmul_right_injective n hn := by
60+ simp_rw [← Nat.cast_smul_eq_nsmul R]; apply smul_right_injective; simpa
61+
62+ @[deprecated IsAddTorsionFree.of_noZeroSMulDivisors (since := "2025-10-19")]
63+ theorem Nat.noZeroSMulDivisors
64+ (R) (M) [Semiring R] [CharZero R] [AddCommMonoid M] [Module R M] [NoZeroSMulDivisors R M] :
65+ NoZeroSMulDivisors ℕ M where
66+ eq_zero_or_eq_zero_of_smul_eq_zero {c x} := by rw [← Nat.cast_smul_eq_nsmul R, smul_eq_zero]; simp
67+
68+ end Nat
6269end AddCommGroup
6370
6471section Module
@@ -82,27 +89,22 @@ theorem smul_left_injective {x : M} (hx : x ≠ 0) : Function.Injective fun c :
8289
8390end SMulInjective
8491
85- instance [NoZeroSMulDivisors ℤ M] : NoZeroSMulDivisors ℕ M :=
86- ⟨fun {c x} hcx ↦ by rwa [← Nat.cast_smul_eq_nsmul ℤ, smul_eq_zero, Nat.cast_eq_zero] at hcx⟩
87-
8892variable (R M)
8993
94+ @[deprecated IsAddTorsionFree.of_noZeroSMulDivisors (since := "2025-10-19")]
9095theorem NoZeroSMulDivisors.int_of_charZero
9196 (R) (M) [Ring R] [AddCommGroup M] [Module R M] [NoZeroSMulDivisors R M] [CharZero R] :
9297 NoZeroSMulDivisors ℤ M :=
9398 ⟨fun {z x} h ↦ by simpa [← smul_one_smul R z x] using h⟩
9499
95100/-- Only a ring of characteristic zero can have a non-trivial module without additive or
96101scalar torsion. -/
97- theorem CharZero.of_noZeroSMulDivisors [Nontrivial M] [NoZeroSMulDivisors ℤ M] : CharZero R := by
102+ theorem CharZero.of_noZeroSMulDivisors [Nontrivial M] [IsAddTorsionFree M] : CharZero R := by
98103 refine ⟨fun {n m h} ↦ ?_⟩
99104 obtain ⟨x, hx⟩ := exists_ne (0 : M)
100105 replace h : (n : ℤ) • x = (m : ℤ) • x := by simp [← Nat.cast_smul_eq_nsmul R, h]
101106 simpa using smul_left_injective ℤ hx h
102107
103- instance [AddCommGroup M] [NoZeroSMulDivisors ℤ M] : NoZeroSMulDivisors ℕ M :=
104- ⟨fun {c x} hcx ↦ by rwa [← Nat.cast_smul_eq_nsmul ℤ c x, smul_eq_zero, Nat.cast_eq_zero] at hcx⟩
105-
106108end Module
107109
108110section GroupWithZero
0 commit comments