Theorem: PiTensorProduct.smul_tprodCoeff
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: have h₁ : r • z = r • (1 : R) * z := by rw [smul_mul_assoc, one_mul]
state_before: ι : Type u_1
ι₂ : Type ?u.59540
ι₃ : Type ?u.59543
R : Type u_3
inst✝¹² : CommSemiring R
R₁ : Type u_2
R₂ : Type ?u.59555
s : ι → Type u_4
inst✝¹¹ : (i : ι) → AddCommMonoid (s i)
inst✝¹⁰ : (i : ι) → Module R (s i)
M : Type ?u.59745
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
E : Type ?u.59879
inst✝⁷ : AddCommMonoid E
inst✝⁶ : Module R E
F : Type ?u.60013
inst✝⁵ : AddCommMonoid F
inst✝⁴ : DecidableEq ι
z : R
f : (i : ι) → s i
i : ι
r : R₁
inst✝³ : SMul R₁ R
inst✝² : IsScalarTower R₁ R R
inst✝¹ : SMul R₁ (s i)
inst✝ : IsScalarTower R₁ R (s i)
⊢ tprodCoeff R z (update f i (r • f i)) = tprodCoeff R (r • z) f

tactic: have h₂ : r • f i = (r • (1 : R)) • f i := (smul_one_smul _ _ _).symm
state_before: ι : Type u_1
ι₂ : Type ?u.59540
ι₃ : Type ?u.59543
R : Type u_3
inst✝¹² : CommSemiring R
R₁ : Type u_2
R₂ : Type ?u.59555
s : ι → Type u_4
inst✝¹¹ : (i : ι) → AddCommMonoid (s i)
inst✝¹⁰ : (i : ι) → Module R (s i)
M : Type ?u.59745
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
E : Type ?u.59879
inst✝⁷ : AddCommMonoid E
inst✝⁶ : Module R E
F : Type ?u.60013
inst✝⁵ : AddCommMonoid F
inst✝⁴ : DecidableEq ι
z : R
f : (i : ι) → s i
i : ι
r : R₁
inst✝³ : SMul R₁ R
inst✝² : IsScalarTower R₁ R R
inst✝¹ : SMul R₁ (s i)
inst✝ : IsScalarTower R₁ R (s i)
h₁ : r • z = r • 1 * z
⊢ tprodCoeff R z (update f i (r • f i)) = tprodCoeff R (r • z) f

tactic: rw [h₁, h₂]
state_before: ι : Type u_1
ι₂ : Type ?u.59540
ι₃ : Type ?u.59543
R : Type u_3
inst✝¹² : CommSemiring R
R₁ : Type u_2
R₂ : Type ?u.59555
s : ι → Type u_4
inst✝¹¹ : (i : ι) → AddCommMonoid (s i)
inst✝¹⁰ : (i : ι) → Module R (s i)
M : Type ?u.59745
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
E : Type ?u.59879
inst✝⁷ : AddCommMonoid E
inst✝⁶ : Module R E
F : Type ?u.60013
inst✝⁵ : AddCommMonoid F
inst✝⁴ : DecidableEq ι
z : R
f : (i : ι) → s i
i : ι
r : R₁
inst✝³ : SMul R₁ R
inst✝² : IsScalarTower R₁ R R
inst✝¹ : SMul R₁ (s i)
inst✝ : IsScalarTower R₁ R (s i)
h₁ : r • z = r • 1 * z
h₂ : r • f i = (r • 1) • f i
⊢ tprodCoeff R z (update f i (r • f i)) = tprodCoeff R (r • z) f

tactic: exact smul_tprodCoeff_aux z f i _
state_before: ι : Type u_1
ι₂ : Type ?u.59540
ι₃ : Type ?u.59543
R : Type u_3
inst✝¹² : CommSemiring R
R₁ : Type u_2
R₂ : Type ?u.59555
s : ι → Type u_4
inst✝¹¹ : (i : ι) → AddCommMonoid (s i)
inst✝¹⁰ : (i : ι) → Module R (s i)
M : Type ?u.59745
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
E : Type ?u.59879
inst✝⁷ : AddCommMonoid E
inst✝⁶ : Module R E
F : Type ?u.60013
inst✝⁵ : AddCommMonoid F
inst✝⁴ : DecidableEq ι
z : R
f : (i : ι) → s i
i : ι
r : R₁
inst✝³ : SMul R₁ R
inst✝² : IsScalarTower R₁ R R
inst✝¹ : SMul R₁ (s i)
inst✝ : IsScalarTower R₁ R (s i)
h₁ : r • z = r • 1 * z
h₂ : r • f i = (r • 1) • f i
⊢ tprodCoeff R z (update f i ((r • 1) • f i)) = tprodCoeff R (r • 1 * z) f

tactic: rw [smul_mul_assoc, one_mul]
state_before: ι : Type u_1
ι₂ : Type ?u.59540
ι₃ : Type ?u.59543
R : Type u_3
inst✝¹² : CommSemiring R
R₁ : Type u_2
R₂ : Type ?u.59555
s : ι → Type u_4
inst✝¹¹ : (i : ι) → AddCommMonoid (s i)
inst✝¹⁰ : (i : ι) → Module R (s i)
M : Type ?u.59745
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
E : Type ?u.59879
inst✝⁷ : AddCommMonoid E
inst✝⁶ : Module R E
F : Type ?u.60013
inst✝⁵ : AddCommMonoid F
inst✝⁴ : DecidableEq ι
z : R
f : (i : ι) → s i
i : ι
r : R₁
inst✝³ : SMul R₁ R
inst✝² : IsScalarTower R₁ R R
inst✝¹ : SMul R₁ (s i)
inst✝ : IsScalarTower R₁ R (s i)
⊢ r • z = r • 1 * z