[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ Q.actLeft ≫ f.inv = (𝟙 X.X ⊗ f.inv) ≫ P.actLeft
[PROOFSTEP]
rw [← cancel_mono f.hom, Category.assoc, Category.assoc, Iso.inv_hom_id, Category.comp_id, f_left_act_hom, ←
  Category.assoc, ← id_tensor_comp, Iso.inv_hom_id, MonoidalCategory.tensor_id, Category.id_comp]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ Q.actRight ≫ f.inv = (f.inv ⊗ 𝟙 Y.X) ≫ P.actRight
[PROOFSTEP]
rw [← cancel_mono f.hom, Category.assoc, Category.assoc, Iso.inv_hom_id, Category.comp_id, f_right_act_hom, ←
  Category.assoc, ← comp_tensor_id, Iso.inv_hom_id, MonoidalCategory.tensor_id, Category.id_comp]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ Hom.mk f.hom ≫ Hom.mk f.inv = 𝟙 P
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ (Hom.mk f.hom ≫ Hom.mk f.inv).hom = (𝟙 P).hom
[PROOFSTEP]
dsimp
[GOAL]
case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ f.hom ≫ f.inv = 𝟙 P.X
[PROOFSTEP]
rw [Iso.hom_inv_id]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ Hom.mk f.inv ≫ Hom.mk f.hom = 𝟙 Q
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ (Hom.mk f.inv ≫ Hom.mk f.hom).hom = (𝟙 Q).hom
[PROOFSTEP]
dsimp
[GOAL]
case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
X Y : Mon_ C
P Q : Bimod X Y
f : P.X ≅ Q.X
f_left_act_hom : P.actLeft ≫ f.hom = (𝟙 X.X ⊗ f.hom) ≫ Q.actLeft
f_right_act_hom : P.actRight ≫ f.hom = (f.hom ⊗ 𝟙 Y.X) ≫ Q.actRight
⊢ f.inv ≫ f.hom = 𝟙 Q.X
[PROOFSTEP]
rw [Iso.inv_hom_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (tensorLeft R.X).map (P.actRight ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_inv_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((α_ R.X (P.X ⊗ S.X) Q.X).inv ≫ ((𝟙 R.X ⊗ P.actRight) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((α_ R.X (P.X ⊗ S.X) Q.X).inv ≫ ((𝟙 R.X ⊗ P.actRight) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
      (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫
        ((α_ (R.X ⊗ P.X) S.X Q.X).inv ≫ ((P.actLeft ⊗ 𝟙 S.X) ⊗ 𝟙 Q.X)) ≫ (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_rhs 4 5 => rw [← tensor_comp, middle_assoc, tensor_comp, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((P.actLeft ⊗ 𝟙 S.X) ⊗ 𝟙 Q.X) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ P.X) S.X Q.X).inv
[PROOFSTEP]
rw [← tensor_comp, middle_assoc, tensor_comp, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((P.actLeft ⊗ 𝟙 S.X) ⊗ 𝟙 Q.X) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ P.X) S.X Q.X).inv
[PROOFSTEP]
rw [← tensor_comp, middle_assoc, tensor_comp, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((P.actLeft ⊗ 𝟙 S.X) ⊗ 𝟙 Q.X) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ P.X) S.X Q.X).inv
[PROOFSTEP]
rw [← tensor_comp, middle_assoc, tensor_comp, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((α_ R.X (P.X ⊗ S.X) Q.X).inv ≫ ((𝟙 R.X ⊗ P.actRight) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
      (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫
        (α_ (R.X ⊗ P.X) S.X Q.X).inv ≫
          ((α_ R.X P.X S.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actRight) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (tensorLeft R.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫ (α_ R.X P.X Q.X).inv ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫ (α_ R.X P.X Q.X).inv ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 1 1 => rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X Q.X).inv
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫ (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actLeft)) ≫ (α_ R.X P.X Q.X).inv) ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actLeft) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actLeft) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actLeft) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
      ((α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actLeft)) ≫ (P.actLeft ⊗ 𝟙 Q.X) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 3 4 => rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actLeft) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actLeft) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actLeft) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫ (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ Q.actLeft) =
    ((𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫
        (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_rhs 4 6 => rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫ (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ Q.actLeft) =
    (𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom) ≫ (α_ R.X P.X (S.X ⊗ Q.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_rhs 3 4 => rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 Q.X) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ P.X S.X Q.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X P.X (S.X ⊗ Q.X)).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q =
    (α_ R.X P.X Q.X).inv ≫
      (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
erw [map_π_preserves_coequalizer_inv_colimMap (tensorLeft _)]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((α_ R.X P.X Q.X).inv ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X P.X Q.X).inv ≫
      (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
simp only [Category.assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (R.one ⊗ 𝟙 (X P Q)) ≫ actLeft P Q = (λ_ (X P Q)).hom
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (tensorLeft (𝟙_ C)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (R.one ⊗ 𝟙 (X P Q)) ≫ actLeft P Q =
    (tensorLeft (𝟙_ C)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (X P Q)).hom
[PROOFSTEP]
dsimp [X]
  -- porting note: had to replace `rw` by `erw`
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (R.one ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫ actLeft P Q =
    (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 1 2 => erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.one ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.one ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.one ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((R.one ⊗ 𝟙 (P.X ⊗ Q.X)) ≫
        (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫
      actLeft P Q =
    (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 2 3 => rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.one ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.one ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.one ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (R.one ⊗ 𝟙 (P.X ⊗ Q.X)) ≫
      (α_ R.X P.X Q.X).inv ≫
        (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.one ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.one ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.one ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (((α_ (𝟙_ C) P.X Q.X).inv ≫ ((R.one ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 2 3 => rw [← comp_tensor_id, one_actLeft]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.one ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (𝟙_ C) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, one_actLeft]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.one ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (𝟙_ C) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, one_actLeft]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.one ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (𝟙_ C) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, one_actLeft]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (𝟙_ C) P.X Q.X).inv ≫
      ((λ_ P.X).hom ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_rhs 1 2 => rw [leftUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (𝟙_ C) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (λ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (𝟙_ C) P.X Q.X).inv ≫
      ((λ_ P.X).hom ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (λ_ (P.X ⊗ Q.X)).hom ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (R.mul ⊗ 𝟙 (X P Q)) ≫ actLeft P Q = (α_ R.X R.X (X P Q)).hom ≫ (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (tensorLeft (R.X ⊗ R.X)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (R.mul ⊗ 𝟙 (X P Q)) ≫ actLeft P Q =
    (tensorLeft (R.X ⊗ R.X)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (X P Q)).hom ≫ (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
dsimp [X]
  -- porting note: had to replace some `rw` by `erw`
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (R.mul ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫ actLeft P Q =
    (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom ≫
        (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 1 2 => erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.mul ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.mul ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (R.mul ⊗ 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ ((R.mul ⊗ 𝟙 (P.X ⊗ Q.X)) ≫
        (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫
      actLeft P Q =
    (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom ≫
        (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 2 3 => rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.mul ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.mul ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| R.mul ⊗ 𝟙 (P.X ⊗ Q.X)
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (R.mul ⊗ 𝟙 (P.X ⊗ Q.X)) ≫
      (α_ R.X P.X Q.X).inv ≫
        (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom ≫
        (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.mul ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.mul ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (R.mul ⊗ 𝟙 (P.X ⊗ Q.X)) ≫ (α_ R.X P.X Q.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (((α_ (R.X ⊗ R.X) P.X Q.X).inv ≫ ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom ≫
        (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 2 3 => rw [← comp_tensor_id, left_assoc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ R.X) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, left_assoc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ R.X) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, left_assoc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ (R.X ⊗ R.X) P.X Q.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, left_assoc, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (R.X ⊗ R.X) P.X Q.X).inv ≫
      (((α_ R.X R.X P.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom ≫
        (𝟙 R.X ⊗ actLeft P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_rhs 1 2 => erw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 (R.X ⊗ R.X) ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (α_ R.X R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (R.X ⊗ R.X) P.X Q.X).inv ≫
      (((α_ R.X R.X P.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (((α_ R.X R.X (P.X ⊗ Q.X)).hom ≫
          (𝟙 R.X ⊗ 𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫
        (𝟙 R.X ⊗ actLeft P Q)) ≫
      actLeft P Q
[PROOFSTEP]
slice_rhs 2 3 => rw [← id_tensor_comp, id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (𝟙 R.X ⊗ actLeft P Q)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (𝟙 R.X ⊗ actLeft P Q)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ 𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
    (𝟙 R.X ⊗ actLeft P Q)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (R.X ⊗ R.X) P.X Q.X).inv ≫
      (((α_ R.X R.X P.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X R.X (P.X ⊗ Q.X)).hom ≫
      ((𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv) ≫
          (𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X) ≫
            (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫
        actLeft P Q
[PROOFSTEP]
slice_rhs 4 5 => rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (R.X ⊗ R.X) P.X Q.X).inv ≫
      (((α_ R.X R.X P.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X R.X (P.X ⊗ Q.X)).hom ≫
      (𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv) ≫
        (𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X) ≫
          (α_ R.X P.X Q.X).inv ≫
            (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (𝟙 R.X ⊗ P.actLeft ⊗ 𝟙 Q.X) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| (α_ R.X R.X (P.X ⊗ Q.X)).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
| 𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
⊢ (α_ (R.X ⊗ R.X) P.X Q.X).inv ≫
      (((α_ R.X R.X P.X).hom ⊗ 𝟙 Q.X) ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X R.X (P.X ⊗ Q.X)).hom ≫
      (𝟙 R.X ⊗ (α_ R.X P.X Q.X).inv) ≫
        (((α_ R.X (R.X ⊗ P.X) Q.X).inv ≫ ((𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 Q.X)) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight T.X).map (P.actRight ⊗ 𝟙 Q.X) ≫ (α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 T.X)) ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (P.actRight ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (P.actRight ⊗ Q.actRight) =
    (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
      (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫
        ((α_ P.X S.X (Q.X ⊗ T.X)).inv ≫ ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight)) ≫ (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_rhs 2 4 => rw [Iso.hom_inv_id_assoc]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (α_ P.X S.X (Q.X ⊗ T.X)).inv ≫ ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (α_ P.X S.X (Q.X ⊗ T.X)).inv ≫ ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (α_ P.X S.X (Q.X ⊗ T.X)).inv ≫ ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight ⊗ 𝟙 Q.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (P.actRight ⊗ Q.actRight) =
    (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight) ≫ (P.actRight ⊗ 𝟙 Q.X)
[PROOFSTEP]
slice_rhs 2 3 => rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ 𝟙 S.X) ⊗ Q.actRight) ≫ (P.actRight ⊗ 𝟙 Q.X)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight T.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫ (α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 1 1 => rw [comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X)) ≫ (α_ P.X Q.X T.X).hom) ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X) ≫ ((α_ P.X (S.X ⊗ Q.X) T.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 T.X)) ≫ (𝟙 P.X ⊗ Q.actRight) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_lhs 3 4 => rw [← id_tensor_comp, middle_assoc, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X (S.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, middle_assoc, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X (S.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, middle_assoc, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X (S.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, middle_assoc, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X) ≫
      (α_ P.X (S.X ⊗ Q.X) T.X).hom ≫ (𝟙 P.X ⊗ (α_ S.X Q.X T.X).hom) ≫ (𝟙 P.X ⊗ (𝟙 S.X ⊗ Q.actRight) ≫ Q.actLeft) =
    ((α_ (P.X ⊗ S.X) Q.X T.X).hom ≫
        (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (α_ P.X S.X Q.X).inv) ≫
      (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_rhs 4 6 => rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X Q.X).inv ≫ (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X) ≫
      (α_ P.X (S.X ⊗ Q.X) T.X).hom ≫ (𝟙 P.X ⊗ (α_ S.X Q.X T.X).hom) ≫ (𝟙 P.X ⊗ (𝟙 S.X ⊗ Q.actRight) ≫ Q.actLeft) =
    (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (𝟙 P.X ⊗ Q.actLeft)
[PROOFSTEP]
slice_rhs 3 4 => rw [← id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ Q.actRight) ≫ (𝟙 P.X ⊗ Q.actLeft)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ S.X) Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X (Q.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X Q.X).hom ⊗ 𝟙 T.X) ≫
      (α_ P.X (S.X ⊗ Q.X) T.X).hom ≫ (𝟙 P.X ⊗ (α_ S.X Q.X T.X).hom) ≫ (𝟙 P.X ⊗ (𝟙 S.X ⊗ Q.actRight) ≫ Q.actLeft) =
    (α_ (P.X ⊗ S.X) Q.X T.X).hom ≫ (α_ P.X S.X (Q.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ (𝟙 S.X ⊗ Q.actRight) ≫ Q.actLeft)
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q =
    (α_ P.X Q.X T.X).hom ≫
      (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
erw [map_π_preserves_coequalizer_inv_colimMap (tensorRight _)]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ P.X Q.X T.X).hom ≫
      (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
simp only [Category.assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 (X P Q) ⊗ T.one) ≫ actRight P Q = (ρ_ (X P Q)).hom
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight (𝟙_ C)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (𝟙 (X P Q) ⊗ T.one) ≫ actRight P Q =
    (tensorRight (𝟙_ C)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (ρ_ (X P Q)).hom
[PROOFSTEP]
dsimp [X]
  -- porting note: had to replace `rw` by `erw`
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.one) ≫ actRight P Q =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 1 2 => erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.one)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.one)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.one)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((𝟙 (P.X ⊗ Q.X) ⊗ T.one) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X)) ≫
      actRight P Q =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 2 3 => rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.one
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.one
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.one
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 (P.X ⊗ Q.X) ⊗ T.one) ≫
      (α_ P.X Q.X T.X).hom ≫
        (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.one) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.one) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.one) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (((α_ P.X Q.X (𝟙_ C)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.one)) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_lhs 2 3 => rw [← id_tensor_comp, actRight_one]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.one) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, actRight_one]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.one) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, actRight_one]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.one) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, actRight_one]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (𝟙_ C)).hom ≫
      (𝟙 P.X ⊗ (ρ_ Q.X).hom) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
      (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
slice_rhs 1 2 => rw [rightUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (𝟙_ C)) ≫
    (ρ_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))).hom
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (𝟙_ C)).hom ≫
      (𝟙 P.X ⊗ (ρ_ Q.X).hom) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (ρ_ (P.X ⊗ Q.X)).hom ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 (X P Q) ⊗ T.mul) ≫ actRight P Q = (α_ (X P Q) T.X T.X).inv ≫ (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight (T.X ⊗ T.X)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (𝟙 (X P Q) ⊗ T.mul) ≫ actRight P Q =
    (tensorRight (T.X ⊗ T.X)).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ (X P Q) T.X T.X).inv ≫ (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
dsimp [X]
  -- porting note: had to replace some `rw` by `erw`
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.mul) ≫ actRight P Q =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv ≫
        (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
slice_lhs 1 2 => erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.mul)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.mul)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ T.mul)
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((𝟙 (P.X ⊗ Q.X) ⊗ T.mul) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X)) ≫
      actRight P Q =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv ≫
        (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
slice_lhs 2 3 => rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.mul
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.mul
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 (P.X ⊗ Q.X) ⊗ T.mul
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 (P.X ⊗ Q.X) ⊗ T.mul) ≫
      (α_ P.X Q.X T.X).hom ≫
        (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv ≫
        (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
slice_lhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.mul) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.mul) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 (P.X ⊗ Q.X) ⊗ T.mul) ≫ (α_ P.X Q.X T.X).hom
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (((α_ P.X Q.X (T.X ⊗ T.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.mul)) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv ≫
        (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
slice_lhs 2 3 => rw [← id_tensor_comp, right_assoc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.mul) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (T.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, right_assoc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.mul) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (T.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, right_assoc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ T.mul) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X (T.X ⊗ T.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, right_assoc, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (T.X ⊗ T.X)).hom ≫
      ((𝟙 P.X ⊗ (α_ Q.X T.X T.X).inv) ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv ≫
        (actRight P Q ⊗ 𝟙 T.X) ≫ actRight P Q
[PROOFSTEP]
slice_rhs 1 2 => erw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q ⊗ 𝟙 T.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q ⊗ 𝟙 T.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 (T.X ⊗ T.X)) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q ⊗ 𝟙 T.X
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
erw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (T.X ⊗ T.X)).hom ≫
      ((𝟙 P.X ⊗ (α_ Q.X T.X T.X).inv) ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (((α_ (P.X ⊗ Q.X) T.X T.X).inv ≫
          ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 T.X)) ≫
        (actRight P Q ⊗ 𝟙 T.X)) ≫
      actRight P Q
[PROOFSTEP]
slice_rhs 2 3 => rw [← comp_tensor_id, π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 T.X) ≫
    (actRight P Q ⊗ 𝟙 T.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 T.X) ≫
    (actRight P Q ⊗ 𝟙 T.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 T.X) ≫
    (actRight P Q ⊗ 𝟙 T.X)
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (T.X ⊗ T.X)).hom ≫
      ((𝟙 P.X ⊗ (α_ Q.X T.X T.X).inv) ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ (P.X ⊗ Q.X) T.X T.X).inv ≫
      (((α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X) ≫
          ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X) ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X)) ≫
        actRight P Q
[PROOFSTEP]
slice_rhs 4 5 => rw [π_tensor_id_actRight]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (T.X ⊗ T.X)).hom ≫
      ((𝟙 P.X ⊗ (α_ Q.X T.X T.X).inv) ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ (P.X ⊗ Q.X) T.X T.X).inv ≫
      ((α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X) ≫
        ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X) ≫
          (α_ P.X Q.X T.X).hom ≫
            (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (P.X ⊗ Q.X) T.X T.X).inv
case a.a
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X Q.X (T.X ⊗ T.X)).hom ≫
      ((𝟙 P.X ⊗ (α_ Q.X T.X T.X).inv) ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ (P.X ⊗ Q.X) T.X T.X).inv ≫
      ((α_ P.X Q.X T.X).hom ⊗ 𝟙 T.X) ≫
        (((α_ P.X (Q.X ⊗ T.X) T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 T.X)) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (actLeft P Q ⊗ 𝟙 T.X) ≫ actRight P Q = (α_ R.X (X P Q) T.X).hom ≫ (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _ ⋙ tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorLeft R.X ⋙ tensorRight T.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (actLeft P Q ⊗ 𝟙 T.X) ≫ actRight P Q =
    (tensorLeft R.X ⋙ tensorRight T.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X (X P Q) T.X).hom ≫ (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
dsimp [X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (actLeft P Q ⊗ 𝟙 T.X) ≫ actRight P Q =
    ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom ≫
        (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 1 2 => rw [← comp_tensor_id, id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (actLeft P Q ⊗ 𝟙 T.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
rw [← comp_tensor_id, id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (actLeft P Q ⊗ 𝟙 T.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
rw [← comp_tensor_id, id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (actLeft P Q ⊗ 𝟙 T.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actRight P Q
[PROOFSTEP]
rw [← comp_tensor_id, id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
        ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X)) ≫
      actRight P Q =
    ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom ≫
        (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 3 4 => rw [π_tensor_id_actRight]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X
[PROOFSTEP]
rw [π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫
        (α_ P.X Q.X T.X).hom ≫
          (𝟙 P.X ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom ≫
        (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 T.X) ≫ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 P.X ⊗ Q.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (((α_ (R.X ⊗ P.X) Q.X T.X).hom ≫ (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 T.X)) ≫ (𝟙 P.X ⊗ Q.actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom ≫
        (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_lhs 3 4 =>
  rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
    -- porting note: had to replace `rw` by `erw`
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (R.X ⊗ P.X) Q.X T.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
    -- porting note: had to replace `rw` by `erw`
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (R.X ⊗ P.X) Q.X T.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
    -- porting note: had to replace `rw` by `erw`
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 T.X) ≫ (𝟙 P.X ⊗ Q.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ (R.X ⊗ P.X) Q.X T.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
  -- porting note: had to replace `rw` by `erw`
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom ≫
        (𝟙 R.X ⊗ actRight P Q) ≫ actLeft P Q
[PROOFSTEP]
slice_rhs 1 2 => erw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 T.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ actRight P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (((α_ R.X (P.X ⊗ Q.X) T.X).hom ≫
          (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X)) ≫
        (𝟙 R.X ⊗ actRight P Q)) ≫
      actLeft P Q
[PROOFSTEP]
slice_rhs 2 3 => rw [← id_tensor_comp, π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫
    (𝟙 R.X ⊗ actRight P Q)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫
    (𝟙 R.X ⊗ actRight P Q)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ≫
    (𝟙 R.X ⊗ actRight P Q)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X (P.X ⊗ Q.X) T.X).hom ≫
      ((𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom) ≫
          (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight) ≫
            (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)))) ≫
        actLeft P Q
[PROOFSTEP]
slice_rhs 4 5 => rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫ actLeft P Q
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight
[PROOFSTEP]
rw [id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X (P.X ⊗ Q.X) T.X).hom ≫
      (𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom) ≫
        (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight) ≫
          (α_ R.X P.X Q.X).inv ≫
            (P.actLeft ⊗ 𝟙 Q.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ Q.actRight) ≫ (α_ R.X P.X Q.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft ⊗ 𝟙 Q.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X (P.X ⊗ Q.X) T.X).hom ≫
      (𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom) ≫
        (((α_ R.X P.X (Q.X ⊗ T.X)).inv ≫ ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actRight)) ≫ (P.actLeft ⊗ 𝟙 Q.X)) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
slice_rhs 4 5 => rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actRight) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X (Q.X ⊗ T.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actRight) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X (Q.X ⊗ T.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ Q.actRight) ≫ (P.actLeft ⊗ 𝟙 Q.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X (P.X ⊗ Q.X) T.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| 𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X (Q.X ⊗ T.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X Q.X).inv ⊗ 𝟙 T.X) ≫
      (α_ (R.X ⊗ P.X) Q.X T.X).hom ≫
        (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) =
    (α_ R.X (P.X ⊗ Q.X) T.X).hom ≫
      (𝟙 R.X ⊗ (α_ P.X Q.X T.X).hom) ≫
        (α_ R.X P.X (Q.X ⊗ T.X)).inv ≫
          (P.actLeft ⊗ Q.actRight) ≫ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X)
[PROOFSTEP]
rw [← tensor_comp, ← tensor_comp, Hom.right_act_hom, Category.id_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
    ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
[PROOFSTEP]
slice_lhs 2 3 => rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actLeft) ≫ (f.hom ⊗ g.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actLeft) ≫ (f.hom ⊗ g.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actLeft) ≫ (f.hom ⊗ g.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X Y.X N₁.X).hom ≫ (f.hom ⊗ (𝟙 Y.X ⊗ g.hom) ≫ N₂.actLeft) =
    ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
[PROOFSTEP]
slice_rhs 1 2 => rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actLeft
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actLeft
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actLeft
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X Y.X N₁.X).hom ≫ (f.hom ⊗ (𝟙 Y.X ⊗ g.hom) ≫ N₂.actLeft) =
    ((α_ M₁.X Y.X N₁.X).hom ≫ (f.hom ⊗ 𝟙 Y.X ⊗ g.hom)) ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
[PROOFSTEP]
slice_rhs 2 3 => rw [← tensor_comp, Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ 𝟙 Y.X ⊗ g.hom) ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ 𝟙 Y.X ⊗ g.hom) ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ 𝟙 Y.X ⊗ g.hom) ≫ (𝟙 M₂.X ⊗ N₂.actLeft)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X Y.X N₁.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (tensorBimod M₁ N₁).actLeft ≫
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (𝟙 X.X ⊗
        colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
      (tensorBimod M₂ N₂).actLeft
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (tensorLeft X.X).map (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (tensorBimod M₁ N₁).actLeft ≫
        colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (tensorLeft X.X).map (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (𝟙 X.X ⊗
          colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
        (tensorBimod M₂ N₂).actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      TensorBimod.actLeft M₁ N₁ ≫
        colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (𝟙 X.X ⊗
          colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
        TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
slice_lhs 1 2 => rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    TensorBimod.actLeft M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    TensorBimod.actLeft M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    TensorBimod.actLeft M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ ((α_ X.X M₁.X N₁.X).inv ≫
        (M₁.actLeft ⊗ 𝟙 N₁.X) ≫ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (𝟙 X.X ⊗
          colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
        TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
slice_lhs 3 4 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₁.actLeft ⊗ 𝟙 N₁.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₁.actLeft ⊗ 𝟙 N₁.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₁.actLeft ⊗ 𝟙 N₁.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ X.X M₁.X N₁.X).inv ≫
      (M₁.actLeft ⊗ 𝟙 N₁.X) ≫
        (f.hom ⊗ g.hom) ≫
          colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
            WalkingParallelPair.one =
    (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (𝟙 X.X ⊗
          colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
        TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
slice_lhs 2 3 => rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (M₁.actLeft ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (M₁.actLeft ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (M₁.actLeft ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Hom.left_act_hom, Category.id_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ X.X M₁.X N₁.X).inv ≫
      ((𝟙 X.X ⊗ f.hom) ≫ M₂.actLeft ⊗ g.hom) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (𝟙 X.X ⊗
          colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))) ≫
        TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
slice_rhs 1 2 => rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    (𝟙 X.X ⊗
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    (𝟙 X.X ⊗
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
    (𝟙 X.X ⊗
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ X.X M₁.X N₁.X).inv ≫
      ((𝟙 X.X ⊗ f.hom) ≫ M₂.actLeft ⊗ g.hom) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    ((𝟙 X.X ⊗ f.hom ⊗ g.hom) ≫
        (𝟙 X.X ⊗
          colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
            WalkingParallelPair.one)) ≫
      TensorBimod.actLeft M₂ N₂
[PROOFSTEP]
slice_rhs 2 3 => rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗
      colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one) ≫
    TensorBimod.actLeft M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 X.X ⊗ f.hom ⊗ g.hom
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗
      colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one) ≫
    TensorBimod.actLeft M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 X.X ⊗ f.hom ⊗ g.hom
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗
      colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one) ≫
    TensorBimod.actLeft M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 X.X ⊗ f.hom ⊗ g.hom
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ X.X M₁.X N₁.X).inv ≫
      ((𝟙 X.X ⊗ f.hom) ≫ M₂.actLeft ⊗ g.hom) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom ⊗ g.hom) ≫
      (α_ X.X M₂.X N₂.X).inv ≫
        (M₂.actLeft ⊗ 𝟙 N₂.X) ≫ coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
slice_rhs 1 2 => rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ f.hom ⊗ g.hom) ≫ (α_ X.X M₂.X N₂.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₂.actLeft ⊗ 𝟙 N₂.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ f.hom ⊗ g.hom) ≫ (α_ X.X M₂.X N₂.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₂.actLeft ⊗ 𝟙 N₂.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 X.X ⊗ f.hom ⊗ g.hom) ≫ (α_ X.X M₂.X N₂.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| M₂.actLeft ⊗ 𝟙 N₂.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ X.X M₁.X N₁.X).inv ≫
      ((𝟙 X.X ⊗ f.hom) ≫ M₂.actLeft ⊗ g.hom) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (((α_ X.X M₁.X N₁.X).inv ≫ ((𝟙 X.X ⊗ f.hom) ⊗ g.hom)) ≫ (M₂.actLeft ⊗ 𝟙 N₂.X)) ≫
      coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
slice_rhs 2 3 => rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((𝟙 X.X ⊗ f.hom) ⊗ g.hom) ≫ (M₂.actLeft ⊗ 𝟙 N₂.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((𝟙 X.X ⊗ f.hom) ⊗ g.hom) ≫ (M₂.actLeft ⊗ 𝟙 N₂.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((𝟙 X.X ⊗ f.hom) ⊗ g.hom) ≫ (M₂.actLeft ⊗ 𝟙 N₂.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ X.X M₁.X N₁.X).inv
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (tensorBimod M₁ N₁).actRight ≫
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
        𝟙 Z.X) ≫
      (tensorBimod M₂ N₂).actRight
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (tensorRight Z.X).map (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (tensorBimod M₁ N₁).actRight ≫
        colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (tensorRight Z.X).map (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      (colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
          𝟙 Z.X) ≫
        (tensorBimod M₂ N₂).actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
      TensorBimod.actRight M₁ N₁ ≫
        colimMap
          (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
            (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
            (f.hom ⊗ g.hom)
            (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
            (_ :
              ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
      (colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
          𝟙 Z.X) ≫
        TensorBimod.actRight M₂ N₂
[PROOFSTEP]
slice_lhs 1 2 => rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    TensorBimod.actRight M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    TensorBimod.actRight M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    TensorBimod.actRight M₁ N₁
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimMap
    (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
      ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
      (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
      (_ :
        ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
          ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ ((α_ M₁.X N₁.X Z.X).hom ≫
        (𝟙 M₁.X ⊗ N₁.actRight) ≫
          coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))) ≫
      colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) =
    (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
      (colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
          𝟙 Z.X) ≫
        TensorBimod.actRight M₂ N₂
[PROOFSTEP]
slice_lhs 3 4 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₁.X ⊗ N₁.actRight
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₁.X ⊗ N₁.actRight
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
    colimMap
      (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
        ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
        (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
        (_ :
          ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₁.X ⊗ N₁.actRight
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X N₁.X Z.X).hom ≫
      (𝟙 M₁.X ⊗ N₁.actRight) ≫
        (f.hom ⊗ g.hom) ≫
          colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
            WalkingParallelPair.one =
    (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
      (colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
          𝟙 Z.X) ≫
        TensorBimod.actRight M₂ N₂
[PROOFSTEP]
slice_lhs 2 3 => rw [← tensor_comp, Category.id_comp, Hom.right_act_hom]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actRight) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.id_comp, Hom.right_act_hom]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actRight) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.id_comp, Hom.right_act_hom]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (𝟙 M₁.X ⊗ N₁.actRight) ≫ (f.hom ⊗ g.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
    WalkingParallelPair.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.id_comp, Hom.right_act_hom]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X N₁.X Z.X).hom ≫
      (f.hom ⊗ (g.hom ⊗ 𝟙 Z.X) ≫ N₂.actRight) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
      (colimMap
            (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft))
              (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom)
              (f.hom ⊗ g.hom)
              (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
              (_ :
                ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
          𝟙 Z.X) ≫
        TensorBimod.actRight M₂ N₂
[PROOFSTEP]
slice_rhs 1 2 => rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    (colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
      𝟙 Z.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actRight M₂ N₂
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    (colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
      𝟙 Z.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actRight M₂ N₂
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ⊗ 𝟙 Z.X) ≫
    (colimMap
        (parallelPairHom (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) (M₂.actRight ⊗ 𝟙 N₂.X)
          ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) (f.hom ⊗ g.hom)
          (_ : (M₁.actRight ⊗ 𝟙 N₁.X) ≫ (f.hom ⊗ g.hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (M₂.actRight ⊗ 𝟙 N₂.X))
          (_ :
            ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫ (f.hom ⊗ g.hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ g.hom) ≫ (α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))) ⊗
      𝟙 Z.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| TensorBimod.actRight M₂ N₂
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X N₁.X Z.X).hom ≫
      (f.hom ⊗ (g.hom ⊗ 𝟙 Z.X) ≫ N₂.actRight) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (((f.hom ⊗ g.hom) ⊗ 𝟙 Z.X) ≫
        (colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
            WalkingParallelPair.one ⊗
          𝟙 Z.X)) ≫
      TensorBimod.actRight M₂ N₂
[PROOFSTEP]
slice_rhs 2 3 => rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 Z.X) ≫
    TensorBimod.actRight M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom) ⊗ 𝟙 Z.X
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 Z.X) ≫
    TensorBimod.actRight M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom) ⊗ 𝟙 Z.X
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 Z.X) ≫
    TensorBimod.actRight M₂ N₂
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom) ⊗ 𝟙 Z.X
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X N₁.X Z.X).hom ≫
      (f.hom ⊗ (g.hom ⊗ 𝟙 Z.X) ≫ N₂.actRight) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    ((f.hom ⊗ g.hom) ⊗ 𝟙 Z.X) ≫
      (α_ M₂.X N₂.X Z.X).hom ≫
        (𝟙 M₂.X ⊗ N₂.actRight) ≫ coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
slice_rhs 1 2 => rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ g.hom) ⊗ 𝟙 Z.X) ≫ (α_ M₂.X N₂.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ g.hom) ⊗ 𝟙 Z.X) ≫ (α_ M₂.X N₂.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| ((f.hom ⊗ g.hom) ⊗ 𝟙 Z.X) ≫ (α_ M₂.X N₂.X Z.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| 𝟙 M₂.X ⊗ N₂.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
⊢ (α_ M₁.X N₁.X Z.X).hom ≫
      (f.hom ⊗ (g.hom ⊗ 𝟙 Z.X) ≫ N₂.actRight) ≫
        colimit.ι (parallelPair (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft)))
          WalkingParallelPair.one =
    (((α_ M₁.X N₁.X Z.X).hom ≫ (f.hom ⊗ g.hom ⊗ 𝟙 Z.X)) ≫ (𝟙 M₂.X ⊗ N₂.actRight)) ≫
      coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
[PROOFSTEP]
slice_rhs 2 3 => rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom ⊗ 𝟙 Z.X) ≫ (𝟙 M₂.X ⊗ N₂.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom ⊗ 𝟙 Z.X) ≫ (𝟙 M₂.X ⊗ N₂.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (f.hom ⊗ g.hom ⊗ 𝟙 Z.X) ≫ (𝟙 M₂.X ⊗ N₂.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| coequalizer.π (M₂.actRight ⊗ 𝟙 N₂.X) ((α_ M₂.X Y.X N₂.X).hom ≫ (𝟙 M₂.X ⊗ N₂.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ : Bimod X Y
N₁ N₂ : Bimod Y Z
f : M₁ ⟶ M₂
g : N₁ ⟶ N₂
| (α_ M₁.X N₁.X Z.X).hom
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ tensorHom (𝟙 M) (𝟙 N) = 𝟙 (tensorBimod M N)
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ (tensorHom (𝟙 M) (𝟙 N)).hom = (𝟙 (tensorBimod M N)).hom
[PROOFSTEP]
apply Limits.coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (tensorHom (𝟙 M) (𝟙 N)).hom =
    coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (𝟙 (tensorBimod M N)).hom
[PROOFSTEP]
simp only [id_hom', MonoidalCategory.tensor_id, tensorHom_hom, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ 𝟙 (M.X ⊗ N.X) ≫
      colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ 𝟙 (tensorBimod M N).X
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ 𝟙 (M.X ⊗ N.X) ≫
      colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ 𝟙 (TensorBimod.X M N)
[PROOFSTEP]
dsimp only [TensorBimod.X]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N : Bimod Y Z
⊢ 𝟙 (M.X ⊗ N.X) ≫
      colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
      𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X Y.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
[PROOFSTEP]
simp only [Category.id_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ M₃ : Bimod X Y
N₁ N₂ N₃ : Bimod Y Z
f₁ : M₁ ⟶ M₂
f₂ : M₂ ⟶ M₃
g₁ : N₁ ⟶ N₂
g₂ : N₂ ⟶ N₃
⊢ tensorHom (f₁ ≫ f₂) (g₁ ≫ g₂) = tensorHom f₁ g₁ ≫ tensorHom f₂ g₂
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ M₃ : Bimod X Y
N₁ N₂ N₃ : Bimod Y Z
f₁ : M₁ ⟶ M₂
f₂ : M₂ ⟶ M₃
g₁ : N₁ ⟶ N₂
g₂ : N₂ ⟶ N₃
⊢ (tensorHom (f₁ ≫ f₂) (g₁ ≫ g₂)).hom = (tensorHom f₁ g₁ ≫ tensorHom f₂ g₂).hom
[PROOFSTEP]
apply Limits.coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M₁ M₂ M₃ : Bimod X Y
N₁ N₂ N₃ : Bimod Y Z
f₁ : M₁ ⟶ M₂
f₂ : M₂ ⟶ M₃
g₁ : N₁ ⟶ N₂
g₂ : N₂ ⟶ N₃
⊢ coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
      (tensorHom (f₁ ≫ f₂) (g₁ ≫ g₂)).hom =
    coequalizer.π (M₁.actRight ⊗ 𝟙 N₁.X) ((α_ M₁.X Y.X N₁.X).hom ≫ (𝟙 M₁.X ⊗ N₁.actLeft)) ≫
      (tensorHom f₁ g₁ ≫ tensorHom f₂ g₂).hom
[PROOFSTEP]
simp only [comp_hom', MonoidalCategory.tensor_comp, tensorHom_hom, ι_colimMap, parallelPairHom_app_one, Category.assoc,
  ι_colimMap_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
            ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
            ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (((α_ (P.X ⊗ S.X) Q.X L.X).hom ≫ (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 L.X)) ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_lhs 2 3 => rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      ((𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
    coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
        (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
    coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
        (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
    coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
        (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (((α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
            (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_lhs 3 4 => rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
        ((𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
            (𝟙 P.X ⊗
              (Q.actLeft ⊗ 𝟙 L.X) ≫ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_rhs 1 1 => rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
        ((𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
            (𝟙 P.X ⊗
              (Q.actLeft ⊗ 𝟙 L.X) ≫ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫ (α_ P.X Q.X L.X).hom) ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_rhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
        ((𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
            (𝟙 P.X ⊗
              (Q.actLeft ⊗ 𝟙 L.X) ≫ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫
      (((α_ P.X (S.X ⊗ Q.X) L.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_rhs 3 4 => rw [← id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (S.X ⊗ Q.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (S.X ⊗ Q.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (S.X ⊗ Q.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).hom ≫
      (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
        ((𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
            (𝟙 P.X ⊗
              (Q.actLeft ⊗ 𝟙 L.X) ≫ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (S.X ⊗ Q.X) L.X).hom ≫
        (𝟙 P.X ⊗
            (Q.actLeft ⊗ 𝟙 L.X) ≫ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L
[PROOFSTEP]
dsimp [homAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
      (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) ≫
      (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _ ⋙ tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight T.X ⋙ tensorRight L.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (tensorRight T.X ⋙ tensorRight L.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_lhs 1 2 => rw [← comp_tensor_id, TensorBimod.π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.π_tensor_id_actRight, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
          ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_lhs 3 5 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫
        (α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (((α_ P.X (Q.X ⊗ T.X) L.X).hom ≫ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_lhs 3 4 => rw [← id_tensor_comp, coequalizer.condition, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.condition, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.condition, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.condition, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (Q.X ⊗ T.X) L.X).hom ≫
        (((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π
                  (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                  ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_rhs 1 2 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (Q.X ⊗ T.X) L.X).hom ≫
        (((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((((α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X)) ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_rhs 2 3 => rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (Q.X ⊗ T.X) L.X).hom ≫
        (((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
      (((𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft) ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_rhs 3 5 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (Q.X ⊗ T.X) L.X).hom ≫
        (((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
      (𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft) ≫
        (α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_rhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X T.X).hom ⊗ 𝟙 L.X) ≫
      (α_ P.X (Q.X ⊗ T.X) L.X).hom ≫
        (((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
      (((α_ P.X Q.X (T.X ⊗ L.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorBimod (tensorBimod P Q) L).actLeft ≫ hom P Q L =
    (𝟙 R.X ⊗ hom P Q L) ≫ (tensorBimod P (tensorBimod Q L)).actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ TensorBimod.actLeft (tensorBimod P Q) L ≫ hom P Q L = (𝟙 R.X ⊗ hom P Q L) ≫ TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
dsimp [hom, homAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ TensorBimod.actLeft (tensorBimod P Q) L ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (𝟙 R.X ⊗
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)) ≫
      TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorLeft R.X).map
        (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      TensorBimod.actLeft (tensorBimod P Q) L ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (tensorLeft R.X).map
        (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [tensorLeft_map]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 R.X ⊗
        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      TensorBimod.actLeft (tensorBimod P Q) L ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (𝟙 R.X ⊗
        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 1 2 => rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    TensorBimod.actLeft (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    TensorBimod.actLeft (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    TensorBimod.actLeft (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.id_tensor_π_actLeft]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ R.X (tensorBimod P Q).X L.X).inv ≫
        ((tensorBimod P Q).actLeft ⊗ 𝟙 L.X) ≫
          coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (𝟙 R.X ⊗
        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (tensorBimod P Q).X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (tensorBimod P Q).actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (tensorBimod P Q).X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (tensorBimod P Q).actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (tensorBimod P Q).X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (tensorBimod P Q).actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (tensorBimod P Q).X L.X).inv ≫
      ((tensorBimod P Q).actLeft ⊗ 𝟙 L.X) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 R.X ⊗
        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 1 2 => rw [← id_tensor_comp, coequalizer.π_desc, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (tensorBimod P Q).X L.X).inv ≫
      ((tensorBimod P Q).actLeft ⊗ 𝟙 L.X) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((𝟙 R.X ⊗
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
        (𝟙 R.X ⊗
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
      TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _ ⋙ tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight L.X ⋙ tensorLeft R.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ R.X (tensorBimod P Q).X L.X).inv ≫
        ((tensorBimod P Q).actLeft ⊗ 𝟙 L.X) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (tensorRight L.X ⋙ tensorLeft R.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      (α_ R.X (TensorBimod.X P Q) L.X).inv ≫
        (TensorBimod.actLeft P Q ⊗ 𝟙 L.X) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X).inv ≫
        (TensorBimod.actLeft P Q ⊗ 𝟙 L.X) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P Q ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P Q ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (α_ R.X (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P Q ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((((α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
            ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 L.X)) ≫
          (TensorBimod.actLeft P Q ⊗ 𝟙 L.X)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 2 3 => rw [← comp_tensor_id, TensorBimod.id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actLeft P Q ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actLeft P Q ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ 𝟙 L.X) ≫
    (TensorBimod.actLeft P Q ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, TensorBimod.id_tensor_π_actLeft, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
            ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 4 6 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 3 4 => rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actLeft ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (((α_ (R.X ⊗ P.X) Q.X L.X).hom ≫ (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 L.X)) ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
            ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
              (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 4 5 => rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (R.X ⊗ P.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (R.X ⊗ P.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actLeft ⊗ 𝟙 Q.X ⊗ 𝟙 L.X) ≫
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X (P.X ⊗ Q.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (R.X ⊗ P.X) Q.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (R.X ⊗ P.X) Q.X L.X).hom ≫
          (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((𝟙 R.X ⊗
            (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
          (𝟙 R.X ⊗
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))) ≫
        TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 1 3 =>
  rw [← id_tensor_comp, ← id_tensor_comp, π_tensor_id_preserves_coequalizer_inv_desc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (𝟙 R.X ⊗
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      (𝟙 R.X ⊗
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, π_tensor_id_preserves_coequalizer_inv_desc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (𝟙 R.X ⊗
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      (𝟙 R.X ⊗
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, π_tensor_id_preserves_coequalizer_inv_desc, id_tensor_comp, id_tensor_comp]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (𝟙 R.X ⊗
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      (𝟙 R.X ⊗
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, π_tensor_id_preserves_coequalizer_inv_desc, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (R.X ⊗ P.X) Q.X L.X).hom ≫
          (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom) ≫
        (𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          (𝟙 R.X ⊗
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))) ≫
      TensorBimod.actLeft P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 3 4 => erw [TensorBimod.id_tensor_π_actLeft P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L))) ≫
    TensorBimod.actLeft P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
erw [TensorBimod.id_tensor_π_actLeft P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L))) ≫
    TensorBimod.actLeft P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
erw [TensorBimod.id_tensor_π_actLeft P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L))) ≫
    TensorBimod.actLeft P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
erw [TensorBimod.id_tensor_π_actLeft P (Q.tensorBimod L)]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (R.X ⊗ P.X) Q.X L.X).hom ≫
          (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom) ≫
      (𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        (α_ R.X P.X (tensorBimod Q L).X).inv ≫
          (P.actLeft ⊗ 𝟙 (tensorBimod Q L).X) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
slice_rhs 2 3 => erw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ R.X P.X (tensorBimod Q L).X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actLeft ⊗ 𝟙 (tensorBimod Q L).X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
[PROOFSTEP]
erw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ R.X P.X (tensorBimod Q L).X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actLeft ⊗ 𝟙 (tensorBimod Q L).X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
[PROOFSTEP]
erw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 R.X ⊗ 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ R.X P.X (tensorBimod Q L).X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actLeft ⊗ 𝟙 (tensorBimod Q L).X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
[PROOFSTEP]
erw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (R.X ⊗ P.X) Q.X L.X).hom ≫
          (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom) ≫
      (((α_ R.X P.X (Q.X ⊗ L.X)).inv ≫
            ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          (P.actLeft ⊗ 𝟙 (tensorBimod Q L).X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
slice_rhs 3 4 => erw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actLeft ⊗ 𝟙 (tensorBimod Q L).X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X (Q.X ⊗ L.X)).inv
[PROOFSTEP]
erw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actLeft ⊗ 𝟙 (tensorBimod Q L).X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X (Q.X ⊗ L.X)).inv
[PROOFSTEP]
erw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 R.X ⊗ 𝟙 P.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actLeft ⊗ 𝟙 (tensorBimod Q L).X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ R.X P.X (Q.X ⊗ L.X)).inv
[PROOFSTEP]
erw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ R.X (P.X ⊗ Q.X) L.X).inv ≫
      ((α_ R.X P.X Q.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (R.X ⊗ P.X) Q.X L.X).hom ≫
          (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 R.X ⊗ (α_ P.X Q.X L.X).hom) ≫
      (α_ R.X P.X (Q.X ⊗ L.X)).inv ≫
        (P.actLeft ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorBimod (tensorBimod P Q) L).actRight ≫ hom P Q L =
    (hom P Q L ⊗ 𝟙 U.X) ≫ (tensorBimod P (tensorBimod Q L)).actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ TensorBimod.actRight (tensorBimod P Q) L ≫ hom P Q L = (hom P Q L ⊗ 𝟙 U.X) ≫ TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
dsimp [hom, homAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ TensorBimod.actRight (tensorBimod P Q) L ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
        𝟙 U.X) ≫
      TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight U.X).map
        (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      TensorBimod.actRight (tensorBimod P Q) L ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (tensorRight U.X).map
        (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      (coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
          𝟙 U.X) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [tensorRight_map]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
        𝟙 U.X) ≫
      TensorBimod.actRight (tensorBimod P Q) L ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
          𝟙 U.X) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 1 2 => rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight (tensorBimod P Q) L
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [TensorBimod.π_tensor_id_actRight]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ (tensorBimod P Q).X L.X U.X).hom ≫
        (𝟙 (tensorBimod P Q).X ⊗ L.actRight) ≫
          coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
          𝟙 U.X) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (tensorBimod P Q).X L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (tensorBimod P Q).X ⊗ L.actRight
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (tensorBimod P Q).X L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (tensorBimod P Q).X ⊗ L.actRight
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (tensorBimod P Q).X L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (tensorBimod P Q).X ⊗ L.actRight
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (tensorBimod P Q).X L.X U.X).hom ≫
      (𝟙 (tensorBimod P Q).X ⊗ L.actRight) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
            ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                  ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
              coequalizer.desc
                ((α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
                (_ :
                  (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                    (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                      (α_ P.X Q.X L.X).hom ≫
                        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                          coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
            (_ :
              ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
          𝟙 U.X) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 1 2 => rw [← comp_tensor_id, coequalizer.π_desc, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    (coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
      𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    (coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
      𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ⊗
      𝟙 U.X) ≫
    (coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ⊗
      𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (tensorBimod P Q).X L.X U.X).hom ≫
      (𝟙 (tensorBimod P Q).X ⊗ L.actRight) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
          𝟙 U.X) ≫
        (coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
          𝟙 U.X)) ≫
      TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _ ⋙ tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight L.X ⋙ tensorRight U.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (α_ (tensorBimod P Q).X L.X U.X).hom ≫
        (𝟙 (tensorBimod P Q).X ⊗ L.actRight) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (tensorRight L.X ⋙ tensorRight U.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (α_ (TensorBimod.X P Q) L.X U.X).hom ≫
        (𝟙 (TensorBimod.X P Q) ⊗ L.actRight) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X U.X).hom ≫
        (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) L.X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((((α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X ⊗ 𝟙 U.X)) ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight)) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 2 3 => rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X ⊗ 𝟙 U.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X ⊗ 𝟙 U.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X ⊗ 𝟙 U.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actRight)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
    (_ :
      (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
        (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
          (α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((𝟙 (P.X ⊗ Q.X) ⊗ L.actRight) ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
          (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 3 5 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actRight
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actRight
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (P.X ⊗ Q.X) ⊗ L.actRight
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (𝟙 (P.X ⊗ Q.X) ⊗ L.actRight) ≫
        (α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actRight) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actRight) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ Q.X) ⊗ L.actRight) ≫ (α_ P.X Q.X L.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
      (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) L.X U.X).hom
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
      (((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
            𝟙 U.X) ≫
          (coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π
                    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                    ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                      (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
            𝟙 U.X)) ≫
        TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 1 3 =>
  rw [← comp_tensor_id, ← comp_tensor_id, π_tensor_id_preserves_coequalizer_inv_desc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
        𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, π_tensor_id_preserves_coequalizer_inv_desc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
        𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, π_tensor_id_preserves_coequalizer_inv_desc, comp_tensor_id, comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ⊗ 𝟙 U.X) ≫
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ⊗
        𝟙 U.X) ≫
      (coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π
                (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
                ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                  (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) ⊗
        𝟙 U.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, π_tensor_id_preserves_coequalizer_inv_desc, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (((α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X) ≫
        ((𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X) ≫
          (coequalizer.π
              (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
              ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
                (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ⊗
            𝟙 U.X)) ≫
      TensorBimod.actRight P (tensorBimod Q L)
[PROOFSTEP]
slice_rhs 3 4 => erw [TensorBimod.π_tensor_id_actRight P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X
[PROOFSTEP]
erw [TensorBimod.π_tensor_id_actRight P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X
[PROOFSTEP]
erw [TensorBimod.π_tensor_id_actRight P (Q.tensorBimod L)]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ⊗
      𝟙 U.X) ≫
    TensorBimod.actRight P (tensorBimod Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X
[PROOFSTEP]
erw [TensorBimod.π_tensor_id_actRight P (Q.tensorBimod L)]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X) ≫
      ((𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X) ≫
        (α_ P.X (tensorBimod Q L).X U.X).hom ≫
          (𝟙 P.X ⊗ (tensorBimod Q L).actRight) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
slice_rhs 2 3 => erw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X) ≫
    (α_ P.X (tensorBimod Q L).X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (tensorBimod Q L).actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X) ≫
    (α_ P.X (tensorBimod Q L).X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (tensorBimod Q L).actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ⊗ 𝟙 U.X) ≫
    (α_ P.X (tensorBimod Q L).X U.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (tensorBimod Q L).actRight
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
[PROOFSTEP]
erw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X) ≫
      (((α_ P.X (Q.X ⊗ L.X) U.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ⊗ 𝟙 U.X)) ≫
          (𝟙 P.X ⊗ (tensorBimod Q L).actRight)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X) ≫
      (((α_ P.X (Q.X ⊗ L.X) U.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ⊗ 𝟙 U.X)) ≫
          (𝟙 P.X ⊗ TensorBimod.actRight Q L)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
          ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
slice_rhs 3 4 => rw [← id_tensor_comp, TensorBimod.π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ⊗ 𝟙 U.X) ≫
    (𝟙 P.X ⊗ TensorBimod.actRight Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ L.X) U.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ⊗ 𝟙 U.X) ≫
    (𝟙 P.X ⊗ TensorBimod.actRight Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ L.X) U.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ⊗ 𝟙 U.X) ≫
    (𝟙 P.X ⊗ TensorBimod.actRight Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ L.X) U.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.π_tensor_id_actRight, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ Q.X) L.X U.X).hom ≫
      (((α_ P.X Q.X (L.X ⊗ U.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
          ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
            (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    ((α_ P.X Q.X L.X).hom ⊗ 𝟙 U.X) ≫
      (α_ P.X (Q.X ⊗ L.X) U.X).hom ≫
        ((𝟙 P.X ⊗ (α_ Q.X L.X U.X).hom) ≫
            (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actRight) ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
            ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
    (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft))
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_lhs 1 2 => rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actRight ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (((α_ P.X (Q.X ⊗ T.X) L.X).inv ≫ ((𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X)) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ _ _ _) (𝟙 P.X ⊗ Q.actRight), comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (((α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
          ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫ ((α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X)) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_lhs 3 4 => rw [← comp_tensor_id, Category.assoc, ← TensorBimod.π_tensor_id_actRight, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [← comp_tensor_id, Category.assoc, ← TensorBimod.π_tensor_id_actRight, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [← comp_tensor_id, Category.assoc, ← TensorBimod.π_tensor_id_actRight, comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((α_ P.X Q.X T.X).hom ≫ (𝟙 P.X ⊗ Q.actRight) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [← comp_tensor_id, Category.assoc, ← TensorBimod.π_tensor_id_actRight, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
            (TensorBimod.actRight P Q ⊗ 𝟙 L.X)) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_lhs 4 5 => rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
    coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
        (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
    coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
        (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (TensorBimod.actRight P Q ⊗ 𝟙 L.X) ≫
    coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
        (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_lhs 3 4 => rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X) ⊗ 𝟙 L.X) ≫
    (α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (((α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X)) ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_lhs 4 5 => rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 T.X ⊗ 𝟙 L.X) ≫
    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X (Q.X ⊗ T.X) L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ Q.X) T.X L.X).hom
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ L.actLeft) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_rhs 1 2 => rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ L.actLeft) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    ((((𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫ (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft)) ≫ (α_ P.X Q.X L.X).inv) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_rhs 2 3 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 Q.X ⊗ L.actLeft) ≫ (α_ P.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ L.actLeft) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫
      (((α_ P.X Q.X (T.X ⊗ L.X)).inv ≫ ((𝟙 P.X ⊗ 𝟙 Q.X) ⊗ L.actLeft)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ 𝟙 Q.X) ⊗ L.actLeft) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X (T.X ⊗ L.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ 𝟙 Q.X) ⊗ L.actLeft) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X (T.X ⊗ L.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((𝟙 P.X ⊗ 𝟙 Q.X) ⊗ L.actLeft) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X (T.X ⊗ L.X)).inv
[PROOFSTEP]
rw [MonoidalCategory.tensor_id, id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X (Q.X ⊗ T.X) L.X).inv ≫
      ((α_ P.X Q.X T.X).inv ⊗ 𝟙 L.X) ≫
        (α_ (P.X ⊗ Q.X) T.X L.X).hom ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ L.actLeft) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 P.X ⊗ (α_ Q.X T.X L.X).hom) ≫
      (α_ P.X Q.X (T.X ⊗ L.X)).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ L.actLeft) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L
[PROOFSTEP]
dsimp [invAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (P.actRight ⊗ 𝟙 (TensorBimod.X Q L)) ≫
      (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) =
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
      (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorLeft (P.X ⊗ S.X)).map (coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      (P.actRight ⊗ 𝟙 (TensorBimod.X Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) =
    (tensorLeft (P.X ⊗ S.X)).map (coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
dsimp [TensorBimod.X]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) =
    (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_lhs 1 2 => rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (((P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)) ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) =
    (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_lhs 2 4 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)) ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_lhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (P.actRight ⊗ 𝟙 (Q.X ⊗ L.X)) ≫ (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (((α_ (P.X ⊗ S.X) Q.X L.X).inv ≫ ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X)) ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_lhs 2 3 => rw [← comp_tensor_id, coequalizer.condition, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.condition, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.condition, comp_tensor_id, comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| ((P.actRight ⊗ 𝟙 Q.X) ⊗ 𝟙 L.X) ≫
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ (P.X ⊗ S.X) Q.X L.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.condition, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).inv ≫
      ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                    (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_rhs 1 2 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 (P.X ⊗ S.X) ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ TensorBimod.actLeft Q L
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).inv ≫
      ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    ((((α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
            (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv) ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_rhs 2 3 => rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (𝟙 P.X ⊗ TensorBimod.actLeft Q L)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
    (_ :
      (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
        (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
[PROOFSTEP]
rw [← id_tensor_comp, TensorBimod.id_tensor_π_actLeft, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).inv ≫
      ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
      (((𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
            (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))) ≫
          (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                  (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_rhs 4 6 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).inv ≫
      ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
      (𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
        (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫
          (α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
                  (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ Q.actLeft ⊗ 𝟙 L.X) ≫ (α_ P.X Q.X L.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
      (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X S.X (Q.X ⊗ L.X)).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ (P.X ⊗ S.X) Q.X L.X).inv ≫
      ((((α_ P.X S.X Q.X).hom ⊗ 𝟙 L.X) ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
        coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
          ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
            (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (α_ P.X S.X (Q.X ⊗ L.X)).hom ≫
      (𝟙 P.X ⊗ (α_ S.X Q.X L.X).inv) ≫
        (((α_ P.X (S.X ⊗ Q.X) L.X).inv ≫ ((𝟙 P.X ⊗ Q.actLeft) ⊗ 𝟙 L.X)) ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
              (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ hom P Q L ≫ inv P Q L = 𝟙 (tensorBimod (tensorBimod P Q) L).X
[PROOFSTEP]
dsimp [hom, homAux, inv, invAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
        (_ :
          (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
      coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
                ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
              (_ :
                (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                  (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
          (_ :
            (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
      𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
slice_lhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
        (_ :
          (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
      𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorRight L.X).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
                ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
              (_ :
                (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                  (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
          (_ :
            (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    (tensorRight L.X).map (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
rw [tensorRight_map]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
                ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
              (_ :
                (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                  (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
          (_ :
            (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
slice_lhs 1 3 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
    (_ :
      (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
            ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
        (_ :
          (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
      ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X Q.X L.X).hom ≫
      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
        (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
slice_lhs 2 4 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X Q.X L.X).hom ≫
      (α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
slice_lhs 1 3 => rw [Iso.hom_inv_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ≫
    (α_ P.X Q.X L.X).inv ≫ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ≫
    (α_ P.X Q.X L.X).inv ≫ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).hom ≫
    (α_ P.X Q.X L.X).inv ≫ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙 (TensorBimod.X (tensorBimod P Q) L)
[PROOFSTEP]
dsimp only [TensorBimod.X]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
        ((α_ (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) T.X L.X).hom ≫
          (𝟙 (coequalizer (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))) ⊗ L.actLeft)) =
    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
        𝟙
          (coequalizer ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
[PROOFSTEP]
slice_rhs 2 3 => rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    𝟙
      (coequalizer ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    𝟙
      (coequalizer ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫
    𝟙
      (coequalizer ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ inv P Q L ≫ hom P Q L = 𝟙 (tensorBimod P (tensorBimod Q L)).X
[PROOFSTEP]
dsimp [hom, homAux, inv, invAux]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ coequalizer.desc
        ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
        (_ :
          (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
      coequalizer.desc
          ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
                ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                    ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
              (_ :
                (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                  (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                    (α_ P.X Q.X L.X).inv ≫
                      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                        coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
          (_ :
            (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
              ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
      𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
slice_lhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
            ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft))))
      (_ :
        (P.actRight ⊗ 𝟙 (tensorBimod Q L).X) ≫ invAux P Q L =
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫ invAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).inv ≫
            (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
              coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
          (_ :
            (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
              (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                (α_ P.X Q.X L.X).inv ≫
                  (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                    coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                      ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
      𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (tensorLeft P.X).map (coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (tensorLeft P.X).map (coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
rw [tensorLeft_map]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X)
              ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).inv ≫
              (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
                  ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
            (_ :
              (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
                (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
                  (α_ P.X Q.X L.X).inv ≫
                    (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                      coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))) ≫
        coequalizer.desc
          ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
                ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
            coequalizer.desc
              ((α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
              (_ :
                (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                  (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                    (α_ P.X Q.X L.X).hom ≫
                      (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                        coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
          (_ :
            ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
              ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
slice_lhs 1 3 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft P.X) (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).inv ≫
          (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
            coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
              ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)))
        (_ :
          (tensorLeft P.X).map (Q.actRight ⊗ 𝟙 L.X) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) =
            (tensorLeft P.X).map ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)) ≫
              (α_ P.X Q.X L.X).inv ≫
                (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
                  coequalizer.π ((tensorBimod P Q).actRight ⊗ 𝟙 L.X)
                    ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.desc
    ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
          ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
    (_ :
      ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
        ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ ((α_ P.X Q.X L.X).inv ≫
        (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
          coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
            ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft))) ≫
      coequalizer.desc
        ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
        (_ :
          ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
            ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (TensorBimod.actRight P Q ⊗ 𝟙 L.X)
      ((α_ (TensorBimod.X P Q) T.X L.X).hom ≫ (𝟙 (TensorBimod.X P Q) ⊗ L.actLeft)) ≫
    coequalizer.desc
      ((PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
            ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
        coequalizer.desc
          ((α_ P.X Q.X L.X).hom ≫
            (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
              coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
          (_ :
            (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
              (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                (α_ P.X Q.X L.X).hom ≫
                  (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                    coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))))
      (_ :
        ((tensorBimod P Q).actRight ⊗ 𝟙 L.X) ≫ homAux P Q L =
          ((α_ (tensorBimod P Q).X T.X L.X).hom ≫ (𝟙 (tensorBimod P Q).X ⊗ L.actLeft)) ≫ homAux P Q L)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X Q.X L.X).inv ≫
      (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
        (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X)
              ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
          coequalizer.desc
            ((α_ P.X Q.X L.X).hom ≫
              (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
                  ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
            (_ :
              (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
                (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
                  (α_ P.X Q.X L.X).hom ≫
                    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft))) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
slice_lhs 2 4 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (coequalizer.π (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ⊗ 𝟙 L.X) ≫
    (PreservesCoequalizer.iso (tensorRight L.X) (P.actRight ⊗ 𝟙 Q.X) ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft))).inv ≫
      coequalizer.desc
        ((α_ P.X Q.X L.X).hom ≫
          (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
              ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)))
        (_ :
          (tensorRight L.X).map (P.actRight ⊗ 𝟙 Q.X) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) =
            (tensorRight L.X).map ((α_ P.X S.X Q.X).hom ≫ (𝟙 P.X ⊗ Q.actLeft)) ≫
              (α_ P.X Q.X L.X).hom ≫
                (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
                  coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
                    ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (α_ P.X Q.X L.X).inv ≫
      (α_ P.X Q.X L.X).hom ≫
        (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
            ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
slice_lhs 1 3 => rw [Iso.inv_hom_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv ≫
    (α_ P.X Q.X L.X).hom ≫ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv ≫
    (α_ P.X Q.X L.X).hom ≫ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| (α_ P.X Q.X L.X).inv ≫
    (α_ P.X Q.X L.X).hom ≫ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
    ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (TensorBimod.X Q L))
        ((α_ P.X S.X (TensorBimod.X Q L)).hom ≫ (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙 (TensorBimod.X P (tensorBimod Q L))
[PROOFSTEP]
dsimp only [TensorBimod.X]
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
⊢ (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))))
        ((α_ P.X S.X (coequalizer (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft)))).hom ≫
          (𝟙 P.X ⊗ TensorBimod.actLeft Q L)) =
    (𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
          ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
        𝟙
          (coequalizer (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
            ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
[PROOFSTEP]
slice_rhs 2 3 => rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    𝟙
      (coequalizer (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    𝟙
      (coequalizer (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| coequalizer.π (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
      ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)) ≫
    𝟙
      (coequalizer (P.actRight ⊗ 𝟙 (tensorBimod Q L).X)
        ((α_ P.X S.X (tensorBimod Q L).X).hom ≫ (𝟙 P.X ⊗ (tensorBimod Q L).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
R S T U : Mon_ C
P : Bimod R S
Q : Bimod S T
L : Bimod T U
| 𝟙 P.X ⊗ coequalizer.π (Q.actRight ⊗ 𝟙 L.X) ((α_ Q.X T.X L.X).hom ≫ (𝟙 Q.X ⊗ L.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
    ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (R.mul ⊗ 𝟙 P.X) ≫ P.actLeft = ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫ P.actLeft
[PROOFSTEP]
rw [Category.assoc, left_assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ hom P ≫ inv P = 𝟙 (TensorBimod.X (regular R) P)
[PROOFSTEP]
dsimp only [hom, inv, TensorBimod.X]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ≫
      (λ_ P.X).inv ≫
        (R.one ⊗ 𝟙 P.X) ≫
          coequalizer.π ((regular R).actRight ⊗ 𝟙 P.X)
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) =
    𝟙 (coequalizer ((regular R).actRight ⊗ 𝟙 P.X) ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)))
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.π ((regular R).actRight ⊗ 𝟙 P.X) ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫
      coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ≫
        (λ_ P.X).inv ≫
          (R.one ⊗ 𝟙 P.X) ≫
            coequalizer.π ((regular R).actRight ⊗ 𝟙 P.X)
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) =
    coequalizer.π ((regular R).actRight ⊗ 𝟙 P.X) ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer ((regular R).actRight ⊗ 𝟙 P.X) ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)))
[PROOFSTEP]
dsimp
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ≫
        (λ_ P.X).inv ≫ (R.one ⊗ 𝟙 P.X) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((P.actLeft ≫ (λ_ P.X).inv) ≫ (R.one ⊗ 𝟙 P.X)) ≫
      coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 1 2 => rw [leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actLeft ≫ (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actLeft ≫ (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actLeft ≫ (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (((λ_ (R.X ⊗ P.X)).inv ≫ (𝟙 tensorUnit' ⊗ P.actLeft)) ≫ (R.one ⊗ 𝟙 P.X)) ≫
      coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 2 3 => rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 tensorUnit' ⊗ P.actLeft) ≫ (R.one ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 tensorUnit' ⊗ P.actLeft) ≫ (R.one ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 tensorUnit' ⊗ P.actLeft) ≫ (R.one ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      ((R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
        coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 3 3 => rw [← Iso.inv_hom_id_assoc (α_ R.X R.X P.X) (𝟙 R.X ⊗ P.actLeft)]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 R.X ⊗ P.actLeft
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ R.X R.X P.X) (𝟙 R.X ⊗ P.actLeft)]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 R.X ⊗ P.actLeft
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ R.X R.X P.X) (𝟙 R.X ⊗ P.actLeft)]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 R.X ⊗ P.actLeft
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ R.X R.X P.X) (𝟙 R.X ⊗ P.actLeft)]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      (R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫
        ((α_ R.X R.X P.X).inv ≫ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
          coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 4 6 => rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).hom ≫
    (𝟙 R.X ⊗ P.actLeft) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).hom ≫
    (𝟙 R.X ⊗ P.actLeft) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).hom ≫
    (𝟙 R.X ⊗ P.actLeft) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 (R.X ⊗ P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      (R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫
        (α_ R.X R.X P.X).inv ≫
          (R.mul ⊗ 𝟙 P.X) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫ (α_ R.X R.X P.X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.mul ⊗ 𝟙 P.X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫ (α_ R.X R.X P.X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.mul ⊗ 𝟙 P.X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (R.one ⊗ 𝟙 (R.X ⊗ P.X)) ≫ (α_ R.X R.X P.X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.mul ⊗ 𝟙 P.X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      (((α_ tensorUnit' R.X P.X).inv ≫ ((R.one ⊗ 𝟙 R.X) ⊗ 𝟙 P.X)) ≫ (R.mul ⊗ 𝟙 P.X)) ≫
        coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_lhs 3 4 => rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| ((R.one ⊗ 𝟙 R.X) ⊗ 𝟙 P.X) ≫ (R.mul ⊗ 𝟙 P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ tensorUnit' R.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| ((R.one ⊗ 𝟙 R.X) ⊗ 𝟙 P.X) ≫ (R.mul ⊗ 𝟙 P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ tensorUnit' R.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| ((R.one ⊗ 𝟙 R.X) ⊗ 𝟙 P.X) ≫ (R.mul ⊗ 𝟙 P.X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ (R.X ⊗ P.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ tensorUnit' R.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      (α_ tensorUnit' R.X P.X).inv ≫
        ((λ_ R.X).hom ⊗ 𝟙 P.X) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
      𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
slice_rhs 1 2 => rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    𝟙 (coequalizer (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ (R.X ⊗ P.X)).inv ≫
      (α_ tensorUnit' R.X P.X).inv ≫
        ((λ_ R.X).hom ⊗ 𝟙 P.X) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) =
    coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ inv P ≫ hom P = 𝟙 P.X
[PROOFSTEP]
dsimp [hom, inv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((λ_ P.X).inv ≫ (R.one ⊗ 𝟙 P.X) ≫ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    𝟙 P.X
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ≫
    coequalizer.desc P.actLeft
      (_ :
        ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
          ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (λ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| R.one ⊗ 𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (λ_ P.X).inv ≫ (R.one ⊗ 𝟙 P.X) ≫ P.actLeft = 𝟙 P.X
[PROOFSTEP]
rw [one_actLeft, Iso.inv_hom_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorBimod (regular R) P).actLeft ≫ hom P = (𝟙 R.X ⊗ hom P) ≫ P.actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ TensorBimod.actLeft (regular R) P ≫ hom P = (𝟙 R.X ⊗ hom P) ≫ P.actLeft
[PROOFSTEP]
dsimp [hom, TensorBimod.actLeft, regular]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
        colimMap
          (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) (R.mul ⊗ 𝟙 P.X)
            ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
              (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (𝟙 R.X ⊗
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)) ≫
      P.actLeft
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorLeft R.X).map
        (coequalizer.π ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X)
          ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
          colimMap
            (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
                (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
              ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
              (_ :
                (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                  ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                      (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                        ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
              (_ :
                (tensorLeft R.X).map
                      ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                  ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                      (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                        ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (tensorLeft R.X).map
        (coequalizer.π ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X)
          ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)) ≫
        P.actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
          colimMap
            (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
                (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
              ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
              (_ :
                (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                  ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                      (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                        ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
              (_ :
                (tensorLeft R.X).map
                      ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                  ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                      (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                        ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)) ≫
        P.actLeft
[PROOFSTEP]
slice_lhs 1 4 => rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) (R.mul ⊗ 𝟙 P.X)
            ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
              (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) (R.mul ⊗ 𝟙 P.X)
            ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
              (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ R.mul ⊗ 𝟙 P.X) (𝟙 R.X ⊗ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) (R.mul ⊗ 𝟙 P.X)
            ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((𝟙 R.X ⊗ (α_ R.X R.X P.X).hom) ≫
              (α_ R.X R.X (R.X ⊗ P.X)).inv ≫ (R.mul ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorLeft R.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ R.X (mk R.X R.mul R.mul).X P.X).inv ≫ ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 P.X) =
                ((𝟙 R.X ⊗ (α_ (mk R.X R.mul R.mul).X R.X P.X).hom) ≫
                    (α_ R.X (mk R.X R.mul R.mul).X (R.X ⊗ P.X)).inv ≫
                      ((mk R.X R.mul R.mul).actLeft ⊗ 𝟙 R.X ⊗ 𝟙 P.X) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X R.X P.X).inv ≫ (R.mul ⊗ 𝟙 P.X)) ≫ P.actLeft =
    (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)) ≫
        P.actLeft
[PROOFSTEP]
slice_lhs 2 3 => rw [left_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (R.mul ⊗ 𝟙 P.X) ≫ P.actLeft
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [left_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (R.mul ⊗ 𝟙 P.X) ≫ P.actLeft
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [left_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (R.mul ⊗ 𝟙 P.X) ≫ P.actLeft
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X R.X P.X).inv
[PROOFSTEP]
rw [left_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ R.X R.X P.X).inv ≫ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ≫ P.actLeft =
    (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)) ≫
        P.actLeft
[PROOFSTEP]
slice_rhs 1 2 => rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ R.X R.X P.X).inv ≫ (α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ≫ P.actLeft = (𝟙 R.X ⊗ P.actLeft) ≫ P.actLeft
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorBimod (regular R) P).actRight ≫ hom P = (hom P ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ TensorBimod.actRight (regular R) P ≫ hom P = (hom P ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
dsimp [hom, TensorBimod.actRight, regular]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
        colimMap
          (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
            (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
              (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
            (_ :
              (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorRight S.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
      coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
        𝟙 S.X) ≫
      P.actRight
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight S.X).map
        (coequalizer.π ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X)
          ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
          colimMap
            (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
              (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
                (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
              ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
              (_ :
                (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                    (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                  ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                      (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                        (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
              (_ :
                (tensorRight S.X).map
                      ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                    (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                  ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                      (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                        (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (tensorRight S.X).map
        (coequalizer.π ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X)
          ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
      (coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
      ((PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
          colimMap
            (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
              (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
              ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
                (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
              ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
              (_ :
                (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                    (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                  ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                      (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                        (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
              (_ :
                (tensorRight S.X).map
                      ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                    (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                  ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                      (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                        (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                    (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) =
    (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
      (coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
slice_lhs 1 4 => rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
            (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
              (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
            (_ :
              (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorRight S.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
            (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
              (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
            (_ :
              (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorRight S.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))).inv ≫
      colimMap
          (parallelPairHom ((R.mul ⊗ 𝟙 P.X) ⊗ 𝟙 S.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft) ⊗ 𝟙 S.X)
            (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft))
            ((α_ (R.X ⊗ R.X) P.X S.X).hom ≫
              (α_ R.X R.X (P.X ⊗ S.X)).hom ≫ (𝟙 R.X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ R.X R.X P.X).inv)
            ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight))
            (_ :
              (tensorRight S.X).map ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  ((mk R.X R.mul R.mul).actRight ⊗ 𝟙 P.X))
            (_ :
              (tensorRight S.X).map ((α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft)) ≫
                  (α_ (mk R.X R.mul R.mul).X P.X S.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actRight) =
                ((α_ ((mk R.X R.mul R.mul).X ⊗ R.X) P.X S.X).hom ≫
                    (α_ (mk R.X R.mul R.mul).X R.X (P.X ⊗ S.X)).hom ≫
                      (𝟙 (mk R.X R.mul R.mul).X ⊗ 𝟙 R.X ⊗ P.actRight) ≫ (α_ (mk R.X R.mul R.mul).X R.X P.X).inv) ≫
                  (α_ (mk R.X R.mul R.mul).X R.X P.X).hom ≫ (𝟙 (mk R.X R.mul R.mul).X ⊗ P.actLeft))) ≫
        coequalizer.desc P.actLeft
          (_ :
            ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
              ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight)) ≫ P.actLeft =
    (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
      (coequalizer.desc P.actLeft
            (_ :
              ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
                ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
slice_rhs 1 2 => rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (R.mul ⊗ 𝟙 P.X) ((α_ R.X R.X P.X).hom ≫ (𝟙 R.X ⊗ P.actLeft)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actLeft
        (_ :
          ((regular R).actRight ⊗ 𝟙 P.X) ≫ P.actLeft =
            ((α_ (regular R).X R.X P.X).hom ≫ (𝟙 (regular R).X ⊗ P.actLeft)) ≫ P.actLeft) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight)) ≫ P.actLeft = (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
slice_rhs 1 2 => rw [middle_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight)) ≫ P.actLeft = (α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight) ≫ P.actLeft
[PROOFSTEP]
simp only [Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
    ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (P.actRight ⊗ 𝟙 S.X) ≫ P.actRight = ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫ P.actRight
[PROOFSTEP]
rw [Category.assoc, right_assoc, Iso.hom_inv_id_assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ hom P ≫ inv P = 𝟙 (TensorBimod.X P (regular S))
[PROOFSTEP]
dsimp only [hom, inv, TensorBimod.X]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ≫
      (ρ_ P.X).inv ≫
        (𝟙 P.X ⊗ S.one) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 (regular S).X)
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) =
    𝟙 (coequalizer (P.actRight ⊗ 𝟙 (regular S).X) ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)))
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.π (P.actRight ⊗ 𝟙 (regular S).X) ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫
      coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ≫
        (ρ_ P.X).inv ≫
          (𝟙 P.X ⊗ S.one) ≫
            coequalizer.π (P.actRight ⊗ 𝟙 (regular S).X)
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) =
    coequalizer.π (P.actRight ⊗ 𝟙 (regular S).X) ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 (regular S).X) ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)))
[PROOFSTEP]
dsimp
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ≫
        (ρ_ P.X).inv ≫ (𝟙 P.X ⊗ S.one) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((P.actRight ≫ (ρ_ P.X).inv) ≫ (𝟙 P.X ⊗ S.one)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 1 2 => rw [rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actRight ≫ (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actRight ≫ (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| P.actRight ≫ (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (((ρ_ (P.X ⊗ S.X)).inv ≫ (P.actRight ⊗ 𝟙 tensorUnit')) ≫ (𝟙 P.X ⊗ S.one)) ≫
      coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 P.X ⊗ S.one)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 P.X ⊗ S.one)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 P.X ⊗ S.one)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ (P.X ⊗ S.X)).inv ≫
      ((𝟙 (P.X ⊗ S.X) ⊗ S.one) ≫ (P.actRight ⊗ 𝟙 S.X)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 S.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 (P.X ⊗ S.X) ⊗ S.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 S.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 (P.X ⊗ S.X) ⊗ S.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (P.actRight ⊗ 𝟙 S.X) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 (P.X ⊗ S.X) ⊗ S.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ (P.X ⊗ S.X)).inv ≫
      (𝟙 (P.X ⊗ S.X) ⊗ S.one) ≫
        ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
          coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 (P.X ⊗ S.X) ⊗ S.one) ≫ (α_ P.X S.X S.X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.mul
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 (P.X ⊗ S.X) ⊗ S.one) ≫ (α_ P.X S.X S.X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.mul
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 (P.X ⊗ S.X) ⊗ S.one) ≫ (α_ P.X S.X S.X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.mul
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ (P.X ⊗ S.X)).inv ≫
      (((α_ P.X S.X tensorUnit').hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.one)) ≫ (𝟙 P.X ⊗ S.mul)) ≫
        coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_lhs 3 4 => rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.one) ≫ (𝟙 P.X ⊗ S.mul)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ P.X S.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.one) ≫ (𝟙 P.X ⊗ S.mul)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ P.X S.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.one) ≫ (𝟙 P.X ⊗ S.mul)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ (P.X ⊗ S.X)).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (α_ P.X S.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ (P.X ⊗ S.X)).inv ≫
      (α_ P.X S.X tensorUnit').hom ≫
        (𝟙 P.X ⊗ (ρ_ S.X).hom) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
      𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
slice_rhs 1 2 => rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    𝟙 (coequalizer (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case h
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ (P.X ⊗ S.X)).inv ≫
      (α_ P.X S.X tensorUnit').hom ≫
        (𝟙 P.X ⊗ (ρ_ S.X).hom) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) =
    coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ inv P ≫ hom P = 𝟙 P.X
[PROOFSTEP]
dsimp [hom, inv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ ((ρ_ P.X).inv ≫ (𝟙 P.X ⊗ S.one) ≫ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    𝟙 P.X
[PROOFSTEP]
slice_lhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫
    coequalizer.desc P.actRight
      (_ :
        (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
          ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| (ρ_ P.X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
| 𝟙 P.X ⊗ S.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝ : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
⊢ (ρ_ P.X).inv ≫ (𝟙 P.X ⊗ S.one) ≫ P.actRight = 𝟙 P.X
[PROOFSTEP]
rw [actRight_one, Iso.inv_hom_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorBimod P (regular S)).actLeft ≫ hom P = (𝟙 R.X ⊗ hom P) ≫ P.actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ TensorBimod.actLeft P (regular S) ≫ hom P = (𝟙 R.X ⊗ hom P) ≫ P.actLeft
[PROOFSTEP]
dsimp [hom, TensorBimod.actLeft, regular]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
        colimMap
          (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
              (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
            ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
            (_ :
              (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorLeft R.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (𝟙 R.X ⊗
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)) ≫
      P.actLeft
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorLeft R.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X)
          ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
          colimMap
            (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
                (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
              ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
              (_ :
                (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                    (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                  ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                      (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                        (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
              (_ :
                (tensorLeft R.X).map
                      ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                    (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                  ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                      (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                        (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (tensorLeft R.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X)
          ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)) ≫
        P.actLeft
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
      ((PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
          colimMap
            (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
                (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
              ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
              (_ :
                (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                    (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                  ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                      (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                        (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
              (_ :
                (tensorLeft R.X).map
                      ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                    (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                  ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                      (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                        (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)) ≫
        P.actLeft
[PROOFSTEP]
slice_lhs 1 4 => rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
              (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
            ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
            (_ :
              (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorLeft R.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
              (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
            ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
            (_ :
              (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorLeft R.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (PreservesCoequalizer.iso (tensorLeft R.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom (𝟙 R.X ⊗ P.actRight ⊗ 𝟙 S.X) (𝟙 R.X ⊗ (α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((𝟙 R.X ⊗ (α_ P.X S.X S.X).hom) ≫
              (α_ R.X P.X (S.X ⊗ S.X)).inv ≫ (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 S.X) ≫ (α_ P.X S.X S.X).inv)
            ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X))
            (_ :
              (tensorLeft R.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorLeft R.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ R.X P.X (mk S.X S.mul S.mul).X).inv ≫ (P.actLeft ⊗ 𝟙 (mk S.X S.mul S.mul).X) =
                ((𝟙 R.X ⊗ (α_ P.X S.X (mk S.X S.mul S.mul).X).hom) ≫
                    (α_ R.X P.X (S.X ⊗ (mk S.X S.mul S.mul).X)).inv ≫
                      (P.actLeft ⊗ 𝟙 S.X ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ R.X P.X S.X).inv ≫ (P.actLeft ⊗ 𝟙 S.X)) ≫ P.actRight =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)) ≫
        P.actLeft
[PROOFSTEP]
slice_lhs 2 3 => rw [middle_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X S.X).inv
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X S.X).inv
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (P.actLeft ⊗ 𝟙 S.X) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ R.X P.X S.X).inv
[PROOFSTEP]
rw [middle_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ R.X P.X S.X).inv ≫ (α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight) ≫ P.actLeft =
    (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
      (𝟙 R.X ⊗
          coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)) ≫
        P.actLeft
[PROOFSTEP]
slice_rhs 1 2 => rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 R.X ⊗ coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))) ≫
    (𝟙 R.X ⊗
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actLeft
[PROOFSTEP]
rw [← id_tensor_comp, coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ R.X P.X S.X).inv ≫ (α_ R.X P.X S.X).hom ≫ (𝟙 R.X ⊗ P.actRight) ≫ P.actLeft = (𝟙 R.X ⊗ P.actRight) ≫ P.actLeft
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorBimod P (regular S)).actRight ≫ hom P = (hom P ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ TensorBimod.actRight P (regular S) ≫ hom P = (hom P ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
dsimp [hom, TensorBimod.actRight, regular]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
        colimMap
          (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
              (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
            ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (_ :
              (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorRight S.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
      coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
        𝟙 S.X) ≫
      P.actRight
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (tensorRight S.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X)
          ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
      ((PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
          colimMap
            (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
              (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
                (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
              ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              (_ :
                (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                    (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                  ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                      (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                        (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
              (_ :
                (tensorRight S.X).map
                      ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                    (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                  ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                      (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                        (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (tensorRight S.X).map
        (coequalizer.π (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X)
          ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
      (coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
      ((PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
          colimMap
            (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
              (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
                (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
              ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
              (_ :
                (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                    (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                  ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                      (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                        (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
              (_ :
                (tensorRight S.X).map
                      ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                    (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                  ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                      (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                        (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                    (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) =
    (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
      (coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
slice_lhs 1 4 => rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
              (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
            ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (_ :
              (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorRight S.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
              (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
            ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (_ :
              (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorRight S.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (PreservesCoequalizer.iso (tensorRight S.X) (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))).inv ≫
      colimMap
          (parallelPairHom ((P.actRight ⊗ 𝟙 S.X) ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul) ⊗ 𝟙 S.X)
            (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            ((α_ (P.X ⊗ S.X) S.X S.X).hom ≫
              (α_ P.X S.X (S.X ⊗ S.X)).hom ≫ (𝟙 P.X ⊗ 𝟙 S.X ⊗ S.mul) ≫ (α_ P.X S.X S.X).inv)
            ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul))
            (_ :
              (tensorRight S.X).map (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (P.actRight ⊗ 𝟙 (mk S.X S.mul S.mul).X))
            (_ :
              (tensorRight S.X).map ((α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft)) ≫
                  (α_ P.X (mk S.X S.mul S.mul).X S.X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actRight) =
                ((α_ (P.X ⊗ S.X) (mk S.X S.mul S.mul).X S.X).hom ≫
                    (α_ P.X S.X ((mk S.X S.mul S.mul).X ⊗ S.X)).hom ≫
                      (𝟙 P.X ⊗ 𝟙 S.X ⊗ (mk S.X S.mul S.mul).actRight) ≫ (α_ P.X S.X (mk S.X S.mul S.mul).X).inv) ≫
                  (α_ P.X S.X (mk S.X S.mul S.mul).X).hom ≫ (𝟙 P.X ⊗ (mk S.X S.mul S.mul).actLeft))) ≫
        coequalizer.desc P.actRight
          (_ :
            (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
              ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight)
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_colimMap_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ≫ P.actRight =
    (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
      (coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
slice_lhs 2 3 => rw [right_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ S.mul) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X S.X).hom
[PROOFSTEP]
rw [right_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ S.mul) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X S.X).hom
[PROOFSTEP]
rw [right_assoc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (𝟙 P.X ⊗ S.mul) ≫ P.actRight
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (α_ P.X S.X S.X).hom
[PROOFSTEP]
rw [right_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X S.X S.X).hom ≫ (α_ P.X S.X S.X).inv ≫ (P.actRight ⊗ 𝟙 S.X) ≫ P.actRight =
    (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
      (coequalizer.desc P.actRight
            (_ :
              (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
                ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
          𝟙 S.X) ≫
        P.actRight
[PROOFSTEP]
slice_rhs 1 2 => rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| (coequalizer.π (P.actRight ⊗ 𝟙 S.X) ((α_ P.X S.X S.X).hom ≫ (𝟙 P.X ⊗ S.mul)) ⊗ 𝟙 S.X) ≫
    (coequalizer.desc P.actRight
        (_ :
          (P.actRight ⊗ 𝟙 (regular S).X) ≫ P.actRight =
            ((α_ P.X S.X (regular S).X).hom ≫ (𝟙 P.X ⊗ (regular S).actLeft)) ≫ P.actRight) ⊗
      𝟙 S.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
| P.actRight
[PROOFSTEP]
rw [← comp_tensor_id, coequalizer.π_desc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝² : HasCoequalizers C
R S : Mon_ C
P : Bimod R S
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ (α_ P.X S.X S.X).hom ≫ (α_ P.X S.X S.X).inv ≫ (P.actRight ⊗ 𝟙 S.X) ≫ P.actRight = (P.actRight ⊗ 𝟙 S.X) ≫ P.actRight
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M : Bimod X Y
N P Q : Bimod Y Z
f : N ⟶ P
g : P ⟶ Q
⊢ tensorHom (𝟙 M) (f ≫ g) = tensorHom (𝟙 M) f ≫ tensorHom (𝟙 M) g
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ tensorHom (𝟙 (regular X)) f = (leftUnitorBimod M).hom ≫ f ≫ (leftUnitorBimod N).inv
[PROOFSTEP]
dsimp [tensorHom, regular, leftUnitorBimod]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ Hom.mk
      (colimMap
        (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
          ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
          (_ :
            ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
              (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
          (_ :
            ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
                ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
              (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft)))) =
    (isoOfIso (Iso.mk (LeftUnitorBimod.hom M) (LeftUnitorBimod.inv M))
          (_ :
            (tensorBimod (regular X) M).actLeft ≫ LeftUnitorBimod.hom M = (𝟙 X.X ⊗ LeftUnitorBimod.hom M) ≫ M.actLeft)
          (_ :
            (tensorBimod (regular X) M).actRight ≫ LeftUnitorBimod.hom M =
              (LeftUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
      f ≫
        (isoOfIso (Iso.mk (LeftUnitorBimod.hom N) (LeftUnitorBimod.inv N))
            (_ :
              (tensorBimod (regular X) N).actLeft ≫ LeftUnitorBimod.hom N = (𝟙 X.X ⊗ LeftUnitorBimod.hom N) ≫ N.actLeft)
            (_ :
              (tensorBimod (regular X) N).actRight ≫ LeftUnitorBimod.hom N =
                (LeftUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (Hom.mk
        (colimMap
          (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
            ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
            (_ :
              ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
                (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
                  ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
                (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                  (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft))))).hom =
    ((isoOfIso (Iso.mk (LeftUnitorBimod.hom M) (LeftUnitorBimod.inv M))
            (_ :
              (tensorBimod (regular X) M).actLeft ≫ LeftUnitorBimod.hom M = (𝟙 X.X ⊗ LeftUnitorBimod.hom M) ≫ M.actLeft)
            (_ :
              (tensorBimod (regular X) M).actRight ≫ LeftUnitorBimod.hom M =
                (LeftUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
        f ≫
          (isoOfIso (Iso.mk (LeftUnitorBimod.hom N) (LeftUnitorBimod.inv N))
              (_ :
                (tensorBimod (regular X) N).actLeft ≫ LeftUnitorBimod.hom N =
                  (𝟙 X.X ⊗ LeftUnitorBimod.hom N) ≫ N.actLeft)
              (_ :
                (tensorBimod (regular X) N).actRight ≫ LeftUnitorBimod.hom N =
                  (LeftUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv).hom
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ coequalizer.π ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X)
        ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
      (Hom.mk
          (colimMap
            (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
              ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
              (_ :
                ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
                  (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
                    ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
                  (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                    (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft))))).hom =
    coequalizer.π ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X)
        ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
      ((isoOfIso (Iso.mk (LeftUnitorBimod.hom M) (LeftUnitorBimod.inv M))
              (_ :
                (tensorBimod (regular X) M).actLeft ≫ LeftUnitorBimod.hom M =
                  (𝟙 X.X ⊗ LeftUnitorBimod.hom M) ≫ M.actLeft)
              (_ :
                (tensorBimod (regular X) M).actRight ≫ LeftUnitorBimod.hom M =
                  (LeftUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
          f ≫
            (isoOfIso (Iso.mk (LeftUnitorBimod.hom N) (LeftUnitorBimod.inv N))
                (_ :
                  (tensorBimod (regular X) N).actLeft ≫ LeftUnitorBimod.hom N =
                    (𝟙 X.X ⊗ LeftUnitorBimod.hom N) ≫ N.actLeft)
                (_ :
                  (tensorBimod (regular X) N).actRight ≫ LeftUnitorBimod.hom N =
                    (LeftUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv).hom
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
      colimMap
        (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
          ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
          (_ :
            ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
              (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
          (_ :
            ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
                ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
              (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft))) =
    coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
      LeftUnitorBimod.hom M ≫ f.hom ≫ LeftUnitorBimod.inv N
[PROOFSTEP]
slice_lhs 1 2 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    colimMap
      (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
        ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
        (_ :
          ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
        (_ :
          ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
              ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
              (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    colimMap
      (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
        ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
        (_ :
          ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
        (_ :
          ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
              ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
              (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    colimMap
      (parallelPairHom (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) (X.mul ⊗ 𝟙 N.X)
        ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ((𝟙 X.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 X.X ⊗ f.hom)
        (_ :
          ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 M.X) ≫ ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ ((mk X.X X.mul X.mul).actRight ⊗ 𝟙 N.X))
        (_ :
          ((α_ (mk X.X X.mul X.mul).X X.X M.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ M.actLeft)) ≫
              ((𝟙 (mk X.X X.mul X.mul)).hom ⊗ f.hom) =
            (((𝟙 (mk X.X X.mul X.mul)).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
              (α_ (mk X.X X.mul X.mul).X X.X N.X).hom ≫ (𝟙 (mk X.X X.mul X.mul).X ⊗ N.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
      LeftUnitorBimod.hom M ≫ f.hom ≫ LeftUnitorBimod.inv N
[PROOFSTEP]
dsimp [LeftUnitorBimod.hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
      coequalizer.desc M.actLeft
          (_ :
            ((regular X).actRight ⊗ 𝟙 M.X) ≫ M.actLeft =
              ((α_ (regular X).X X.X M.X).hom ≫ (𝟙 (regular X).X ⊗ M.actLeft)) ≫ M.actLeft) ≫
        f.hom ≫ LeftUnitorBimod.inv N
[PROOFSTEP]
slice_rhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    coequalizer.desc M.actLeft
      (_ :
        ((regular X).actRight ⊗ 𝟙 M.X) ≫ M.actLeft =
          ((α_ (regular X).X X.X M.X).hom ≫ (𝟙 (regular X).X ⊗ M.actLeft)) ≫ M.actLeft)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| LeftUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    coequalizer.desc M.actLeft
      (_ :
        ((regular X).actRight ⊗ 𝟙 M.X) ≫ M.actLeft =
          ((α_ (regular X).X X.X M.X).hom ≫ (𝟙 (regular X).X ⊗ M.actLeft)) ≫ M.actLeft)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| LeftUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 M.X) ((α_ X.X X.X M.X).hom ≫ (𝟙 X.X ⊗ M.actLeft)) ≫
    coequalizer.desc M.actLeft
      (_ :
        ((regular X).actRight ⊗ 𝟙 M.X) ≫ M.actLeft =
          ((α_ (regular X).X X.X M.X).hom ≫ (𝟙 (regular X).X ⊗ M.actLeft)) ≫ M.actLeft)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| LeftUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (M.actLeft ≫ f.hom) ≫ LeftUnitorBimod.inv N
[PROOFSTEP]
dsimp [LeftUnitorBimod.inv]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (M.actLeft ≫ f.hom) ≫
      (λ_ N.X).inv ≫ (X.one ⊗ 𝟙 N.X) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 1 2 => rw [Hom.left_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actLeft ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Hom.left_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actLeft ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Hom.left_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actLeft ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Hom.left_act_hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    ((((𝟙 X.X ⊗ f.hom) ≫ N.actLeft) ≫ (λ_ N.X).inv) ≫ (X.one ⊗ 𝟙 N.X)) ≫
      coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 2 3 => rw [leftUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actLeft ≫ (λ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actLeft ≫ (λ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actLeft ≫ (λ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 N.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [leftUnitor_inv_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (((λ_ (X.X ⊗ N.X)).inv ≫ (𝟙 tensorUnit' ⊗ N.actLeft)) ≫ (X.one ⊗ 𝟙 N.X)) ≫
        coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 tensorUnit' ⊗ N.actLeft) ≫ (X.one ⊗ 𝟙 N.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 tensorUnit' ⊗ N.actLeft) ≫ (X.one ⊗ 𝟙 N.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 tensorUnit' ⊗ N.actLeft) ≫ (X.one ⊗ 𝟙 N.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        ((X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫ (𝟙 X.X ⊗ N.actLeft)) ≫
          coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 4 4 => rw [← Iso.inv_hom_id_assoc (α_ X.X X.X N.X) (𝟙 X.X ⊗ N.actLeft)]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ N.actLeft
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ X.X X.X N.X) (𝟙 X.X ⊗ N.actLeft)]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ N.actLeft
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ X.X X.X N.X) (𝟙 X.X ⊗ N.actLeft)]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ N.actLeft
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
[PROOFSTEP]
rw [← Iso.inv_hom_id_assoc (α_ X.X X.X N.X) (𝟙 X.X ⊗ N.actLeft)]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        (X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫
          ((α_ X.X X.X N.X).inv ≫ (α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft)) ≫
            coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 5 7 => rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).hom ≫
    (𝟙 X.X ⊗ N.actLeft) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).hom ≫
    (𝟙 X.X ⊗ N.actLeft) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).hom ≫
    (𝟙 X.X ⊗ N.actLeft) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.one ⊗ 𝟙 (X.X ⊗ N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ X.X X.X N.X).inv
[PROOFSTEP]
rw [← Category.assoc, ← coequalizer.condition]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        (X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫
          (α_ X.X X.X N.X).inv ≫
            (X.mul ⊗ 𝟙 N.X) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 3 4 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫ (α_ X.X X.X N.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.mul ⊗ 𝟙 N.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫ (α_ X.X X.X N.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.mul ⊗ 𝟙 N.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (X.one ⊗ 𝟙 (X.X ⊗ N.X)) ≫ (α_ X.X X.X N.X).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| X.mul ⊗ 𝟙 N.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        (((α_ tensorUnit' X.X N.X).inv ≫ ((X.one ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)) ≫ (X.mul ⊗ 𝟙 N.X)) ≫
          coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 4 5 => rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| ((X.one ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) ≫ (X.mul ⊗ 𝟙 N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ tensorUnit' X.X N.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| ((X.one ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) ≫ (X.mul ⊗ 𝟙 N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ tensorUnit' X.X N.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| ((X.one ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) ≫ (X.mul ⊗ 𝟙 N.X)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 X.X ⊗ f.hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (λ_ (X.X ⊗ N.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ tensorUnit' X.X N.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, Mon_.one_mul]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        (α_ tensorUnit' X.X N.X).inv ≫
          ((λ_ X.X).hom ⊗ 𝟙 N.X) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
have : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 _ := by pure_coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
[PROOFSTEP]
pure_coherence
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫
      (λ_ (X.X ⊗ N.X)).inv ≫
        (α_ tensorUnit' X.X N.X).inv ≫
          ((λ_ X.X).hom ⊗ 𝟙 N.X) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 2 4 => rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (λ_ (X.X ⊗ N.X)).inv ≫ (α_ tensorUnit' X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (λ_ (X.X ⊗ N.X)).inv ≫ (α_ tensorUnit' X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (λ_ (X.X ⊗ N.X)).inv ≫ (α_ tensorUnit' X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| 𝟙 X.X ⊗ f.hom
[PROOFSTEP]
rw [this]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
⊢ (𝟙 X.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))) WalkingParallelPair.one =
    (𝟙 X.X ⊗ f.hom) ≫ 𝟙 (X.X ⊗ N.X) ≫ coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
slice_rhs 1 2 => rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (𝟙 X.X ⊗ f.hom) ≫ 𝟙 (X.X ⊗ N.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (𝟙 X.X ⊗ f.hom) ≫ 𝟙 (X.X ⊗ N.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| (𝟙 X.X ⊗ f.hom) ≫ 𝟙 (X.X ⊗ N.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 (X.X ⊗ N.X)
| coequalizer.π (X.mul ⊗ 𝟙 N.X) ((α_ X.X X.X N.X).hom ≫ (𝟙 X.X ⊗ N.actLeft))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ tensorHom (𝟙 (tensorBimod M N)) f =
    (associatorBimod M N P).hom ≫ tensorHom (𝟙 M) (tensorHom (𝟙 N) f) ≫ (associatorBimod M N P').inv
[PROOFSTEP]
dsimp [tensorHom, tensorBimod, associatorBimod]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ Hom.mk
      (colimMap
        (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
          (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
          ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
          (_ :
            ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
              (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                  f.hom) ≫
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
          (_ :
            ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
              (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                  f.hom) ≫
                (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P'.actLeft)))) =
    (isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
          (_ :
            (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
              (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
          (_ :
            (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
              (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
      Hom.mk
          (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N P'))
              ((α_ M.X X.X (TensorBimod.X N P')).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
        (isoOfIso (Iso.mk (AssociatorBimod.hom M N P') (AssociatorBimod.inv M N P'))
            (_ :
              (tensorBimod (tensorBimod M N) P').actLeft ≫ AssociatorBimod.hom M N P' =
                (𝟙 W.X ⊗ AssociatorBimod.hom M N P') ≫ (tensorBimod M (tensorBimod N P')).actLeft)
            (_ :
              (tensorBimod (tensorBimod M N) P').actRight ≫ AssociatorBimod.hom M N P' =
                (AssociatorBimod.hom M N P' ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P')).actRight)).inv
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (Hom.mk
        (colimMap
          (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
            ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
            (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
            ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
            (_ :
              ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                  ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
                (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                    f.hom) ≫
                  ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                    (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                  ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
                (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                    f.hom) ≫
                  (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                    (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                      P'.actLeft))))).hom =
    ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
            (_ :
              (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
            (_ :
              (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
        Hom.mk
            (colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
                (M.actRight ⊗ 𝟙 (TensorBimod.X N P'))
                ((α_ M.X X.X (TensorBimod.X N P')).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
                ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                  colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
                (𝟙 M.X ⊗
                  colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
                (_ :
                  (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                      ((𝟙 M).hom ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                      (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                      (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                      (M.actRight ⊗
                        𝟙 (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
                (_ :
                  ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                        (𝟙 M.X ⊗
                          (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                      ((𝟙 M).hom ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                      (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                    (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                      (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                      (α_ M.X X.X
                            (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                        (𝟙 M.X ⊗
                          (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
          (isoOfIso (Iso.mk (AssociatorBimod.hom M N P') (AssociatorBimod.inv M N P'))
              (_ :
                (tensorBimod (tensorBimod M N) P').actLeft ≫ AssociatorBimod.hom M N P' =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M N P') ≫ (tensorBimod M (tensorBimod N P')).actLeft)
              (_ :
                (tensorBimod (tensorBimod M N) P').actRight ≫ AssociatorBimod.hom M N P' =
                  (AssociatorBimod.hom M N P' ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P')).actRight)).inv).hom
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ coequalizer.π ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X)
        ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
          (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
      (Hom.mk
          (colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
              (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
              ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
              ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
              (_ :
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                    ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
                  (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                      f.hom) ≫
                    ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                    ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
                  (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                      f.hom) ≫
                    (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                        P'.actLeft))))).hom =
    coequalizer.π ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X)
        ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
          (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
      ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
              (_ :
                (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
              (_ :
                (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                  (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
          Hom.mk
              (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                  ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
                  (M.actRight ⊗ 𝟙 (TensorBimod.X N P'))
                  ((α_ M.X X.X (TensorBimod.X N P')).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
                  ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                    colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
                  (𝟙 M.X ⊗
                    colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
                  (_ :
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                        ((𝟙 M).hom ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                  ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                        (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                  ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                        (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                        (M.actRight ⊗
                          𝟙 (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
                  (_ :
                    ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                          (𝟙 M.X ⊗
                            (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                        ((𝟙 M).hom ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                  ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                        (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                                  ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                        (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                        (α_ M.X X.X
                              (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                          (𝟙 M.X ⊗
                            (mk (TensorBimod.X N P') (TensorBimod.actLeft N P')
                                (TensorBimod.actRight N P')).actLeft)))) ≫
            (isoOfIso (Iso.mk (AssociatorBimod.hom M N P') (AssociatorBimod.inv M N P'))
                (_ :
                  (tensorBimod (tensorBimod M N) P').actLeft ≫ AssociatorBimod.hom M N P' =
                    (𝟙 W.X ⊗ AssociatorBimod.hom M N P') ≫ (tensorBimod M (tensorBimod N P')).actLeft)
                (_ :
                  (tensorBimod (tensorBimod M N) P').actRight ≫ AssociatorBimod.hom M N P' =
                    (AssociatorBimod.hom M N P' ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P')).actRight)).inv).hom
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      colimMap
        (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
          (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
          ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
          (_ :
            ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
              (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                  f.hom) ≫
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
          (_ :
            ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
              (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗
                  f.hom) ≫
                (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P'.actLeft))) =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      AssociatorBimod.hom M N P ≫
        colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N P'))
              ((α_ M.X X.X (TensorBimod.X N P')).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft))) ≫
          AssociatorBimod.inv M N P'
[PROOFSTEP]
slice_lhs 1 2 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
        ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
        ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P'.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
        ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
        ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P'.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
        ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
        ((𝟙 (TensorBimod.X M N) ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 (TensorBimod.X M N) ⊗ f.hom)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P'.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ f.hom) =
            (((𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N))).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
              (α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P'.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P'.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (𝟙 (TensorBimod.X M N) ⊗ f.hom) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      AssociatorBimod.hom M N P ≫
        colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N P'))
              ((α_ M.X X.X (TensorBimod.X N P')).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N P') (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft))) ≫
          AssociatorBimod.inv M N P'
[PROOFSTEP]
dsimp [TensorBimod.X, AssociatorBimod.hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
            (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft)) ≫
      coequalizer.desc (AssociatorBimod.homAux M N P)
          (_ :
            ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
              ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫
                AssociatorBimod.homAux M N P) ≫
        colimMap
            (parallelPairHom
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                              (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                              (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft))) ≫
          AssociatorBimod.inv M N P'
[PROOFSTEP]
slice_rhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| AssociatorBimod.inv M N P'
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| AssociatorBimod.inv M N P'
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| AssociatorBimod.inv M N P'
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
            (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
        WalkingParallelPair.one =
    (AssociatorBimod.homAux M N P ≫
        colimMap
          (parallelPairHom
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (_ :
              (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
            (_ :
              ((α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
      AssociatorBimod.inv M N P'
[PROOFSTEP]
dsimp [AssociatorBimod.homAux, AssociatorBimod.inv]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
            (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
        WalkingParallelPair.one =
    (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
          coequalizer.desc
            ((α_ M.X N.X P.X).hom ≫
              (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                  ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
            (_ :
              (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                  (α_ M.X N.X P.X).hom ≫
                    (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                  (α_ M.X N.X P.X).hom ≫
                    (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
        colimMap
          (parallelPairHom
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (_ :
              (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
            (_ :
              ((α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
      coequalizer.desc (AssociatorBimod.invAux M N P')
        (_ :
          (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
            ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
              AssociatorBimod.invAux M N P')
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (tensorRight P.X).map (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (tensorRight P.X).map (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ≫
      (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                    ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
              (_ :
                (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                  (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
          colimMap
            (parallelPairHom
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                              (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                              (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
        coequalizer.desc (AssociatorBimod.invAux M N P')
          (_ :
            (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
              ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
                AssociatorBimod.invAux M N P')
[PROOFSTEP]
rw [tensorRight_map]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                    ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
              (_ :
                (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                  (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
          colimMap
            (parallelPairHom
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                    (𝟙 N.X ⊗ f.hom)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                        (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              (_ :
                (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (M.actRight ⊗
                      𝟙
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
              (_ :
                ((α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                              (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                              ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫
                                    (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                              (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
        coequalizer.desc (AssociatorBimod.invAux M N P')
          (_ :
            (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
              ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
                AssociatorBimod.invAux M N P')
[PROOFSTEP]
slice_rhs 1 3 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P))
      (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
            ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      (_ :
        (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (M.actRight ⊗
              𝟙
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
      (_ :
        ((α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                    (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                      (𝟙 N.X ⊗ f.hom)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                          (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
            (α_ M.X X.X
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
              (𝟙 M.X ⊗
                (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                    (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))) ≫
        colimMap
          (parallelPairHom
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
              (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
            (_ :
              (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (M.actRight ⊗
                    𝟙
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
            (_ :
              ((α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                            (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                          (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))
                            ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                                (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
                  (α_ M.X X.X
                        (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                            (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                          (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))) ≫
      coequalizer.desc (AssociatorBimod.invAux M N P')
        (_ :
          (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
            ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
              AssociatorBimod.invAux M N P')
[PROOFSTEP]
slice_rhs 3 4 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P))
        (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (_ :
          (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
        (_ :
          ((α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                        (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                        (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P))
        (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (_ :
          (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
        (_ :
          ((α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                        (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                        (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P))
        (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P'))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                  (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        (_ :
          (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (M.actRight ⊗
                𝟙
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X))
        (_ :
          ((α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                        (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))
                      (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom)
                        (𝟙 N.X ⊗ f.hom)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                            (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))).hom) ≫
              (α_ M.X X.X
                    (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                        (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).X).hom ≫
                (𝟙 M.X ⊗
                  (mk (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                      (TensorBimod.actLeft N P') (TensorBimod.actRight N P')).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
        ((𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
                  ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
                      (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))) ≫
            colimit.ι
              (parallelPair
                (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
                ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
                  (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
              WalkingParallelPair.one) ≫
          coequalizer.desc (AssociatorBimod.invAux M N P')
            (_ :
              (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
                ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
                  AssociatorBimod.invAux M N P')
[PROOFSTEP]
slice_rhs 2 3 => rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
              (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
              (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ((𝟙 N.X ⊗ 𝟙 Y.X) ⊗ f.hom) (𝟙 N.X ⊗ f.hom)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ ((𝟙 N).hom ⊗ f.hom) = (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (N.actRight ⊗ 𝟙 P'.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ ((𝟙 N).hom ⊗ f.hom) =
              (((𝟙 N).hom ⊗ 𝟙 Y.X) ⊗ f.hom) ≫ (α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc (AssociatorBimod.invAux M N P')
    (_ :
      (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
        ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫ AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      ((𝟙 M.X ⊗
            (𝟙 N.X ⊗ f.hom) ≫
              colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                WalkingParallelPair.one) ≫
          colimit.ι
            (parallelPair
              (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
              ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
                (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
            WalkingParallelPair.one) ≫
        coequalizer.desc (AssociatorBimod.invAux M N P')
          (_ :
            (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
              ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
                AssociatorBimod.invAux M N P')
[PROOFSTEP]
slice_rhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
      (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.invAux M N P')
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
          ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
            AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
      (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.invAux M N P')
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
          ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
            AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
      (parallelPair (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P')))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.invAux M N P')
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P').X) ≫ AssociatorBimod.invAux M N P' =
          ((α_ M.X X.X (tensorBimod N P').X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P').actLeft)) ≫
            AssociatorBimod.invAux M N P')
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (𝟙 M.X ⊗
          (𝟙 N.X ⊗ f.hom) ≫
            colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
              WalkingParallelPair.one) ≫
        AssociatorBimod.invAux M N P'
[PROOFSTEP]
dsimp [AssociatorBimod.invAux]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (𝟙 M.X ⊗
          (𝟙 N.X ⊗ f.hom) ≫
            colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
              WalkingParallelPair.one) ≫
        (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv ≫
          coequalizer.desc
            ((α_ M.X N.X P'.X).inv ≫
              (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
                  ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
            (_ :
              (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
                  (α_ M.X N.X P'.X).inv ≫
                    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                      coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                        ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
                (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
                  (α_ M.X N.X P'.X).inv ≫
                    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                      coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                        ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
[PROOFSTEP]
slice_rhs 2 2 => rw [id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc
    ((α_ M.X N.X P'.X).inv ≫
      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
        coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
    (_ :
      (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
        (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc
    ((α_ M.X N.X P'.X).inv ≫
      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
        coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
    (_ :
      (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
        (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗
    (𝟙 N.X ⊗ f.hom) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.desc
    ((α_ M.X N.X P'.X).inv ≫
      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
        coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
    (_ :
      (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
        (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
          (α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (((𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom) ≫
            (𝟙 M.X ⊗
              colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
                WalkingParallelPair.one)) ≫
          (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X)
              ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ M.X N.X P'.X).inv ≫
            (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
              coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
                ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
          (_ :
            (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
                (α_ M.X N.X P'.X).inv ≫
                  (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                    coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                      ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
              (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
                (α_ M.X N.X P'.X).inv ≫
                  (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                    coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                      ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
[PROOFSTEP]
slice_rhs 3 5 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P'.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
              ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P'.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
              ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 P'.X) ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)))
        WalkingParallelPair.one) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P'.X)
          ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P'.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
              ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P'.X) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P'.X).hom ≫ (𝟙 N.X ⊗ P'.actLeft)) ≫
              (α_ M.X N.X P'.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P'.X)
                    ((α_ (tensorBimod M N).X Y.X P'.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P'.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| 𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom) ≫
        (α_ M.X N.X P'.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
              ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
slice_rhs 2 3 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom) ≫ (α_ M.X N.X P'.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom) ≫ (α_ M.X N.X P'.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (𝟙 M.X ⊗ 𝟙 N.X ⊗ f.hom) ≫ (α_ M.X N.X P'.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (((α_ M.X N.X P.X).inv ≫ ((𝟙 M.X ⊗ 𝟙 N.X) ⊗ f.hom)) ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X)) ≫
        coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
          ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
slice_rhs 1 3 => rw [Iso.hom_inv_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom ≫ (α_ M.X N.X P.X).inv ≫ ((𝟙 M.X ⊗ 𝟙 N.X) ⊗ f.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom ≫ (α_ M.X N.X P.X).inv ≫ ((𝟙 M.X ⊗ 𝟙 N.X) ⊗ f.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (α_ M.X N.X P.X).hom ≫ (α_ M.X N.X P.X).inv ≫ ((𝟙 M.X ⊗ 𝟙 N.X) ⊗ f.hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
    ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
rw [Iso.hom_inv_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
          WalkingParallelPair.one =
    ((𝟙 (M.X ⊗ N.X) ⊗ f.hom) ≫
        (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P'.X)) ≫
      coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
        ((α_ (TensorBimod.X M N) Y.X P'.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P'.actLeft))
[PROOFSTEP]
slice_lhs 1 2 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ f.hom)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N : Bimod X Y
P P' : Bimod Y Z
f : P ⟶ P'
| colimit.ι
    (parallelPair (TensorBimod.actRight M N ⊗ 𝟙 P'.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P'.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P'.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y Z : Mon_ C
M N P : Bimod X Y
f : M ⟶ N
g : N ⟶ P
Q : Bimod Y Z
⊢ tensorHom (f ≫ g) (𝟙 Q) = tensorHom f (𝟙 Q) ≫ tensorHom g (𝟙 Q)
[PROOFSTEP]
rw [← tensor_comp, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ tensorHom f (𝟙 (regular Y)) = (rightUnitorBimod M).hom ≫ f ≫ (rightUnitorBimod N).inv
[PROOFSTEP]
dsimp [tensorHom, regular, rightUnitorBimod]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ Hom.mk
      (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
          ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
          (_ :
            (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
          (_ :
            ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
                (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
                (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)))) =
    (isoOfIso (Iso.mk (RightUnitorBimod.hom M) (RightUnitorBimod.inv M))
          (_ :
            (tensorBimod M (regular Y)).actLeft ≫ RightUnitorBimod.hom M = (𝟙 X.X ⊗ RightUnitorBimod.hom M) ≫ M.actLeft)
          (_ :
            (tensorBimod M (regular Y)).actRight ≫ RightUnitorBimod.hom M =
              (RightUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
      f ≫
        (isoOfIso (Iso.mk (RightUnitorBimod.hom N) (RightUnitorBimod.inv N))
            (_ :
              (tensorBimod N (regular Y)).actLeft ≫ RightUnitorBimod.hom N =
                (𝟙 X.X ⊗ RightUnitorBimod.hom N) ≫ N.actLeft)
            (_ :
              (tensorBimod N (regular Y)).actRight ≫ RightUnitorBimod.hom N =
                (RightUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (Hom.mk
        (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
            ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
            (_ :
              (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
            (_ :
              ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
                  (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
                  (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft))))).hom =
    ((isoOfIso (Iso.mk (RightUnitorBimod.hom M) (RightUnitorBimod.inv M))
            (_ :
              (tensorBimod M (regular Y)).actLeft ≫ RightUnitorBimod.hom M =
                (𝟙 X.X ⊗ RightUnitorBimod.hom M) ≫ M.actLeft)
            (_ :
              (tensorBimod M (regular Y)).actRight ≫ RightUnitorBimod.hom M =
                (RightUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
        f ≫
          (isoOfIso (Iso.mk (RightUnitorBimod.hom N) (RightUnitorBimod.inv N))
              (_ :
                (tensorBimod N (regular Y)).actLeft ≫ RightUnitorBimod.hom N =
                  (𝟙 X.X ⊗ RightUnitorBimod.hom N) ≫ N.actLeft)
              (_ :
                (tensorBimod N (regular Y)).actRight ≫ RightUnitorBimod.hom N =
                  (RightUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv).hom
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ coequalizer.π (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X)
        ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
      (Hom.mk
          (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
              ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
              (_ :
                (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
              (_ :
                ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
                    (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
                    (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft))))).hom =
    coequalizer.π (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X)
        ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
      ((isoOfIso (Iso.mk (RightUnitorBimod.hom M) (RightUnitorBimod.inv M))
              (_ :
                (tensorBimod M (regular Y)).actLeft ≫ RightUnitorBimod.hom M =
                  (𝟙 X.X ⊗ RightUnitorBimod.hom M) ≫ M.actLeft)
              (_ :
                (tensorBimod M (regular Y)).actRight ≫ RightUnitorBimod.hom M =
                  (RightUnitorBimod.hom M ⊗ 𝟙 Y.X) ≫ M.actRight)).hom ≫
          f ≫
            (isoOfIso (Iso.mk (RightUnitorBimod.hom N) (RightUnitorBimod.inv N))
                (_ :
                  (tensorBimod N (regular Y)).actLeft ≫ RightUnitorBimod.hom N =
                    (𝟙 X.X ⊗ RightUnitorBimod.hom N) ≫ N.actLeft)
                (_ :
                  (tensorBimod N (regular Y)).actRight ≫ RightUnitorBimod.hom N =
                    (RightUnitorBimod.hom N ⊗ 𝟙 Y.X) ≫ N.actRight)).inv).hom
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
      colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
          ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
          (_ :
            (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
          (_ :
            ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
                (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
                (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft))) =
    coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
      RightUnitorBimod.hom M ≫ f.hom ≫ RightUnitorBimod.inv N
[PROOFSTEP]
slice_lhs 1 2 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
        ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
        (_ :
          (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
        (_ :
          ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
              (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
        ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
        (_ :
          (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
        (_ :
          ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
              (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) (N.actRight ⊗ 𝟙 Y.X)
        ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 Y.X) (f.hom ⊗ 𝟙 Y.X)
        (_ :
          (M.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X) ≫ (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫ (N.actRight ⊗ 𝟙 (mk Y.X Y.mul Y.mul).X))
        (_ :
          ((α_ M.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 M.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) =
            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 (mk Y.X Y.mul Y.mul)).hom) ≫
              (α_ N.X Y.X (mk Y.X Y.mul Y.mul).X).hom ≫ (𝟙 N.X ⊗ (mk Y.X Y.mul Y.mul).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
      RightUnitorBimod.hom M ≫ f.hom ≫ RightUnitorBimod.inv N
[PROOFSTEP]
dsimp [RightUnitorBimod.hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
      coequalizer.desc M.actRight
          (_ :
            (M.actRight ⊗ 𝟙 (regular Y).X) ≫ M.actRight =
              ((α_ M.X Y.X (regular Y).X).hom ≫ (𝟙 M.X ⊗ (regular Y).actLeft)) ≫ M.actRight) ≫
        f.hom ≫ RightUnitorBimod.inv N
[PROOFSTEP]
slice_rhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    coequalizer.desc M.actRight
      (_ :
        (M.actRight ⊗ 𝟙 (regular Y).X) ≫ M.actRight =
          ((α_ M.X Y.X (regular Y).X).hom ≫ (𝟙 M.X ⊗ (regular Y).actLeft)) ≫ M.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| RightUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    coequalizer.desc M.actRight
      (_ :
        (M.actRight ⊗ 𝟙 (regular Y).X) ≫ M.actRight =
          ((α_ M.X Y.X (regular Y).X).hom ≫ (𝟙 M.X ⊗ (regular Y).actLeft)) ≫ M.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| RightUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (M.actRight ⊗ 𝟙 Y.X) ((α_ M.X Y.X Y.X).hom ≫ (𝟙 M.X ⊗ Y.mul)) ≫
    coequalizer.desc M.actRight
      (_ :
        (M.actRight ⊗ 𝟙 (regular Y).X) ≫ M.actRight =
          ((α_ M.X Y.X (regular Y).X).hom ≫ (𝟙 M.X ⊗ (regular Y).actLeft)) ≫ M.actRight)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| RightUnitorBimod.inv N
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (M.actRight ≫ f.hom) ≫ RightUnitorBimod.inv N
[PROOFSTEP]
dsimp [RightUnitorBimod.inv]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (M.actRight ≫ f.hom) ≫
      (ρ_ N.X).inv ≫ (𝟙 N.X ⊗ Y.one) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 1 2 => rw [Hom.right_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actRight ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Hom.right_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actRight ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Hom.right_act_hom]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| M.actRight ≫ f.hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ N.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Hom.right_act_hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    ((((f.hom ⊗ 𝟙 Y.X) ≫ N.actRight) ≫ (ρ_ N.X).inv) ≫ (𝟙 N.X ⊗ Y.one)) ≫
      coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 2 3 => rw [rightUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actRight ≫ (ρ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actRight ≫ (ρ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| N.actRight ≫ (ρ_ N.X).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [rightUnitor_inv_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (((ρ_ (N.X ⊗ Y.X)).inv ≫ (N.actRight ⊗ 𝟙 tensorUnit')) ≫ (𝟙 N.X ⊗ Y.one)) ≫
        coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 3 4 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 N.X ⊗ Y.one)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 N.X ⊗ Y.one)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 tensorUnit') ≫ (𝟙 N.X ⊗ Y.one)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (ρ_ (N.X ⊗ Y.X)).inv ≫
        ((𝟙 (N.X ⊗ Y.X) ⊗ Y.one) ≫ (N.actRight ⊗ 𝟙 Y.X)) ≫
          coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 4 5 => rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 Y.X) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 (N.X ⊗ Y.X) ⊗ Y.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 Y.X) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 (N.X ⊗ Y.X) ⊗ Y.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (N.actRight ⊗ 𝟙 Y.X) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 (N.X ⊗ Y.X) ⊗ Y.one
[PROOFSTEP]
rw [coequalizer.condition]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (ρ_ (N.X ⊗ Y.X)).inv ≫
        (𝟙 (N.X ⊗ Y.X) ⊗ Y.one) ≫
          ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul)) ≫
            coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 3 4 => rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 (N.X ⊗ Y.X) ⊗ Y.one) ≫ (α_ N.X Y.X Y.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.mul
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 (N.X ⊗ Y.X) ⊗ Y.one) ≫ (α_ N.X Y.X Y.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.mul
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 (N.X ⊗ Y.X) ⊗ Y.one) ≫ (α_ N.X Y.X Y.X).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| 𝟙 N.X ⊗ Y.mul
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
[PROOFSTEP]
rw [← MonoidalCategory.tensor_id, associator_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (ρ_ (N.X ⊗ Y.X)).inv ≫
        (((α_ N.X Y.X tensorUnit').hom ≫ (𝟙 N.X ⊗ 𝟙 Y.X ⊗ Y.one)) ≫ (𝟙 N.X ⊗ Y.mul)) ≫
          coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 4 5 => rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 N.X ⊗ 𝟙 Y.X ⊗ Y.one) ≫ (𝟙 N.X ⊗ Y.mul)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ N.X Y.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 N.X ⊗ 𝟙 Y.X ⊗ Y.one) ≫ (𝟙 N.X ⊗ Y.mul)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ N.X Y.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (𝟙 N.X ⊗ 𝟙 Y.X ⊗ Y.one) ≫ (𝟙 N.X ⊗ Y.mul)
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| f.hom ⊗ 𝟙 Y.X
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (ρ_ (N.X ⊗ Y.X)).inv
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
| (α_ N.X Y.X tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, Mon_.mul_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (ρ_ (N.X ⊗ Y.X)).inv ≫
        (α_ N.X Y.X tensorUnit').hom ≫
          (𝟙 N.X ⊗ (ρ_ Y.X).hom) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
have : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 _ := by pure_coherence
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
⊢ (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
[PROOFSTEP]
pure_coherence
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫
      (ρ_ (N.X ⊗ Y.X)).inv ≫
        (α_ N.X Y.X tensorUnit').hom ≫
          (𝟙 N.X ⊗ (ρ_ Y.X).hom) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 2 4 => rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X tensorUnit').hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X tensorUnit').hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [this]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X tensorUnit').hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| f.hom ⊗ 𝟙 Y.X
[PROOFSTEP]
rw [this]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
⊢ (f.hom ⊗ 𝟙 Y.X) ≫
      colimit.ι (parallelPair (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))) WalkingParallelPair.one =
    (f.hom ⊗ 𝟙 Y.X) ≫ 𝟙 (N.X ⊗ Y.X) ≫ coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
slice_rhs 1 2 => rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (f.hom ⊗ 𝟙 Y.X) ≫ 𝟙 (N.X ⊗ Y.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (f.hom ⊗ 𝟙 Y.X) ≫ 𝟙 (N.X ⊗ Y.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| (f.hom ⊗ 𝟙 Y.X) ≫ 𝟙 (N.X ⊗ Y.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
X Y : Mon_ C
M N : Bimod X Y
f : M ⟶ N
this : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 (N.X ⊗ Y.X)
| coequalizer.π (N.actRight ⊗ 𝟙 Y.X) ((α_ N.X Y.X Y.X).hom ≫ (𝟙 N.X ⊗ Y.mul))
[PROOFSTEP]
rw [Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ tensorHom f (𝟙 (tensorBimod N P)) =
    (associatorBimod M N P).inv ≫ tensorHom (tensorHom f (𝟙 N)) (𝟙 P) ≫ (associatorBimod M' N P).hom
[PROOFSTEP]
dsimp [tensorHom, tensorBimod, associatorBimod]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ Hom.mk
      (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
          (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
          ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
          (_ :
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗
                  (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
          (_ :
            ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                  (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗
                  (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                  (𝟙 M'.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)))) =
    (isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
          (_ :
            (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
              (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
          (_ :
            (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
              (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).inv ≫
      Hom.mk
          (colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M' N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M' N) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_ (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X Y.X
                          P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft)))) ≫
        (isoOfIso (Iso.mk (AssociatorBimod.hom M' N P) (AssociatorBimod.inv M' N P))
            (_ :
              (tensorBimod (tensorBimod M' N) P).actLeft ≫ AssociatorBimod.hom M' N P =
                (𝟙 W.X ⊗ AssociatorBimod.hom M' N P) ≫ (tensorBimod M' (tensorBimod N P)).actLeft)
            (_ :
              (tensorBimod (tensorBimod M' N) P).actRight ≫ AssociatorBimod.hom M' N P =
                (AssociatorBimod.hom M' N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M' (tensorBimod N P)).actRight)).hom
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (Hom.mk
        (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
            ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
            ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
            (_ :
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗
                    (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                  (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
            (_ :
              ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗
                    (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                  (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M'.X ⊗
                      (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft))))).hom =
    ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
            (_ :
              (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
            (_ :
              (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).inv ≫
        Hom.mk
            (colimMap
              (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
                ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
                (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
                ((α_ (TensorBimod.X M' N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M' N) ⊗ P.actLeft))
                ((colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                    𝟙 Y.X) ⊗
                  𝟙 P.X)
                (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 P.X)
                (_ :
                  ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                      ((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        (𝟙 P).hom) =
                    (((Hom.mk
                              (colimMap
                                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                  (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                  (_ :
                                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                  (_ :
                                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                        (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                          𝟙 Y.X) ⊗
                        (𝟙 P).hom) ≫
                      ((mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                        𝟙 P.X))
                (_ :
                  ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                        (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                          P.actLeft)) ≫
                      ((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        (𝟙 P).hom) =
                    (((Hom.mk
                              (colimMap
                                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                  (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                  (_ :
                                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                  (_ :
                                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                        (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                          𝟙 Y.X) ⊗
                        (𝟙 P).hom) ≫
                      (α_ (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X Y.X
                            P.X).hom ≫
                        (𝟙 (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                          P.actLeft)))) ≫
          (isoOfIso (Iso.mk (AssociatorBimod.hom M' N P) (AssociatorBimod.inv M' N P))
              (_ :
                (tensorBimod (tensorBimod M' N) P).actLeft ≫ AssociatorBimod.hom M' N P =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M' N P) ≫ (tensorBimod M' (tensorBimod N P)).actLeft)
              (_ :
                (tensorBimod (tensorBimod M' N) P).actRight ≫ AssociatorBimod.hom M' N P =
                  (AssociatorBimod.hom M' N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M' (tensorBimod N P)).actRight)).hom).hom
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ coequalizer.π (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X)
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
          (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
      (Hom.mk
          (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗
                      (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                    (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗
                      (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                    (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M'.X ⊗
                        (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft))))).hom =
    coequalizer.π (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X)
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
          (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
      ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
              (_ :
                (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
              (_ :
                (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                  (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).inv ≫
          Hom.mk
              (colimMap
                (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
                  ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
                  (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
                  ((α_ (TensorBimod.X M' N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M' N) ⊗ P.actLeft))
                  ((colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                      𝟙 Y.X) ⊗
                    𝟙 P.X)
                  (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                    𝟙 P.X)
                  (_ :
                    ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                        ((Hom.mk
                              (colimMap
                                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                  (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                  (_ :
                                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                  (_ :
                                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                        (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                          (𝟙 P).hom) =
                      (((Hom.mk
                                (colimMap
                                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                    (_ :
                                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                    (_ :
                                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                          (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                            𝟙 Y.X) ⊗
                          (𝟙 P).hom) ≫
                        ((mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                          𝟙 P.X))
                  (_ :
                    ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                          (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                            P.actLeft)) ≫
                        ((Hom.mk
                              (colimMap
                                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                  (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                  (_ :
                                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                  (_ :
                                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                        (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                          (𝟙 P).hom) =
                      (((Hom.mk
                                (colimMap
                                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                    (_ :
                                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                    (_ :
                                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                          (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                            𝟙 Y.X) ⊗
                          (𝟙 P).hom) ≫
                        (α_ (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X Y.X
                              P.X).hom ≫
                          (𝟙 (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                            P.actLeft)))) ≫
            (isoOfIso (Iso.mk (AssociatorBimod.hom M' N P) (AssociatorBimod.inv M' N P))
                (_ :
                  (tensorBimod (tensorBimod M' N) P).actLeft ≫ AssociatorBimod.hom M' N P =
                    (𝟙 W.X ⊗ AssociatorBimod.hom M' N P) ≫ (tensorBimod M' (tensorBimod N P)).actLeft)
                (_ :
                  (tensorBimod (tensorBimod M' N) P).actRight ≫ AssociatorBimod.hom M' N P =
                    (AssociatorBimod.hom M' N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M' (tensorBimod N P)).actRight)).hom).hom
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
      colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
          (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
          ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
          (_ :
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗
                  (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
          (_ :
            ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                  (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗
                  (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
                (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                  (𝟙 M'.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft))) =
    coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
      AssociatorBimod.inv M N P ≫
        colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M' N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M' N) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_ (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X Y.X
                          P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft))) ≫
          AssociatorBimod.hom M' N P
[PROOFSTEP]
slice_lhs 1 2 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
        ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M'.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
        ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M'.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
        ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 (TensorBimod.X N P)) (f.hom ⊗ 𝟙 (TensorBimod.X N P))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (M'.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              (f.hom ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) =
            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P))).hom) ≫
              (α_ M'.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M'.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (f.hom ⊗ 𝟙 (TensorBimod.X N P)) ≫
      colimit.ι
        (parallelPair (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
      AssociatorBimod.inv M N P ≫
        colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M' N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M' N) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_ (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X Y.X
                          P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M' N) (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft))) ≫
          AssociatorBimod.hom M' N P
[PROOFSTEP]
dsimp [TensorBimod.X, AssociatorBimod.inv]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
      colimit.ι
        (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
          ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
            (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        WalkingParallelPair.one =
    coequalizer.π (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
        ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
          (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
      coequalizer.desc (AssociatorBimod.invAux M N P)
          (_ :
            (M.actRight ⊗ 𝟙 (tensorBimod N P).X) ≫ AssociatorBimod.invAux M N P =
              ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) ≫
                AssociatorBimod.invAux M N P) ≫
        colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                      𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                      𝟙 P.X))
              (_ :
                ((α_
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                        P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft))) ≫
          AssociatorBimod.hom M' N P
[PROOFSTEP]
slice_rhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    coequalizer.desc (AssociatorBimod.invAux M N P)
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P).X) ≫ AssociatorBimod.invAux M N P =
          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) ≫ AssociatorBimod.invAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| AssociatorBimod.hom M' N P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    coequalizer.desc (AssociatorBimod.invAux M N P)
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P).X) ≫ AssociatorBimod.invAux M N P =
          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) ≫ AssociatorBimod.invAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| AssociatorBimod.hom M' N P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    coequalizer.desc (AssociatorBimod.invAux M N P)
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N P).X) ≫ AssociatorBimod.invAux M N P =
          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) ≫ AssociatorBimod.invAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| AssociatorBimod.hom M' N P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
      colimit.ι
        (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
          ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
            (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        WalkingParallelPair.one =
    (AssociatorBimod.invAux M N P ≫
        colimMap
          (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
            (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
            ((colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 Y.X) ⊗
              𝟙 P.X)
            (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                  ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
              𝟙 P.X)
            (_ :
              ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                    𝟙 P.X) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                    𝟙 P.X))
            (_ :
              ((α_
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                      P.actLeft)) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  (α_
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                      P.actLeft)))) ≫
      AssociatorBimod.hom M' N P
[PROOFSTEP]
dsimp [AssociatorBimod.invAux, AssociatorBimod.hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
      colimit.ι
        (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
          ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
            (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        WalkingParallelPair.one =
    (((PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X)
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
          coequalizer.desc
            ((α_ M.X N.X P.X).inv ≫
              (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
                  ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
            (_ :
              (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
                  (α_ M.X N.X P.X).inv ≫
                    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                      coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                        ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
                (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
                  (α_ M.X N.X P.X).inv ≫
                    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                      coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                        ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))) ≫
        colimMap
          (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
            (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
            ((colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 Y.X) ⊗
              𝟙 P.X)
            (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                  ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
              𝟙 P.X)
            (_ :
              ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                    𝟙 P.X) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                    𝟙 P.X))
            (_ :
              ((α_
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                      P.actLeft)) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  (α_
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                      P.actLeft)))) ≫
      coequalizer.desc (AssociatorBimod.homAux M' N P)
        (_ :
          ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
            ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
              AssociatorBimod.homAux M' N P)
[PROOFSTEP]
refine' (cancel_epi ((tensorLeft _).map (coequalizer.π _ _))).1 _
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (tensorLeft M.X).map (coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (tensorLeft M.X).map (coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (((PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X)
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
                    ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
              (_ :
                (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
                    (α_ M.X N.X P.X).inv ≫
                      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                        coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
                  (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
                    (α_ M.X N.X P.X).inv ≫
                      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                        coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))) ≫
          colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                      𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                      𝟙 P.X))
              (_ :
                ((α_
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                        P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft)))) ≫
        coequalizer.desc (AssociatorBimod.homAux M' N P)
          (_ :
            ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
              ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
                AssociatorBimod.homAux M' N P)
[PROOFSTEP]
rw [tensorLeft_map]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (((PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X)
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
                    ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
              (_ :
                (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
                    (α_ M.X N.X P.X).inv ≫
                      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                        coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
                  (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
                    (α_ M.X N.X P.X).inv ≫
                      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                        coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))) ≫
          colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
              (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                      𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                          (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                      𝟙 P.X))
              (_ :
                ((α_
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                        P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                                ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫
                                      (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                          Y.X P.X).hom ≫
                      (𝟙
                          (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                              (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                        P.actLeft)))) ≫
        coequalizer.desc (AssociatorBimod.homAux M' N P)
          (_ :
            ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
              ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
                AssociatorBimod.homAux M' N P)
[PROOFSTEP]
slice_rhs 1 3 => rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (PreservesCoequalizer.iso (tensorLeft M.X) (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)))
        (_ :
          (tensorLeft M.X).map (N.actRight ⊗ 𝟙 P.X) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) =
            (tensorLeft M.X).map ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫
              (α_ M.X N.X P.X).inv ≫
                (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
                  coequalizer.π ((tensorBimod M N).actRight ⊗ 𝟙 P.X)
                    ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimMap
    (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
      (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
      ((colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 Y.X) ⊗
        𝟙 P.X)
      (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
            ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
        𝟙 P.X)
      (_ :
        ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                  (TensorBimod.actRight M N)).actRight ⊗
              𝟙 P.X) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                  (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
              𝟙 P.X))
      (_ :
        ((α_
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                P.actLeft)) ≫
            ((Hom.mk
                  (colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                      (f.hom ⊗ 𝟙 N.X)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                          ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
              (𝟙 P).hom) =
          (((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                𝟙 Y.X) ⊗
              (𝟙 P).hom) ≫
            (α_
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                  Y.X P.X).hom ≫
              (𝟙
                  (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                      (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                P.actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
[PROOFSTEP]
rw [id_tensor_π_preserves_coequalizer_inv_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (((α_ M.X N.X P.X).inv ≫
          (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
            coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))) ≫
        colimMap
          (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
            (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
            ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
              (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
            ((colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                    (f.hom ⊗ 𝟙 N.X)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                        ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
                𝟙 Y.X) ⊗
              𝟙 P.X)
            (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                  ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
              𝟙 P.X)
            (_ :
              ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗
                    𝟙 P.X) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                    𝟙 P.X))
            (_ :
              ((α_
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                      P.actLeft)) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                            ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))
                              ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  (α_
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                        Y.X P.X).hom ≫
                    (𝟙
                        (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                            (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                      P.actLeft)))) ≫
      coequalizer.desc (AssociatorBimod.homAux M' N P)
        (_ :
          ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
            ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
              AssociatorBimod.homAux M' N P)
[PROOFSTEP]
slice_rhs 3 4 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
        (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                    (TensorBimod.actRight M N)).actRight ⊗
                𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                    (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                𝟙 P.X))
        (_ :
          ((α_
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                  P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                  P.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
        (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                    (TensorBimod.actRight M N)).actRight ⊗
                𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                    (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                𝟙 P.X))
        (_ :
          ((α_
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                  P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                  P.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ⊗ P.actLeft))
        (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                    ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                  ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) (TensorBimod.actLeft M N)
                    (TensorBimod.actRight M N)).actRight ⊗
                𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                    (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).actRight ⊗
                𝟙 P.X))
        (_ :
          ((α_
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗
                  P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                        (f.hom ⊗ 𝟙 N.X)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                            ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X)
                          (f.hom ⊗ 𝟙 N.X)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X
                    Y.X P.X).hom ≫
                (𝟙
                    (mk (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                        (TensorBimod.actLeft M' N) (TensorBimod.actRight M' N)).X ⊗
                  P.actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
        ((colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
                  ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
                      ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
              𝟙 P.X) ≫
            colimit.ι
              (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
                ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                  (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
              WalkingParallelPair.one) ≫
          coequalizer.desc (AssociatorBimod.homAux M' N P)
            (_ :
              ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
                ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
                  AssociatorBimod.homAux M' N P)
[PROOFSTEP]
slice_rhs 2 3 => rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
      𝟙 P.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
      𝟙 P.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ((f.hom ⊗ 𝟙 X.X) ⊗ 𝟙 N.X) (f.hom ⊗ 𝟙 N.X)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ (f.hom ⊗ (𝟙 N).hom) = ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (M'.actRight ⊗ 𝟙 N.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ (f.hom ⊗ (𝟙 N).hom) =
              ((f.hom ⊗ 𝟙 X.X) ⊗ (𝟙 N).hom) ≫ (α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗
      𝟙 P.X)
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
      ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
        (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc (AssociatorBimod.homAux M' N P)
    (_ :
      ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
        ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      (((f.hom ⊗ 𝟙 N.X) ≫
              colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                WalkingParallelPair.one ⊗
            𝟙 P.X) ≫
          colimit.ι
            (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
              ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
                (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
            WalkingParallelPair.one) ≫
        coequalizer.desc (AssociatorBimod.homAux M' N P)
          (_ :
            ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
              ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
                AssociatorBimod.homAux M' N P)
[PROOFSTEP]
slice_rhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
      (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.homAux M' N P)
      (_ :
        ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
          ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
            AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
      (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.homAux M' N P)
      (_ :
        ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
          ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
            AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
      (parallelPair (TensorBimod.actRight M' N ⊗ 𝟙 P.X)
        ((α_ (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) Y.X P.X).hom ≫
          (𝟙 (coequalizer (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))) ⊗ P.actLeft)))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.homAux M' N P)
      (_ :
        ((tensorBimod M' N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M' N P =
          ((α_ (tensorBimod M' N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M' N).X ⊗ P.actLeft)) ≫
            AssociatorBimod.homAux M' N P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      ((f.hom ⊗ 𝟙 N.X) ≫
            colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
              WalkingParallelPair.one ⊗
          𝟙 P.X) ≫
        AssociatorBimod.homAux M' N P
[PROOFSTEP]
dsimp [AssociatorBimod.homAux]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      ((f.hom ⊗ 𝟙 N.X) ≫
            colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
              WalkingParallelPair.one ⊗
          𝟙 P.X) ≫
        (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv ≫
          coequalizer.desc
            ((α_ M'.X N.X P.X).hom ≫
              (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
                  ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
            (_ :
              (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
                  (α_ M'.X N.X P.X).hom ≫
                    (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
                (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
                  (α_ M'.X N.X P.X).hom ≫
                    (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
[PROOFSTEP]
slice_rhs 2 2 => rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc
    ((α_ M'.X N.X P.X).hom ≫
      (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
        coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    (_ :
      (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
        (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc
    ((α_ M'.X N.X P.X).hom ≫
      (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
        coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    (_ :
      (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
        (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ≫
      colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
    𝟙 P.X
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.desc
    ((α_ M'.X N.X P.X).hom ≫
      (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
        coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    (_ :
      (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
        (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
          (α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      ((((f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X) ≫
            (colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
                WalkingParallelPair.one ⊗
              𝟙 P.X)) ≫
          (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X)
              ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv) ≫
        coequalizer.desc
          ((α_ M'.X N.X P.X).hom ≫
            (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
              coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
                ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          (_ :
            (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
                (α_ M'.X N.X P.X).hom ≫
                  (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                    coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                      ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
              (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
                (α_ M'.X N.X P.X).hom ≫
                  (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                    coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                      ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
[PROOFSTEP]
slice_rhs 3 5 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M'.X N.X P.X).hom ≫
          (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M'.X N.X P.X).hom ≫
          (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (colimit.ι (parallelPair (M'.actRight ⊗ 𝟙 N.X) ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)))
        WalkingParallelPair.one ⊗
      𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M'.actRight ⊗ 𝟙 N.X)
          ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M'.X N.X P.X).hom ≫
          (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M'.actRight ⊗ 𝟙 N.X) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M'.X X.X N.X).hom ≫ (𝟙 M'.X ⊗ N.actLeft)) ≫
              (α_ M'.X N.X P.X).hom ≫
                (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M'.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M'.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M'.X ⊗ (tensorBimod N P).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      ((f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X) ≫
        (α_ M'.X N.X P.X).hom ≫
          (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
slice_rhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| ((f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X) ≫ (α_ M'.X N.X P.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| ((f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X) ≫ (α_ M'.X N.X P.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| ((f.hom ⊗ 𝟙 N.X) ⊗ 𝟙 P.X) ≫ (α_ M'.X N.X P.X).hom
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    (α_ M.X N.X P.X).inv ≫
      (((α_ M.X N.X P.X).hom ≫ (f.hom ⊗ 𝟙 N.X ⊗ 𝟙 P.X)) ≫
          (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
          ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
slice_rhs 1 3 => rw [Iso.inv_hom_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv ≫ (α_ M.X N.X P.X).hom ≫ (f.hom ⊗ 𝟙 N.X ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv ≫ (α_ M.X N.X P.X).hom ≫ (f.hom ⊗ 𝟙 N.X ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (α_ M.X N.X P.X).inv ≫ (α_ M.X N.X P.X).hom ≫ (f.hom ⊗ 𝟙 N.X ⊗ 𝟙 P.X)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| 𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
    ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
rw [Iso.inv_hom_id_assoc, MonoidalCategory.tensor_id]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
⊢ (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
      (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
        colimit.ι
          (parallelPair
            (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
            ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
              (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
          WalkingParallelPair.one =
    ((f.hom ⊗ 𝟙 (N.X ⊗ P.X)) ≫
        (𝟙 M'.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))) ≫
      coequalizer.π (M'.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M'.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M'.X ⊗ TensorBimod.actLeft N P))
[PROOFSTEP]
slice_lhs 1 2 => rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (f.hom ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M M' : Bimod W X
f : M ⟶ M'
N : Bimod X Y
P : Bimod Y Z
| colimit.ι
    (parallelPair (M'.actRight ⊗ 𝟙 (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))))
      ((α_ M'.X X.X (coequalizer (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)))).hom ≫
        (𝟙 M'.X ⊗ TensorBimod.actLeft N P)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ tensorHom (tensorHom (𝟙 M) f) (𝟙 P) =
    (associatorBimod M N P).hom ≫ tensorHom (𝟙 M) (tensorHom f (𝟙 P)) ≫ (associatorBimod M N' P).inv
[PROOFSTEP]
dsimp [tensorHom, tensorBimod, associatorBimod]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ Hom.mk
      (colimMap
        (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
          (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
          ((colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                  ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
              𝟙 Y.X) ⊗
            𝟙 P.X)
          (colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
            𝟙 P.X)
          (_ :
            ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                ((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  (𝟙 P).hom) =
              (((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    𝟙 Y.X) ⊗
                  (𝟙 P).hom) ≫
                ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
          (_ :
            ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                ((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  (𝟙 P).hom) =
              (((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    𝟙 Y.X) ⊗
                  (𝟙 P).hom) ≫
                (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗
                    P.actLeft)))) =
    (isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
          (_ :
            (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
              (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
          (_ :
            (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
              (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
      Hom.mk
          (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
        (isoOfIso (Iso.mk (AssociatorBimod.hom M N' P) (AssociatorBimod.inv M N' P))
            (_ :
              (tensorBimod (tensorBimod M N') P).actLeft ≫ AssociatorBimod.hom M N' P =
                (𝟙 W.X ⊗ AssociatorBimod.hom M N' P) ≫ (tensorBimod M (tensorBimod N' P)).actLeft)
            (_ :
              (tensorBimod (tensorBimod M N') P).actRight ≫ AssociatorBimod.hom M N' P =
                (AssociatorBimod.hom M N' P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N' P)).actRight)).inv
[PROOFSTEP]
ext
[GOAL]
case h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (Hom.mk
        (colimMap
          (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
            ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
            (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
            ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
            ((colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                    (𝟙 M.X ⊗ f.hom)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                        (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                        (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
                𝟙 Y.X) ⊗
              𝟙 P.X)
            (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                  ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
              𝟙 P.X)
            (_ :
              ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                    (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                  ((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    (𝟙 P).hom) =
                (((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                      𝟙 Y.X) ⊗
                    (𝟙 P).hom) ≫
                  (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                    (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗
                      P.actLeft))))).hom =
    ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
            (_ :
              (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
            (_ :
              (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
        Hom.mk
            (colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
                (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
                ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
                ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                  colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
                (𝟙 M.X ⊗
                  colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
                (_ :
                  (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                      ((𝟙 M).hom ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                      (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                      (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                      (M.actRight ⊗
                        𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
                (_ :
                  ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                        (𝟙 M.X ⊗
                          (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                      ((𝟙 M).hom ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                      (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                        (Hom.mk
                            (colimMap
                              (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                (_ :
                                  (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                (_ :
                                  ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                    ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                      (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                      (α_ M.X X.X
                            (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                        (𝟙 M.X ⊗
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
          (isoOfIso (Iso.mk (AssociatorBimod.hom M N' P) (AssociatorBimod.inv M N' P))
              (_ :
                (tensorBimod (tensorBimod M N') P).actLeft ≫ AssociatorBimod.hom M N' P =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M N' P) ≫ (tensorBimod M (tensorBimod N' P)).actLeft)
              (_ :
                (tensorBimod (tensorBimod M N') P).actRight ≫ AssociatorBimod.hom M N' P =
                  (AssociatorBimod.hom M N' P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N' P)).actRight)).inv).hom
[PROOFSTEP]
apply coequalizer.hom_ext
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ coequalizer.π ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X)
        ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
          (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
      (Hom.mk
          (colimMap
            (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
              (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
              ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
              ((colimMap
                    (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                      (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                      (𝟙 M.X ⊗ f.hom)
                      (_ :
                        (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                      (_ :
                        ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
                  𝟙 Y.X) ⊗
                𝟙 P.X)
              (colimMap
                  (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                    (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                    (𝟙 M.X ⊗ f.hom)
                    (_ :
                      (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                        (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                    (_ :
                      ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                        (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
                𝟙 P.X)
              (_ :
                ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                                ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                                      (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                    ((Hom.mk
                          (colimMap
                            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                              (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                              (_ :
                                (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                              (_ :
                                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                      (𝟙 P).hom) =
                  (((Hom.mk
                            (colimMap
                              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                                (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                                ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                                (_ :
                                  (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                                (_ :
                                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫
                                      (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                        𝟙 Y.X) ⊗
                      (𝟙 P).hom) ≫
                    (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X
                          P.X).hom ≫
                      (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗
                        P.actLeft))))).hom =
    coequalizer.π ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X)
        ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
          (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
      ((isoOfIso (Iso.mk (AssociatorBimod.hom M N P) (AssociatorBimod.inv M N P))
              (_ :
                (tensorBimod (tensorBimod M N) P).actLeft ≫ AssociatorBimod.hom M N P =
                  (𝟙 W.X ⊗ AssociatorBimod.hom M N P) ≫ (tensorBimod M (tensorBimod N P)).actLeft)
              (_ :
                (tensorBimod (tensorBimod M N) P).actRight ≫ AssociatorBimod.hom M N P =
                  (AssociatorBimod.hom M N P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N P)).actRight)).hom ≫
          Hom.mk
              (colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                  ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
                  (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
                  ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
                  ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                    colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
                  (𝟙 M.X ⊗
                    colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
                  (_ :
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                        ((𝟙 M).hom ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                        (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                        (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                        (M.actRight ⊗
                          𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
                  (_ :
                    ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                          (𝟙 M.X ⊗
                            (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                        ((𝟙 M).hom ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                        (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                          (Hom.mk
                              (colimMap
                                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                                  (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                                  (_ :
                                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                                  (_ :
                                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                        (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                        (α_ M.X X.X
                              (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                          (𝟙 M.X ⊗
                            (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P)
                                (TensorBimod.actRight N' P)).actLeft)))) ≫
            (isoOfIso (Iso.mk (AssociatorBimod.hom M N' P) (AssociatorBimod.inv M N' P))
                (_ :
                  (tensorBimod (tensorBimod M N') P).actLeft ≫ AssociatorBimod.hom M N' P =
                    (𝟙 W.X ⊗ AssociatorBimod.hom M N' P) ≫ (tensorBimod M (tensorBimod N' P)).actLeft)
                (_ :
                  (tensorBimod (tensorBimod M N') P).actRight ≫ AssociatorBimod.hom M N' P =
                    (AssociatorBimod.hom M N' P ⊗ 𝟙 Z.X) ≫ (tensorBimod M (tensorBimod N' P)).actRight)).inv).hom
[PROOFSTEP]
dsimp
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      colimMap
        (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft))
          (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
          ((colimMap
                (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                  ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                  (_ :
                    (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                  (_ :
                    ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                      (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
              𝟙 Y.X) ⊗
            𝟙 P.X)
          (colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
            𝟙 P.X)
          (_ :
            ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
                ((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  (𝟙 P).hom) =
              (((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    𝟙 Y.X) ⊗
                  (𝟙 P).hom) ≫
                ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
          (_ :
            ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
                ((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  (𝟙 P).hom) =
              (((Hom.mk
                        (colimMap
                          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                            (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))
                            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                            (_ :
                              (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                            (_ :
                              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                    𝟙 Y.X) ⊗
                  (𝟙 P).hom) ≫
                (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                  (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗ P.actLeft))) =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      AssociatorBimod.hom M N P ≫
        colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft))) ≫
          AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_lhs 1 2 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
              ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗ P.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
              ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗ P.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    colimMap
      (parallelPairHom (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft))
        ((colimMap
              (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
                ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
                (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                (_ :
                  ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                    (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
            𝟙 Y.X) ⊗
          𝟙 P.X)
        (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
              ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
          𝟙 P.X)
        (_ :
          ((mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).actRight ⊗ 𝟙 P.X) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              ((mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).actRight ⊗ 𝟙 P.X))
        (_ :
          ((α_ (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N) (TensorBimod.actLeft M N) (TensorBimod.actRight M N)).X ⊗ P.actLeft)) ≫
              ((Hom.mk
                    (colimMap
                      (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                        (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                        (𝟙 M.X ⊗ f.hom)
                        (_ :
                          (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                        (_ :
                          ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                (𝟙 P).hom) =
            (((Hom.mk
                      (colimMap
                        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))
                          (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom)
                          (𝟙 M.X ⊗ f.hom)
                          (_ :
                            (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
                          (_ :
                            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))))).hom ⊗
                  𝟙 Y.X) ⊗
                (𝟙 P).hom) ≫
              (α_ (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X Y.X P.X).hom ≫
                (𝟙 (mk (TensorBimod.X M N') (TensorBimod.actLeft M N') (TensorBimod.actRight M N')).X ⊗ P.actLeft)))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
            ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      AssociatorBimod.hom M N P ≫
        colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft))) ≫
          AssociatorBimod.inv M N' P
[PROOFSTEP]
dsimp [AssociatorBimod.hom]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
            ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
        ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
      coequalizer.desc (AssociatorBimod.homAux M N P)
          (_ :
            ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
              ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫
                AssociatorBimod.homAux M N P) ≫
        colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft))) ≫
          AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_rhs 1 2 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (TensorBimod.actRight M N ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N) Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N) ⊗ P.actLeft)) ≫
    coequalizer.desc (AssociatorBimod.homAux M N P)
      (_ :
        ((tensorBimod M N).actRight ⊗ 𝟙 P.X) ≫ AssociatorBimod.homAux M N P =
          ((α_ (tensorBimod M N).X Y.X P.X).hom ≫ (𝟙 (tensorBimod M N).X ⊗ P.actLeft)) ≫ AssociatorBimod.homAux M N P)
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
            ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (AssociatorBimod.homAux M N P ≫
        colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
            ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
            ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (_ :
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
            (_ :
              ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
      AssociatorBimod.inv M N' P
[PROOFSTEP]
dsimp [AssociatorBimod.homAux]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
            ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
            (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
            (_ :
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
              ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
          coequalizer.desc
            ((α_ M.X N.X P.X).hom ≫
              (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                  ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
            (_ :
              (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                  (α_ M.X N.X P.X).hom ≫
                    (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                  (α_ M.X N.X P.X).hom ≫
                    (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                      coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                        ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
        colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
            ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
            ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (_ :
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
            (_ :
              ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
      AssociatorBimod.inv M N' P
[PROOFSTEP]
refine' (cancel_epi ((tensorRight _).map (coequalizer.π _ _))).1 _
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (tensorRight P.X).map (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ≫
      (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
              ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
          𝟙 P.X) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
            ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
          WalkingParallelPair.one =
    (tensorRight P.X).map (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))) ≫
      (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                    ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
              (_ :
                (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                  (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
          colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
        AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [tensorRight_map]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
              ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
              (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
              (_ :
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
          𝟙 P.X) ≫
        colimit.ι
          (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
            ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
          WalkingParallelPair.one =
    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                    ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
              (_ :
                (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                  (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
          colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
        AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_lhs 1 2 => rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
          ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
      𝟙 P.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
          ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
      𝟙 P.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (colimMap
        (parallelPairHom (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) (M.actRight ⊗ 𝟙 N'.X)
          ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)) ((𝟙 M.X ⊗ 𝟙 X.X) ⊗ f.hom) (𝟙 M.X ⊗ f.hom)
          (_ : (M.actRight ⊗ 𝟙 N.X) ≫ ((𝟙 M).hom ⊗ f.hom) = (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (M.actRight ⊗ 𝟙 N'.X))
          (_ :
            ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫ ((𝟙 M).hom ⊗ f.hom) =
              (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗ f.hom) ≫ (α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft))) ⊗
      𝟙 P.X)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
      ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
    WalkingParallelPair.one
[PROOFSTEP]
rw [← comp_tensor_id, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ ((𝟙 M.X ⊗ f.hom) ≫
          colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)))
            WalkingParallelPair.one ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
      (((PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X)
                ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
            coequalizer.desc
              ((α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
                    ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
              (_ :
                (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
                  (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
                    (α_ M.X N.X P.X).hom ≫
                      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                        coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                          ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))) ≫
          colimMap
            (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
              (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
              ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (𝟙 M.X ⊗
                colimMap
                  (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                    (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                    (f.hom ⊗ 𝟙 P.X)
                    (_ :
                      (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                    (_ :
                      ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                        ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
              (_ :
                (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
              (_ :
                ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                      (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                    ((𝟙 M).hom ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                  (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                      (Hom.mk
                          (colimMap
                            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                              (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                              ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                              (_ :
                                (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                              (_ :
                                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫
                                    (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                    (α_ M.X X.X
                          (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                      (𝟙 M.X ⊗
                        (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
        AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_rhs 1 3 => rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (coequalizer.π (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ⊗ 𝟙 P.X) ≫
    (PreservesCoequalizer.iso (tensorRight P.X) (M.actRight ⊗ 𝟙 N.X) ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft))).inv ≫
      coequalizer.desc
        ((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)))
        (_ :
          (tensorRight P.X).map (M.actRight ⊗ 𝟙 N.X) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)) =
            (tensorRight P.X).map ((α_ M.X X.X N.X).hom ≫ (𝟙 M.X ⊗ N.actLeft)) ≫
              (α_ M.X N.X P.X).hom ≫
                (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
                  coequalizer.π (M.actRight ⊗ 𝟙 (tensorBimod N P).X)
                    ((α_ M.X X.X (tensorBimod N P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N P).actLeft)))
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimMap
    (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
      ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (𝟙 M.X ⊗
        colimMap
          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
            ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
            (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
            (_ :
              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
      (_ :
        (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
      (_ :
        ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
            ((𝟙 M).hom ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
          (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
              (Hom.mk
                  (colimMap
                    (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                      (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                      (f.hom ⊗ 𝟙 P.X)
                      (_ :
                        (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                      (_ :
                        ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                          ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
            (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
              (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
[PROOFSTEP]
rw [π_tensor_id_preserves_coequalizer_inv_desc]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ ((𝟙 M.X ⊗ f.hom) ≫
          colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)))
            WalkingParallelPair.one ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (((α_ M.X N.X P.X).hom ≫
          (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
            coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
              ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))) ≫
        colimMap
          (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
            ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P))
            (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
            ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
            ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
            (_ :
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
            (_ :
              ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                    (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
                  ((𝟙 M).hom ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
                (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                    (Hom.mk
                        (colimMap
                          (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                            (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                            (_ :
                              (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                            (_ :
                              ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                                ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
                  (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                    (𝟙 M.X ⊗
                      (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))) ≫
      AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_rhs 3 4 => rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
        ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
        ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| coequalizer.π (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
      ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) ≫
    colimMap
      (parallelPairHom (M.actRight ⊗ 𝟙 (TensorBimod.X N P))
        ((α_ M.X X.X (TensorBimod.X N P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N P)) (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
        ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P))
        ((𝟙 M.X ⊗ 𝟙 X.X) ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (𝟙 M.X ⊗
          colimMap
            (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
              ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
              (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
              (_ :
                ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                  ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
        (_ :
          (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (M.actRight ⊗ 𝟙 (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X))
        (_ :
          ((α_ M.X X.X (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N P) (TensorBimod.actLeft N P) (TensorBimod.actRight N P)).actLeft)) ≫
              ((𝟙 M).hom ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) =
            (((𝟙 M).hom ⊗ 𝟙 X.X) ⊗
                (Hom.mk
                    (colimMap
                      (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
                        (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X)
                        (f.hom ⊗ 𝟙 P.X)
                        (_ :
                          (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                        (_ :
                          ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                            ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))).hom) ≫
              (α_ M.X X.X (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).X).hom ≫
                (𝟙 M.X ⊗ (mk (TensorBimod.X N' P) (TensorBimod.actLeft N' P) (TensorBimod.actRight N' P)).actLeft)))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| 𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))
[PROOFSTEP]
rw [ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ ((𝟙 M.X ⊗ f.hom) ≫
          colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)))
            WalkingParallelPair.one ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
        ((𝟙 M.X ⊗
              colimMap
                (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
                  ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
                  (_ :
                    (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
                  (_ :
                    ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
                      ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)))) ≫
            colimit.ι
              (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
                ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
              WalkingParallelPair.one) ≫
          AssociatorBimod.inv M N' P
[PROOFSTEP]
slice_rhs 2 3 => rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
          ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
          ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (𝟙 M.X ⊗ coequalizer.π (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft))) ≫
    (𝟙 M.X ⊗
      colimMap
        (parallelPairHom (N.actRight ⊗ 𝟙 P.X) ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) (N'.actRight ⊗ 𝟙 P.X)
          ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)) ((f.hom ⊗ 𝟙 Y.X) ⊗ 𝟙 P.X) (f.hom ⊗ 𝟙 P.X)
          (_ : (N.actRight ⊗ 𝟙 P.X) ≫ (f.hom ⊗ (𝟙 P).hom) = ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (N'.actRight ⊗ 𝟙 P.X))
          (_ :
            ((α_ N.X Y.X P.X).hom ≫ (𝟙 N.X ⊗ P.actLeft)) ≫ (f.hom ⊗ (𝟙 P).hom) =
              ((f.hom ⊗ 𝟙 Y.X) ⊗ (𝟙 P).hom) ≫ (α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft))))
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
    (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
      ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
    WalkingParallelPair.one
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| AssociatorBimod.inv M N' P
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
[PROOFSTEP]
rw [← id_tensor_comp, ι_colimMap, parallelPairHom_app_one]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ ((𝟙 M.X ⊗ f.hom) ≫
          colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)))
            WalkingParallelPair.one ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      ((𝟙 M.X ⊗
            (f.hom ⊗ 𝟙 P.X) ≫
              colimit.ι (parallelPair (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)))
                WalkingParallelPair.one) ≫
          colimit.ι
            (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
            WalkingParallelPair.one) ≫
        AssociatorBimod.inv M N' P
[PROOFSTEP]
dsimp [AssociatorBimod.inv]
[GOAL]
case h.h
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
⊢ ((𝟙 M.X ⊗ f.hom) ≫
          colimit.ι (parallelPair (M.actRight ⊗ 𝟙 N'.X) ((α_ M.X X.X N'.X).hom ≫ (𝟙 M.X ⊗ N'.actLeft)))
            WalkingParallelPair.one ⊗
        𝟙 P.X) ≫
      colimit.ι
        (parallelPair (TensorBimod.actRight M N' ⊗ 𝟙 P.X)
          ((α_ (TensorBimod.X M N') Y.X P.X).hom ≫ (𝟙 (TensorBimod.X M N') ⊗ P.actLeft)))
        WalkingParallelPair.one =
    (α_ M.X N.X P.X).hom ≫
      ((𝟙 M.X ⊗
            (f.hom ⊗ 𝟙 P.X) ≫
              colimit.ι (parallelPair (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)))
                WalkingParallelPair.one) ≫
          colimit.ι
            (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
              ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
            WalkingParallelPair.one) ≫
        coequalizer.desc (AssociatorBimod.invAux M N' P)
          (_ :
            (M.actRight ⊗ 𝟙 (tensorBimod N' P).X) ≫ AssociatorBimod.invAux M N' P =
              ((α_ M.X X.X (tensorBimod N' P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N' P).actLeft)) ≫
                AssociatorBimod.invAux M N' P)
[PROOFSTEP]
slice_rhs 3 4 => rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
      (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
        ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.invAux M N' P)
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N' P).X) ≫ AssociatorBimod.invAux M N' P =
          ((α_ M.X X.X (tensorBimod N' P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N' P).actLeft)) ≫
            AssociatorBimod.invAux M N' P)
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| (α_ M.X N.X P.X).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| 𝟙 M.X ⊗
    (f.hom ⊗ 𝟙 P.X) ≫
      colimit.ι (parallelPair (N'.actRight ⊗ 𝟙 P.X) ((α_ N'.X Y.X P.X).hom ≫ (𝟙 N'.X ⊗ P.actLeft)))
        WalkingParallelPair.one
[PROOFSTEP]
rw [coequalizer.π_desc]
[GOAL]
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
A B : Mon_ C
M✝ : Bimod A B
inst✝² : HasCoequalizers C
inst✝¹ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorLeft X)
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
W X Y Z : Mon_ C
M : Bimod W X
N N' : Bimod X Y
f : N ⟶ N'
P : Bimod Y Z
| colimit.ι
      (parallelPair (M.actRight ⊗ 𝟙 (TensorBimod.X N' P))
        ((α_ M.X X.X (TensorBimod.X N' P)).hom ≫ (𝟙 M.X ⊗ TensorBimod.actLeft N' P)))
      WalkingParallelPair.one ≫
    coequalizer.desc (AssociatorBimod.invAux M N' P)
      (_ :
        (M.actRight ⊗ 𝟙 (tensorBimod N' P).X) ≫ AssociatorBimod.invAux M N' P =
          ((α_ M.X X.X (tensorBimod N' P).X).hom ≫ (𝟙 M.X ⊗ (tensorBimod N' P).actLeft)) ≫
            Associat
[cell cut: 3060447 characters, first 2000000 kept]