Theorem: NoZeroSMulDivisors.trans
File: Mathlib/Algebra/Algebra/Basic.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
⊢ NoZeroSMulDivisors R M
state_after: R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : r • m = 0
⊢ r = 0 ∨ m = 0
tactic: refine ⟨fun {r m} h => ?_⟩
state_before: R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : r • m = 0
⊢ r = 0 ∨ m = 0
state_after: R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : (algebraMap R A) r • m = 0
⊢ r = 0 ∨ m = 0
tactic: rw [algebra_compatible_smul A r m] at h
state_before: R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : (algebraMap R A) r • m = 0
⊢ r = 0 ∨ m = 0
state_after: case inl
R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : (algebraMap R A) r • m = 0
H : (algebraMap R A) r = 0
⊢ r = 0 ∨ m = 0

case inr
R✝ : Type u_1
inst✝²⁰ : CommSemiring R✝
A✝ : Type u_2
inst✝¹⁹ : Semiring A✝
inst✝¹⁸ : Algebra R✝ A✝
M✝ : Type u_3
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module A✝ M✝
inst✝¹⁵ : Module R✝ M✝
inst✝¹⁴ : IsScalarTower R✝ A✝ M✝
N : Type u_4
inst✝¹³ : AddCommMonoid N
inst✝¹² : Module A✝ N
inst✝¹¹ : Module R✝ N
inst✝¹⁰ : IsScalarTower R✝ A✝ N
R : Type u_5
A : Type u_6
M : Type u_7
inst✝⁹ : CommRing R
inst✝⁸ : Ring A
inst✝⁷ : IsDomain A
inst✝⁶ : Algebra R A
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Module A M
inst✝² : IsScalarTower R A M
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : NoZeroSMulDivisors A M
r : R
m : M
h : (algebraMap R A) r • m = 0
H : m = 0
⊢ r = 0 ∨ m = 0
tactic: cases' smul_eq_zero.1 h with H H