File tree Expand file tree Collapse file tree 2 files changed +14
-11
lines changed
Expand file tree Collapse file tree 2 files changed +14
-11
lines changed Original file line number Diff line number Diff line change @@ -248,6 +248,19 @@ theorem mul_bot : M * ⊥ = ⊥ :=
248248theorem bot_mul : ⊥ * M = ⊥ :=
249249 bot_smul _
250250
251+ @[simp]
252+ theorem mul_eq_bot [NoZeroDivisors A] {M N : Submodule R A} :
253+ M * N = ⊥ ↔ M = ⊥ ∨ N = ⊥ :=
254+ ⟨fun hmn =>
255+ or_iff_not_imp_left.mpr fun M_ne_bot =>
256+ N.eq_bot_iff.mpr fun n hn =>
257+ let ⟨m, hm, ne0⟩ := M.ne_bot_iff.mp M_ne_bot
258+ Or.resolve_left (mul_eq_zero.mp ((M * N).eq_bot_iff.mp hmn _ (mul_mem_mul hm hn))) ne0,
259+ fun h => by obtain rfl | rfl := h; exacts [bot_mul _, mul_bot _]⟩
260+
261+ instance [NoZeroDivisors A] : NoZeroDivisors (Submodule R A) where
262+ eq_zero_or_eq_zero_of_mul_eq_zero := mul_eq_bot.1
263+
251264protected theorem one_mul : (1 : Submodule R A) * M = M :=
252265 Submodule.one_smul _
253266
Original file line number Diff line number Diff line change @@ -395,17 +395,7 @@ protected theorem pow_succ : I ^ (n + 1) = I * I ^ n := by
395395
396396end IsTwoSided
397397
398- @[simp]
399- theorem mul_eq_bot [NoZeroDivisors R] : I * J = ⊥ ↔ I = ⊥ ∨ J = ⊥ :=
400- ⟨fun hij =>
401- or_iff_not_imp_left.mpr fun I_ne_bot =>
402- J.eq_bot_iff.mpr fun j hj =>
403- let ⟨i, hi, ne0⟩ := I.ne_bot_iff.mp I_ne_bot
404- Or.resolve_left (mul_eq_zero.mp ((I * J).eq_bot_iff.mp hij _ (mul_mem_mul hi hj))) ne0,
405- fun h => by obtain rfl | rfl := h; exacts [bot_mul _, mul_bot _]⟩
406-
407- instance [NoZeroDivisors R] : NoZeroDivisors (Ideal R) where
408- eq_zero_or_eq_zero_of_mul_eq_zero := mul_eq_bot.1
398+ theorem mul_eq_bot [NoZeroDivisors R] : I * J = ⊥ ↔ I = ⊥ ∨ J = ⊥ := Submodule.mul_eq_bot
409399
410400instance {S A : Type*} [Semiring S] [SMul R S] [AddCommMonoid A] [Module R A] [Module S A]
411401 [IsScalarTower R S A] [IsTorsionFree R A] {I : Submodule S A} : IsTorsionFree R I :=
You can’t perform that action at this time.
0 commit comments