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

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ ((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom =
    (α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
      (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom
state_after: case H
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ (TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
      (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom) =
    (TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
      ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
        (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)
tactic: apply TensorProduct.ext
state_before: case H
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ (TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
      (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom) =
    (TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
      ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
        (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)
state_after: case H.H
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
        (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) =
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
        ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
          (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom))
tactic: apply TensorProduct.ext
state_before: case H.H
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
        (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) =
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
        ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
          (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom))
state_after: case H.H.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ ∀ (a : X),
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
        Finsupp.lsingle a =
      (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
              (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
        Finsupp.lsingle a
tactic: apply Finsupp.lhom_ext'
state_before: case H.H.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
⊢ ∀ (a : X),
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
        Finsupp.lsingle a =
      (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
              (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
        Finsupp.lsingle a
state_after: case H.H.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
        ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
          (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
      Finsupp.lsingle x =
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
        ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
          ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
            (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
      Finsupp.lsingle x
tactic: intro x
state_before: case H.H.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
        ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
          (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
      Finsupp.lsingle x =
    (TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
        ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
          ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
            (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
      Finsupp.lsingle x
state_after: case H.H.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
        Finsupp.lsingle x)
      1 =
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
              (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
        Finsupp.lsingle x)
      1
tactic: apply LinearMap.ext_ring
state_before: case H.H.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
        Finsupp.lsingle x)
      1 =
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
          ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
            ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
              (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
        Finsupp.lsingle x)
      1
state_after: case H.H.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ ∀ (a : Y),
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle a =
      ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                  (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle a
tactic: apply Finsupp.lhom_ext'
state_before: case H.H.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
⊢ ∀ (a : Y),
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle a =
      ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                  (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle a
state_after: case H.H.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
            ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
              (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
          Finsupp.lsingle x)
        1 ∘ₗ
      Finsupp.lsingle y =
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
            ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
              ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
          Finsupp.lsingle x)
        1 ∘ₗ
      Finsupp.lsingle y
tactic: intro y
state_before: case H.H.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
            ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
              (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
          Finsupp.lsingle x)
        1 ∘ₗ
      Finsupp.lsingle y =
    ((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
            ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
              ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
          Finsupp.lsingle x)
        1 ∘ₗ
      Finsupp.lsingle y
state_after: case H.H.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle y)
      1 =
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                  (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle y)
      1
tactic: apply LinearMap.ext_ring
state_before: case H.H.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle y)
      1 =
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
              ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                  (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
            Finsupp.lsingle x)
          1 ∘ₗ
        Finsupp.lsingle y)
      1
state_after: case H.H.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ ∀ (a : Z),
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle a =
      (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                      (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle a
tactic: apply Finsupp.lhom_ext'
state_before: case H.H.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
⊢ ∀ (a : Z),
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle a =
      (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                      (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle a
state_after: case H.H.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                  (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
              Finsupp.lsingle x)
            1 ∘ₗ
          Finsupp.lsingle y)
        1 ∘ₗ
      Finsupp.lsingle z =
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                  ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                    (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
              Finsupp.lsingle x)
            1 ∘ₗ
          Finsupp.lsingle y)
        1 ∘ₗ
      Finsupp.lsingle z
tactic: intro z
state_before: case H.H.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                  (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
              Finsupp.lsingle x)
            1 ∘ₗ
          Finsupp.lsingle y)
        1 ∘ₗ
      Finsupp.lsingle z =
    (((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                  ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                    (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
              Finsupp.lsingle x)
            1 ∘ₗ
          Finsupp.lsingle y)
        1 ∘ₗ
      Finsupp.lsingle z
state_after: case H.H.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ ((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle z)
      1 =
    ((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                      (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle z)
      1
tactic: apply LinearMap.ext_ring
state_before: case H.H.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ ((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle z)
      1 =
    ((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                  ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                    ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                      (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                Finsupp.lsingle x)
              1 ∘ₗ
            Finsupp.lsingle y)
          1 ∘ₗ
        Finsupp.lsingle z)
      1
state_after: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ ∀ (a : X ⊗ Y ⊗ Z),
    (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                        (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫
                          (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                    Finsupp.lsingle x)
                  1 ∘ₗ
                Finsupp.lsingle y)
              1 ∘ₗ
            Finsupp.lsingle z)
          1)
        a =
      (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                        ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                          (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                    Finsupp.lsingle x)
                  1 ∘ₗ
                Finsupp.lsingle y)
              1 ∘ₗ
            Finsupp.lsingle z)
          1)
        a
tactic: apply Finsupp.ext
state_before: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
⊢ ∀ (a : X ⊗ Y ⊗ Z),
    (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                        (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫
                          (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                    Finsupp.lsingle x)
                  1 ∘ₗ
                Finsupp.lsingle y)
              1 ∘ₗ
            Finsupp.lsingle z)
          1)
        a =
      (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                      ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                        ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                          (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                    Finsupp.lsingle x)
                  1 ∘ₗ
                Finsupp.lsingle y)
              1 ∘ₗ
            Finsupp.lsingle z)
          1)
        a
state_after: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                    ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                      (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                  Finsupp.lsingle x)
                1 ∘ₗ
              Finsupp.lsingle y)
            1 ∘ₗ
          Finsupp.lsingle z)
        1)
      a =
    (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                    ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                      ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                        (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                  Finsupp.lsingle x)
                1 ∘ₗ
              Finsupp.lsingle y)
            1 ∘ₗ
          Finsupp.lsingle z)
        1)
      a
tactic: intro a
state_before: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                    ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                      (((μ R X Y).hom ⊗ 𝟙 ((free R).obj Z)) ≫ (μ R (X ⊗ Y) Z).hom ≫ map (free R).obj (α_ X Y Z).hom)) ∘ₗ
                  Finsupp.lsingle x)
                1 ∘ₗ
              Finsupp.lsingle y)
            1 ∘ₗ
          Finsupp.lsingle z)
        1)
      a =
    (((((TensorProduct.mk R ↑((free R).obj X) ↑((free R).obj Y)).compr₂
                    ((TensorProduct.mk R ↑((free R).obj X ⊗ (free R).obj Y) ↑((free R).obj Z)).compr₂
                      ((α_ ((free R).obj X) ((free R).obj Y) ((free R).obj Z)).hom ≫
                        (𝟙 ((free R).obj X) ⊗ (μ R Y Z).hom) ≫ (μ R X (Y ⊗ Z)).hom)) ∘ₗ
                  Finsupp.lsingle x)
                1 ∘ₗ
              Finsupp.lsingle y)
            1 ∘ₗ
          Finsupp.lsingle z)
        1)
      a
state_after: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (Finsupp.mapDomain (α_ X Y Z).hom
        ((finsuppTensorFinsupp' R (X ⊗ Y) Z)
          ((finsuppTensorFinsupp' R X Y) (Finsupp.single x 1 ⊗ₜ[R] Finsupp.single y 1) ⊗ₜ[R] Finsupp.single z 1)))
      a =
    ((finsuppTensorFinsupp' R X (Y ⊗ Z))
        (Finsupp.single x 1 ⊗ₜ[R] (finsuppTensorFinsupp' R Y Z) (Finsupp.single y 1 ⊗ₜ[R] Finsupp.single z 1)))
      a
tactic: change Finsupp.mapDomain (α_ X Y Z).hom (finsuppTensorFinsupp' R (X ⊗ Y) Z
    (finsuppTensorFinsupp' R X Y
    (Finsupp.single x 1 ⊗ₜ[R] Finsupp.single y 1) ⊗ₜ[R] Finsupp.single z 1)) a =
    finsuppTensorFinsupp' R X (Y ⊗ Z)
    (Finsupp.single x 1 ⊗ₜ[R]
      finsuppTensorFinsupp' R Y Z (Finsupp.single y 1 ⊗ₜ[R] Finsupp.single z 1)) a
state_before: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (Finsupp.mapDomain (α_ X Y Z).hom
        ((finsuppTensorFinsupp' R (X ⊗ Y) Z)
          ((finsuppTensorFinsupp' R X Y) (Finsupp.single x 1 ⊗ₜ[R] Finsupp.single y 1) ⊗ₜ[R] Finsupp.single z 1)))
      a =
    ((finsuppTensorFinsupp' R X (Y ⊗ Z))
        (Finsupp.single x 1 ⊗ₜ[R] (finsuppTensorFinsupp' R Y Z) (Finsupp.single y 1 ⊗ₜ[R] Finsupp.single z 1)))
      a
state_after: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (Finsupp.single (x, y, z) 1) a = (Finsupp.single (x, y, z) 1) a
tactic: simp_rw [finsuppTensorFinsupp'_single_tmul_single, Finsupp.mapDomain_single, mul_one,
    CategoryTheory.associator_hom_apply]
state_before: case H.H.h.h.h.h.h.h.h
R : Type u
inst✝ : CommRing R
X Y Z : Type u
x : X
y : Y
z : Z
a : X ⊗ Y ⊗ Z
⊢ (Finsupp.single (x, y, z) 1) a = (Finsupp.single (x, y, z) 1) a
state_after: no goals
tactic: rfl