Theorem: TensorProduct.add_smul
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: simp_rw [TensorProduct.smul_zero, add_zero]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type ?u.231678
inst✝¹⁵ : Monoid R'
R'' : Type u_4
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.231696
Q : Type ?u.231699
S : Type ?u.231702
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
r s : R''
x : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
⊢ (r + s) • 0 = r • 0 + s • 0

tactic: simp_rw [this, add_smul, add_tmul]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type ?u.231678
inst✝¹⁵ : Monoid R'
R'' : Type u_4
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.231696
Q : Type ?u.231699
S : Type ?u.231702
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
r s : R''
x : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
m : M
n : N
⊢ (r + s) • m ⊗ₜ[R] n = r • m ⊗ₜ[R] n + s • m ⊗ₜ[R] n

tactic: simp_rw [TensorProduct.smul_add]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type ?u.231678
inst✝¹⁵ : Monoid R'
R'' : Type u_4
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.231696
Q : Type ?u.231699
S : Type ?u.231702
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
r s : R''
x✝ : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
x y : M ⊗[R] N
ihx : (r + s) • x = r • x + s • x
ihy : (r + s) • y = r • y + s • y
⊢ (r + s) • (x + y) = r • (x + y) + s • (x + y)

tactic: rw [ihx, ihy, add_add_add_comm]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type ?u.231678
inst✝¹⁵ : Monoid R'
R'' : Type u_4
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.231696
Q : Type ?u.231699
S : Type ?u.231702
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
r s : R''
x✝ : M ⊗[R] N
this : ∀ (r : R'') (m : M) (n : N), r • m ⊗ₜ[R] n = (r • m) ⊗ₜ[R] n
x y : M ⊗[R] N
ihx : (r + s) • x = r • x + s • x
ihy : (r + s) • y = r • y + s • y
⊢ (r + s) • x + (r + s) • y = r • x + r • y + (s • x + s • y)