Theorem: LinearMap.tensorProductEnd_apply
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
a b : A
f g : End R M
⊢ (tensorProduct R A M M) ((a * b) ⊗ₜ[R] (f * g)) =
    (tensorProduct R A M M) (a ⊗ₜ[R] f) * (tensorProduct R A M M) (b ⊗ₜ[R] g)
state_after: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
a b : A
f g : End R M
⊢ ∀ (x : A ⊗[R] M),
    ((tensorProduct R A M M) ((a * b) ⊗ₜ[R] (f * g))) x =
      ((tensorProduct R A M M) (a ⊗ₜ[R] f) * (tensorProduct R A M M) (b ⊗ₜ[R] g)) x
tactic: apply LinearMap.ext
state_before: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
a b : A
f g : End R M
⊢ ∀ (x : A ⊗[R] M),
    ((tensorProduct R A M M) ((a * b) ⊗ₜ[R] (f * g))) x =
      ((tensorProduct R A M M) (a ⊗ₜ[R] f) * (tensorProduct R A M M) (b ⊗ₜ[R] g)) x
state_after: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
a b : A
f g : End R M
x : A ⊗[R] M
⊢ ((tensorProduct R A M M) ((a * b) ⊗ₜ[R] (f * g))) x =
    ((tensorProduct R A M M) (a ⊗ₜ[R] f) * (tensorProduct R A M M) (b ⊗ₜ[R] g)) x
tactic: intro x
state_before: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
a b : A
f g : End R M
x : A ⊗[R] M
⊢ ((tensorProduct R A M M) ((a * b) ⊗ₜ[R] (f * g))) x =
    ((tensorProduct R A M M) (a ⊗ₜ[R] f) * (tensorProduct R A M M) (b ⊗ₜ[R] g)) x
state_after: no goals
tactic: simp only [tensorProduct, mul_comm a b, mul_eq_comp,
        TensorProduct.AlgebraTensorModule.lift_apply, TensorProduct.lift.tmul, coe_restrictScalars,
        coe_mk, AddHom.coe_mk, mul_smul, smul_apply, baseChangeHom_apply, baseChange_comp,
        comp_apply, Algebra.mul_smul_comm, Algebra.smul_mul_assoc]
state_before: R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
⊢ (tensorProduct R A M M) (1 ⊗ₜ[R] 1) = 1
state_after: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
⊢ ∀ (x : A ⊗[R] M), ((tensorProduct R A M M) (1 ⊗ₜ[R] 1)) x = 1 x
tactic: apply LinearMap.ext
state_before: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
⊢ ∀ (x : A ⊗[R] M), ((tensorProduct R A M M) (1 ⊗ₜ[R] 1)) x = 1 x
state_after: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
x : A ⊗[R] M
⊢ ((tensorProduct R A M M) (1 ⊗ₜ[R] 1)) x = 1 x
tactic: intro x
state_before: case h
R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
x : A ⊗[R] M
⊢ ((tensorProduct R A M M) (1 ⊗ₜ[R] 1)) x = 1 x
state_after: no goals
tactic: simp only [tensorProduct, TensorProduct.AlgebraTensorModule.lift_apply,
        TensorProduct.lift.tmul, coe_restrictScalars, coe_mk, AddHom.coe_mk, one_smul,
        baseChangeHom_apply, baseChange_eq_ltensor, one_apply, one_eq_id, lTensor_id,
        LinearMap.id_apply]