Theorem: ModuleCat.MonoidalCategory.leftUnitor_naturality
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Basic.lean

tactic: apply TensorProduct.ext
state_before: R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom = (leftUnitor M).hom ≫ f
state_after: case H
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ (TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom) =
    (TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)

tactic: apply LinearMap.ext_ring
state_before: case H
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ (TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom) =
    (TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)
state_after: case H.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ ((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1 =
    ((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1

tactic: apply LinearMap.ext
state_before: case H.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ ((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1 =
    ((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ ∀ (x : ↑M),
    (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1) x =
      (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1) x

tactic: intro x
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ ∀ (x : ↑M),
    (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1) x =
      (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1) x
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1) x =
    (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1) x

tactic: change ((leftUnitor N).hom) ((tensorHom (𝟙 (of R R)) f) ((1 : R) ⊗ₜ[R] x)) =
  f (((leftUnitor M).hom) (1 ⊗ₜ[R] x))
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ (tensorHom (𝟙 (of R R)) f ≫ (leftUnitor N).hom)) 1) x =
    (((TensorProduct.mk R ↑(of R R) ↑M).compr₂ ((leftUnitor M).hom ≫ f)) 1) x
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (leftUnitor N).hom ((tensorHom (𝟙 (of R R)) f) (1 ⊗ₜ[R] x)) = f ((leftUnitor M).hom (1 ⊗ₜ[R] x))

tactic: erw [TensorProduct.lid_tmul, TensorProduct.lid_tmul]
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (leftUnitor N).hom ((tensorHom (𝟙 (of R R)) f) (1 ⊗ₜ[R] x)) = f ((leftUnitor M).hom (1 ⊗ₜ[R] x))
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (𝟙 (of R R)) (1, x).1 • f (1, x).2 = f (1 • x)

tactic: rw [LinearMap.map_smul]
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (𝟙 (of R R)) (1, x).1 • f (1, x).2 = f (1 • x)
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (𝟙 (of R R)) (1, x).1 • f (1, x).2 = 1 • f x

tactic: rfl
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (𝟙 (of R R)) (1, x).1 • f (1, x).2 = 1 • f x
state_after: no goals