Theorem: CoalgebraCat.MonoidalCategoryAux.comul_tensorObj_tensorObj_left
File: Mathlib/Algebra/Category/CoalgebraCat/ComonEquivalence.lean

Proof steps:
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ Coalgebra.comul = Coalgebra.comul
state_after: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ ((comonEquivalence R).symm.inverse.obj (of R M ⊗ of R N) ⊗ (comonEquivalence R).symm.inverse.obj (of R P)).comul =
    Coalgebra.comul
tactic: rw [ofComonObjCoalgebraStruct_comul]
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ ((comonEquivalence R).symm.inverse.obj (of R M ⊗ of R N) ⊗ (comonEquivalence R).symm.inverse.obj (of R P)).comul =
    Coalgebra.comul
state_after: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map Coalgebra.comul Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
tactic: dsimp [- Mon_.monMonoidalStruct_tensorObj_X, instMonoidalCategoryStruct_tensorHom,
    ModuleCat.comp_def, ModuleCat.ofHom, ModuleCat.of]
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map Coalgebra.comul Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
state_after: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map
        (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
            (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
              Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj)).comul
        Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
tactic: rw [ofComonObjCoalgebraStruct_comul]
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map
        (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
            (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
              Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj)).comul
        Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
state_after: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map
        ((tensor_μ (ModuleCat R)ᵒᵖ (Opposite.op (ModuleCat.mk M), Opposite.op (ModuleCat.mk N))
              (Opposite.op (ModuleCat.mk M), Opposite.op (ModuleCat.mk N))).unop ∘ₗ
          map Coalgebra.comul Coalgebra.comul)
        Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
tactic: dsimp [- Mon_.monMonoidalStruct_tensorObj_X, instMonoidalCategoryStruct_tensorHom,
    ModuleCat.comp_def, ModuleCat.ofHom, ModuleCat.of]
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ (tensor_μ (ModuleCat R)ᵒᵖ
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))
          (Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat,
            Opposite.op (ModuleCat.mk P))).unop ∘ₗ
      map
        ((tensor_μ (ModuleCat R)ᵒᵖ (Opposite.op (ModuleCat.mk M), Opposite.op (ModuleCat.mk N))
              (Opposite.op (ModuleCat.mk M), Opposite.op (ModuleCat.mk N))).unop ∘ₗ
          map Coalgebra.comul Coalgebra.comul)
        Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
state_after: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ ↑(tensorTensorTensorComm R
          (↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat)
          (↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat)
          P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
tactic: simp only [instMonoidalCategoryStruct_tensorObj, ModuleCat.MonoidalCategory.tensorObj,
    ModuleCat.coe_of, BraidedCategory.unop_tensor_μ, tensor_μ_eq_tensorTensorTensorComm]
state_before: R : Type u
inst✝¹² : CommRing R
M N P Q : Type u
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : AddCommGroup Q
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Coalgebra R M
inst✝² : Coalgebra R N
inst✝¹ : Coalgebra R P
inst✝ : Coalgebra R Q
⊢ ↑(tensorTensorTensorComm R
          (↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat)
          (↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R M).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj))).toModuleCat)
          P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul =
    ↑(tensorTensorTensorComm R (M ⊗[R] N) (M ⊗[R] N) P P) ∘ₗ
      map (↑(tensorTensorTensorComm R M M N N) ∘ₗ map Coalgebra.comul Coalgebra.comul) Coalgebra.comul
state_after: no goals
tactic: rfl