Theorem: ModuleCat.MonoidalCategory.rightUnitor_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 f (𝟙 (of R R)) ≫ (rightUnitor N).hom = (rightUnitor M).hom ≫ f
state_after: case H
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
⊢ (TensorProduct.mk R ↑M ↑(of R R)).compr₂ (tensorHom f (𝟙 (of R R)) ≫ (rightUnitor N).hom) =
    (TensorProduct.mk R ↑M ↑(of R R)).compr₂ ((rightUnitor M).hom ≫ f)

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

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

tactic: apply LinearMap.ext_ring
state_before: case H.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ ((TensorProduct.mk R ↑M ↑(of R R)).compr₂ (tensorHom f (𝟙 (of R R)) ≫ (rightUnitor N).hom)) x =
    ((TensorProduct.mk R ↑M ↑(of R R)).compr₂ ((rightUnitor M).hom ≫ f)) 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 ↑M ↑(of R R)).compr₂ (tensorHom f (𝟙 (of R R)) ≫ (rightUnitor N).hom)) x) 1 =
    (((TensorProduct.mk R ↑M ↑(of R R)).compr₂ ((rightUnitor M).hom ≫ f)) x) 1

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

tactic: erw [TensorProduct.rid_tmul, TensorProduct.rid_tmul]
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (rightUnitor N).hom ((tensorHom f (𝟙 (of R R))) (x ⊗ₜ[R] 1)) = f ((rightUnitor M).hom (x ⊗ₜ[R] 1))
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
M N : ModuleCat R
f : M ⟶ N
x : ↑M
⊢ (𝟙 (of R R)) (x, 1).2 • f (x, 1).1 = 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)) (x, 1).2 • f (x, 1).1 = 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)) (x, 1).2 • f (x, 1).1 = 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)) (x, 1).2 • f (x, 1).1 = 1 • f x
state_after: no goals