Theorem: TensorProduct.AlgebraTensorModule.map_add_left
File: Mathlib/LinearAlgebra/TensorProduct/Tower.lean

Proof steps:
state_before: R : Type uR
A : Type uA
B : Type uB
M : Type uM
N : Type uN
P : Type uP
Q : Type uQ
P' : Type uP'
Q' : Type uQ'
inst✝³¹ : CommSemiring R
inst✝³⁰ : Semiring A
inst✝²⁹ : Semiring B
inst✝²⁸ : Algebra R A
inst✝²⁷ : Algebra R B
inst✝²⁶ : AddCommMonoid M
inst✝²⁵ : Module R M
inst✝²⁴ : Module A M
inst✝²³ : Module B M
inst✝²² : IsScalarTower R A M
inst✝²¹ : IsScalarTower R B M
inst✝²⁰ : SMulCommClass A B M
inst✝¹⁹ : AddCommMonoid N
inst✝¹⁸ : Module R N
inst✝¹⁷ : AddCommMonoid P
inst✝¹⁶ : Module R P
inst✝¹⁵ : Module A P
inst✝¹⁴ : Module B P
inst✝¹³ : IsScalarTower R A P
inst✝¹² : IsScalarTower R B P
inst✝¹¹ : SMulCommClass A B P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : Module R Q
inst✝⁸ : AddCommMonoid P'
inst✝⁷ : Module R P'
inst✝⁶ : Module A P'
inst✝⁵ : Module B P'
inst✝⁴ : IsScalarTower R A P'
inst✝³ : IsScalarTower R B P'
inst✝² : SMulCommClass A B P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
f₁ f₂ : M →ₗ[A] P
g : N →ₗ[R] Q
⊢ map (f₁ + f₂) g = map f₁ g + map f₂ g
state_after: case a.h.h
R : Type uR
A : Type uA
B : Type uB
M : Type uM
N : Type uN
P : Type uP
Q : Type uQ
P' : Type uP'
Q' : Type uQ'
inst✝³¹ : CommSemiring R
inst✝³⁰ : Semiring A
inst✝²⁹ : Semiring B
inst✝²⁸ : Algebra R A
inst✝²⁷ : Algebra R B
inst✝²⁶ : AddCommMonoid M
inst✝²⁵ : Module R M
inst✝²⁴ : Module A M
inst✝²³ : Module B M
inst✝²² : IsScalarTower R A M
inst✝²¹ : IsScalarTower R B M
inst✝²⁰ : SMulCommClass A B M
inst✝¹⁹ : AddCommMonoid N
inst✝¹⁸ : Module R N
inst✝¹⁷ : AddCommMonoid P
inst✝¹⁶ : Module R P
inst✝¹⁵ : Module A P
inst✝¹⁴ : Module B P
inst✝¹³ : IsScalarTower R A P
inst✝¹² : IsScalarTower R B P
inst✝¹¹ : SMulCommClass A B P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : Module R Q
inst✝⁸ : AddCommMonoid P'
inst✝⁷ : Module R P'
inst✝⁶ : Module A P'
inst✝⁵ : Module B P'
inst✝⁴ : IsScalarTower R A P'
inst✝³ : IsScalarTower R B P'
inst✝² : SMulCommClass A B P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
f₁ f₂ : M →ₗ[A] P
g : N →ₗ[R] Q
x✝¹ : M
x✝ : N
⊢ ((curry (map (f₁ + f₂) g)) x✝¹) x✝ = ((curry (map f₁ g + map f₂ g)) x✝¹) x✝
tactic: ext
state_before: case a.h.h
R : Type uR
A : Type uA
B : Type uB
M : Type uM
N : Type uN
P : Type uP
Q : Type uQ
P' : Type uP'
Q' : Type uQ'
inst✝³¹ : CommSemiring R
inst✝³⁰ : Semiring A
inst✝²⁹ : Semiring B
inst✝²⁸ : Algebra R A
inst✝²⁷ : Algebra R B
inst✝²⁶ : AddCommMonoid M
inst✝²⁵ : Module R M
inst✝²⁴ : Module A M
inst✝²³ : Module B M
inst✝²² : IsScalarTower R A M
inst✝²¹ : IsScalarTower R B M
inst✝²⁰ : SMulCommClass A B M
inst✝¹⁹ : AddCommMonoid N
inst✝¹⁸ : Module R N
inst✝¹⁷ : AddCommMonoid P
inst✝¹⁶ : Module R P
inst✝¹⁵ : Module A P
inst✝¹⁴ : Module B P
inst✝¹³ : IsScalarTower R A P
inst✝¹² : IsScalarTower R B P
inst✝¹¹ : SMulCommClass A B P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : Module R Q
inst✝⁸ : AddCommMonoid P'
inst✝⁷ : Module R P'
inst✝⁶ : Module A P'
inst✝⁵ : Module B P'
inst✝⁴ : IsScalarTower R A P'
inst✝³ : IsScalarTower R B P'
inst✝² : SMulCommClass A B P'
inst✝¹ : AddCommMonoid Q'
inst✝ : Module R Q'
f₁ f₂ : M →ₗ[A] P
g : N →ₗ[R] Q
x✝¹ : M
x✝ : N
⊢ ((curry (map (f₁ + f₂) g)) x✝¹) x✝ = ((curry (map f₁ g + map f₂ g)) x✝¹) x✝
state_after: no goals
tactic: simp_rw [curry_apply, TensorProduct.curry_apply, restrictScalars_apply, add_apply, map_tmul,
    add_apply, add_tmul]