Theorem: ModuleCat.Free.left_unitality
File: Mathlib/Algebra/Category/ModuleCat/Adjunctions.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
X : Type u
⊢ (λ_ ((free R).obj X)).hom = (ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom
state_after: case H
R : Type u
inst✝ : CommRing R
X : Type u
⊢ (TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom =
    (TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
      ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom)
tactic: apply TensorProduct.ext
state_before: case H
R : Type u
inst✝ : CommRing R
X : Type u
⊢ (TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom =
    (TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
      ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom)
state_after: case H.h
R : Type u
inst✝ : CommRing R
X : Type u
⊢ ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 =
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
        ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
      1
tactic: apply LinearMap.ext_ring
state_before: case H.h
R : Type u
inst✝ : CommRing R
X : Type u
⊢ ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 =
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
        ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
      1
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
X : Type u
⊢ ∀ (a : X),
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
        Finsupp.lsingle a =
      ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
            ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
          1 ∘ₗ
        Finsupp.lsingle a
tactic: apply Finsupp.lhom_ext'
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
X : Type u
⊢ ∀ (a : X),
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
        Finsupp.lsingle a =
      ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
            ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
          1 ∘ₗ
        Finsupp.lsingle a
state_after: case H.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ Finsupp.lsingle x =
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
          ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
        1 ∘ₗ
      Finsupp.lsingle x
tactic: intro x
state_before: case H.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ Finsupp.lsingle x =
    ((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
          ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
        1 ∘ₗ
      Finsupp.lsingle x
state_after: case H.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ (((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ Finsupp.lsingle x)
      1 =
    (((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
            ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
          1 ∘ₗ
        Finsupp.lsingle x)
      1
tactic: apply LinearMap.ext_ring
state_before: case H.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ (((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ Finsupp.lsingle x)
      1 =
    (((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
            ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
          1 ∘ₗ
        Finsupp.lsingle x)
      1
state_after: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ ∀ (a : X),
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
            Finsupp.lsingle x)
          1)
        a =
      ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
                ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
              1 ∘ₗ
            Finsupp.lsingle x)
          1)
        a
tactic: apply Finsupp.ext
state_before: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x : X
⊢ ∀ (a : X),
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
            Finsupp.lsingle x)
          1)
        a =
      ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
                ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
              1 ∘ₗ
            Finsupp.lsingle x)
          1)
        a
state_after: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
⊢ ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x' =
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
              ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
            1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x'
tactic: intro x'
state_before: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
⊢ ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x' =
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
              ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
            1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x'
state_after: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
q : X →₀ R := (λ_ (of R (X →₀ R))).hom (1 ⊗ₜ[R] Finsupp.single x 1)
⊢ ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x' =
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
              ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
            1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x'
tactic: let q : X →₀ R := ((λ_ (of R (X →₀ R))).hom) (1 ⊗ₜ[R] Finsupp.single x 1)
state_before: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
q : X →₀ R := (λ_ (of R (X →₀ R))).hom (1 ⊗ₜ[R] Finsupp.single x 1)
⊢ ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂ (λ_ ((free R).obj X)).hom) 1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x' =
    ((((TensorProduct.mk R ↑(𝟙_ (ModuleCat R)) ↑((free R).obj X)).compr₂
              ((ε R ⊗ 𝟙 ((free R).obj X)) ≫ (μ R (𝟙_ (Type u)) X).hom ≫ map (free R).obj (λ_ X).hom))
            1 ∘ₗ
          Finsupp.lsingle x)
        1)
      x'
state_after: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
q : X →₀ R := (λ_ (of R (X →₀ R))).hom (1 ⊗ₜ[R] Finsupp.single x 1)
⊢ q x' =
    (Finsupp.mapDomain (λ_ X).hom
        ((finsuppTensorFinsupp' R (𝟙_ (Type u)) X) (Finsupp.single PUnit.unit 1 ⊗ₜ[R] Finsupp.single x 1)))
      x'
tactic: change q x' = Finsupp.mapDomain (λ_ X).hom (finsuppTensorFinsupp' R (𝟙_ (Type u)) X
    (Finsupp.single PUnit.unit 1 ⊗ₜ[R] Finsupp.single x 1)) x'
state_before: case H.h.h.h.h
R : Type u
inst✝ : CommRing R
X : Type u
x x' : X
q : X →₀ R := (λ_ (of R (X →₀ R))).hom (1 ⊗ₜ[R] Finsupp.single x 1)
⊢ q x' =
    (Finsupp.mapDomain (λ_ X).hom
        ((finsuppTensorFinsupp' R (𝟙_ (Type u)) X) (Finsupp.single PUnit.unit 1 ⊗ₜ[R] Finsupp.single x 1)))
      x'
state_after: no goals
tactic: simp_rw [q, finsuppTensorFinsupp'_single_tmul_single,
    ModuleCat.MonoidalCategory.leftUnitor_hom_apply, mul_one,
    Finsupp.mapDomain_single, CategoryTheory.leftUnitor_hom_apply, one_smul]