Theorem: CoalgebraCat.MonoidalCategoryAux.comul_tensorObj_tensorObj_right
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) ⊗ (comonEquivalence R).symm.inverse.obj (of R N ⊗ 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) ⊗ (comonEquivalence R).symm.inverse.obj (of R N ⊗ 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul Coalgebra.comul =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul Coalgebra.comul =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul
        (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
            (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
              Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj)).comul =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul
        (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
            (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
              Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj)).comul =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul
        ((tensor_μ (ModuleCat R)ᵒᵖ (Opposite.op (ModuleCat.mk N), Opposite.op (ModuleCat.mk P))
              (Opposite.op (ModuleCat.mk N), Opposite.op (ModuleCat.mk P))).unop ∘ₗ
          map Coalgebra.comul Coalgebra.comul) =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)
          (Opposite.op (ModuleCat.mk M),
            Opposite.op
              ((ofComon R).obj
                  (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                    (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                      Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat)).unop ∘ₗ
      map Coalgebra.comul
        ((tensor_μ (ModuleCat R)ᵒᵖ (Opposite.op (ModuleCat.mk N), Opposite.op (ModuleCat.mk P))
              (Opposite.op (ModuleCat.mk N), Opposite.op (ModuleCat.mk P))).unop ∘ₗ
          map Coalgebra.comul Coalgebra.comul) =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 M M
          ↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat
          ↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map Coalgebra.comul Coalgebra.comul) =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map 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 M M
          ↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat
          ↑((ofComon R).obj
                (Comon_.Mon_OpOpToComon_obj' (ModuleCat R)
                  (Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R N).toComonObj ⊗
                    Comon_.Comon_ToMon_OpOp_obj' (ModuleCat R) (of R P).toComonObj))).toModuleCat) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map Coalgebra.comul Coalgebra.comul) =
    ↑(tensorTensorTensorComm R M M (N ⊗[R] P) (N ⊗[R] P)) ∘ₗ
      map Coalgebra.comul (↑(tensorTensorTensorComm R N N P P) ∘ₗ map Coalgebra.comul Coalgebra.comul)
state_after: no goals
tactic: rfl