@@ -364,34 +364,6 @@ instance (R : Type*) [Ring R] [CharZero R] : FaithfulSMul ℤ R := by
364364
365365end FaithfulSMul
366366
367- namespace NoZeroSMulDivisors
368-
369- -- see Note [lower instance priority]
370- instance (priority := 100 ) instOfFaithfulSMul {R A : Type *}
371- [CommSemiring R] [Nontrivial R] [Ring A] [Algebra R A] [NoZeroDivisors A] [FaithfulSMul R A] :
372- IsTorsionFree R A where
373- isSMulRegular r hr a b hab := by
374- rw [← sub_eq_zero, ← smul_sub] at hab
375- simpa [Algebra.smul_def, FaithfulSMul.algebraMap_eq_zero_iff, sub_eq_zero, hr.ne_zero] using hab
376-
377- variable {R A : Type *} [CommRing R] [IsDomain R] [Ring A] [Algebra R A]
378-
379- instance [Nontrivial A] [IsTorsionFree R A] : FaithfulSMul R A where
380- eq_of_smul_eq_smul {r₁ r₂} h := by
381- specialize h 1
382- rw [← sub_eq_zero, ← sub_smul, smul_eq_zero, sub_eq_zero] at h
383- exact h.resolve_right one_ne_zero
384-
385- lemma iff_faithfulSMul [IsDomain A] : IsTorsionFree R A ↔ FaithfulSMul R A where
386- mp _ := inferInstance
387- mpr _ := inferInstance
388-
389- theorem iff_algebraMap_injective [IsDomain A] :
390- IsTorsionFree R A ↔ Injective (algebraMap R A) := by
391- rw [iff_faithfulSMul, faithfulSMul_iff_algebraMap_injective]
392-
393- end NoZeroSMulDivisors
394-
395367section IsScalarTower
396368
397369variable {R : Type *} [CommSemiring R]
@@ -457,32 +429,39 @@ lemma Module.IsTorsionFree.of_faithfulSMul [Semiring S] [Module S R] [Module S A
457429 (FaithfulSMul.algebraMap_injective R A).moduleIsTorsionFree _
458430 (by simp [Algebra.algebraMap_eq_smul_one])
459431
460- lemma Module.IsTorsionFree.trans_faithfulSMul [Nontrivial R] [IsDomain A] [AddCommMonoid M]
432+ lemma Module.IsTorsionFree.trans_faithfulSMul [Nontrivial R] [IsCancelMulZero A] [AddCommMonoid M]
461433 [Module A M] [Module R M] [IsTorsionFree A M] [IsScalarTower R A M] : IsTorsionFree R M :=
462- .comap (algebraMap R A) (fun r hr ↦ by simpa [isRegular_iff_ne_zero] using hr.ne_zero) (by simp)
434+ .comap (algebraMap R A) (fun r hr ↦ .of_ne_zero <| by simpa using hr.ne_zero) (by simp)
463435
464436-- see Note [lower instance priority]
465- instance (priority := 100 ) FaithfulSMul.to_isTorsionFree [Nontrivial R] [IsDomain A] :
437+ instance (priority := 100 ) FaithfulSMul.to_isTorsionFree [Nontrivial R] [IsCancelMulZero A] :
466438 IsTorsionFree R A := .trans_faithfulSMul R A A
467439
468440end FaithfulSMul
469441
470442namespace Module
471443variable {R A : Type *} [CommRing R] [IsDomain R] [Ring A] [Algebra R A]
472444
473- instance (priority := 100 ) IsTorsionFree.to_faithfulSMul [Nontrivial A ] [IsTorsionFree R A] :
474- FaithfulSMul R A where
445+ instance IsTorsionFree.to_faithfulSMul [IsCancelMulZero R ] [Nontrivial A]
446+ [IsTorsionFree R A] : FaithfulSMul R A where
475447 eq_of_smul_eq_smul h := smul_left_injective _ one_ne_zero <| h 1
476448
477- lemma isTorsionFree_iff_faithfulSMul [IsDomain A] : IsTorsionFree R A ↔ FaithfulSMul R A :=
449+ variable [IsDomain A]
450+
451+ lemma isTorsionFree_iff_faithfulSMul : IsTorsionFree R A ↔ FaithfulSMul R A :=
478452 ⟨fun _ ↦ inferInstance, fun _ ↦ inferInstance⟩
479453
480- lemma isTorsionFree_iff_algebraMap_injective [IsDomain A] :
481- IsTorsionFree R A ↔ Injective (algebraMap R A) := by
454+ lemma isTorsionFree_iff_algebraMap_injective : IsTorsionFree R A ↔ Injective (algebraMap R A) := by
482455 rw [isTorsionFree_iff_faithfulSMul, faithfulSMul_iff_algebraMap_injective]
483456
484457end Module
485458
459+ @ [deprecated (since := "2026-01-21" )]
460+ alias NoZeroSMulDivisors.iff_algebraMap_injective := isTorsionFree_iff_algebraMap_injective
461+
462+ @ [deprecated (since := "2026-01-21" )]
463+ alias NoZeroSMulDivisors.iff_faithfulSMul := isTorsionFree_iff_faithfulSMul
464+
486465/-! TODO: The following lemmas no longer involve `Algebra` at all, and could be moved closer
487466to `Algebra/Module/Submodule.lean`. Currently this is tricky because `ker`, `range`, `⊤`, and `⊥`
488467are all defined in `LinearAlgebra/Basic.lean`. -/
0 commit comments