Theorem: IsLocalizedModule.mk'_mul_mk'_of_map_mul
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: symm
state_before: R : Type u_3
inst✝¹² : CommRing R
S : Submonoid R
M✝ : Type ?u.882378
M'✝ : Type ?u.882381
M'' : Type ?u.882384
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'✝
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R M✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_1
M' : Type u_2
inst✝⁴ : Semiring M
inst✝³ : Semiring M'
inst✝² : Module R M
inst✝¹ : Algebra R M'
f : M →ₗ[R] M'
hf : ∀ (m₁ m₂ : M), ↑f (m₁ * m₂) = ↑f m₁ * ↑f m₂
inst✝ : IsLocalizedModule S f
m₁ m₂ : M
s₁ s₂ : { x // x ∈ S }
⊢ mk' f m₁ s₁ * mk' f m₂ s₂ = mk' f (m₁ * m₂) (s₁ * s₂)

tactic: apply (Module.End_algebraMap_isUnit_inv_apply_eq_iff _ _ _).mpr
state_before: R : Type u_3
inst✝¹² : CommRing R
S : Submonoid R
M✝ : Type ?u.882378
M'✝ : Type ?u.882381
M'' : Type ?u.882384
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'✝
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R M✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_1
M' : Type u_2
inst✝⁴ : Semiring M
inst✝³ : Semiring M'
inst✝² : Module R M
inst✝¹ : Algebra R M'
f : M →ₗ[R] M'
hf : ∀ (m₁ m₂ : M), ↑f (m₁ * m₂) = ↑f m₁ * ↑f m₂
inst✝ : IsLocalizedModule S f
m₁ m₂ : M
s₁ s₂ : { x // x ∈ S }
⊢ mk' f (m₁ * m₂) (s₁ * s₂) = mk' f m₁ s₁ * mk' f m₂ s₂

tactic: simp_rw [Submonoid.coe_mul, ← smul_eq_mul]
state_before: R : Type u_3
inst✝¹² : CommRing R
S : Submonoid R
M✝ : Type ?u.882378
M'✝ : Type ?u.882381
M'' : Type ?u.882384
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'✝
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R M✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_1
M' : Type u_2
inst✝⁴ : Semiring M
inst✝³ : Semiring M'
inst✝² : Module R M
inst✝¹ : Algebra R M'
f : M →ₗ[R] M'
hf : ∀ (m₁ m₂ : M), ↑f (m₁ * m₂) = ↑f m₁ * ↑f m₂
inst✝ : IsLocalizedModule S f
m₁ m₂ : M
s₁ s₂ : { x // x ∈ S }
⊢ ↑f (m₁ * m₂, s₁ * s₂).fst = ↑(m₁ * m₂, s₁ * s₂).snd • (mk' f m₁ s₁ * mk' f m₂ s₂)

tactic: rw [smul_smul_smul_comm, ← mk'_smul, ← mk'_smul]
state_before: R : Type u_3
inst✝¹² : CommRing R
S : Submonoid R
M✝ : Type ?u.882378
M'✝ : Type ?u.882381
M'' : Type ?u.882384
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'✝
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R M✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_1
M' : Type u_2
inst✝⁴ : Semiring M
inst✝³ : Semiring M'
inst✝² : Module R M
inst✝¹ : Algebra R M'
f : M →ₗ[R] M'
hf : ∀ (m₁ m₂ : M), ↑f (m₁ * m₂) = ↑f m₁ * ↑f m₂
inst✝ : IsLocalizedModule S f
m₁ m₂ : M
s₁ s₂ : { x // x ∈ S }
⊢ ↑f (m₁ • m₂) = (↑s₁ • ↑s₂) • mk' f m₁ s₁ • mk' f m₂ s₂

tactic: simp_rw [← Submonoid.smul_def, mk'_cancel, smul_eq_mul, hf]
state_before: R : Type u_3
inst✝¹² : CommRing R
S : Submonoid R
M✝ : Type ?u.882378
M'✝ : Type ?u.882381
M'' : Type ?u.882384
inst✝¹¹ : AddCommMonoid M✝
inst✝¹⁰ : AddCommMonoid M'✝
inst✝⁹ : AddCommMonoid M''
inst✝⁸ : Module R M✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''
f✝ : M✝ →ₗ[R] M'✝
g : M✝ →ₗ[R] M''
inst✝⁵ : IsLocalizedModule S f✝
M : Type u_1
M' : Type u_2
inst✝⁴ : Semiring M
inst✝³ : Semiring M'
inst✝² : Module R M
inst✝¹ : Algebra R M'
f : M →ₗ[R] M'
hf : ∀ (m₁ m₂ : M), ↑f (m₁ * m₂) = ↑f m₁ * ↑f m₂
inst✝ : IsLocalizedModule S f
m₁ m₂ : M
s₁ s₂ : { x // x ∈ S }
⊢ ↑f (m₁ • m₂) = mk' f (↑s₁ • m₁) s₁ • mk' f (↑s₂ • m₂) s₂