Theorem: CategoryTheory.LaxMonoidalFunctor.mapMon_obj_mul
File: Mathlib/CategoryTheory/Monoidal/Mon_.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ (F.ε ≫ F.map A.one) ▷ F.obj A.X ≫ F.μ A.X A.X ≫ F.map A.mul = (λ_ (F.obj A.X)).hom
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.ε ▷ F.obj A.X ≫ F.μ (𝟙_ C) A.X ≫ F.map (A.one ▷ A.X) ≫ F.map A.mul =
    F.ε ▷ F.obj A.X ≫ F.μ (𝟙_ C) A.X ≫ F.map (λ_ A.X).hom
tactic: simp_rw [comp_whiskerRight, Category.assoc, μ_natural_left_assoc, left_unitality]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.ε ▷ F.obj A.X ≫ F.μ (𝟙_ C) A.X ≫ F.map (A.one ▷ A.X) ≫ F.map A.mul =
    F.ε ▷ F.obj A.X ≫ F.μ (𝟙_ C) A.X ≫ F.map (λ_ A.X).hom
state_after: no goals
tactic: slice_lhs 3 4 => rw [← F.toFunctor.map_comp, A.one_mul]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.obj A.X ◁ (F.ε ≫ F.map A.one) ≫ F.μ A.X A.X ≫ F.map A.mul = (ρ_ (F.obj A.X)).hom
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.obj A.X ◁ F.ε ≫ F.μ A.X (𝟙_ C) ≫ F.map (A.X ◁ A.one) ≫ F.map A.mul =
    F.obj A.X ◁ F.ε ≫ F.μ A.X (𝟙_ C) ≫ F.map (ρ_ A.X).hom
tactic: simp_rw [MonoidalCategory.whiskerLeft_comp, Category.assoc, μ_natural_right_assoc,
          right_unitality]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.obj A.X ◁ F.ε ≫ F.μ A.X (𝟙_ C) ≫ F.map (A.X ◁ A.one) ≫ F.map A.mul =
    F.obj A.X ◁ F.ε ≫ F.μ A.X (𝟙_ C) ≫ F.map (ρ_ A.X).hom
state_after: no goals
tactic: slice_lhs 3 4 => rw [← F.toFunctor.map_comp, A.mul_one]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ (F.μ A.X A.X ≫ F.map A.mul) ▷ F.obj A.X ≫ F.μ A.X A.X ≫ F.map A.mul =
    (α_ (F.obj A.X) (F.obj A.X) (F.obj A.X)).hom ≫ F.obj A.X ◁ (F.μ A.X A.X ≫ F.map A.mul) ≫ F.μ A.X A.X ≫ F.map A.mul
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.μ A.X A.X ▷ F.obj A.X ≫ F.μ (A.X ⊗ A.X) A.X ≫ F.map (A.mul ▷ A.X) ≫ F.map A.mul =
    (α_ (F.obj A.X) (F.obj A.X) (F.obj A.X)).hom ≫
      F.obj A.X ◁ F.μ A.X A.X ≫ F.μ A.X (A.X ⊗ A.X) ≫ F.map (A.X ◁ A.mul) ≫ F.map A.mul
tactic: simp_rw [comp_whiskerRight, Category.assoc, μ_natural_left_assoc,
          MonoidalCategory.whiskerLeft_comp, Category.assoc, μ_natural_right_assoc]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.μ A.X A.X ▷ F.obj A.X ≫ F.μ (A.X ⊗ A.X) A.X ≫ F.map (A.mul ▷ A.X) ≫ F.map A.mul =
    (α_ (F.obj A.X) (F.obj A.X) (F.obj A.X)).hom ≫
      F.obj A.X ◁ F.μ A.X A.X ≫ F.μ A.X (A.X ⊗ A.X) ≫ F.map (A.X ◁ A.mul) ≫ F.map A.mul
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.μ A.X A.X ▷ F.obj A.X ≫ F.μ (A.X ⊗ A.X) A.X ≫ F.map ((α_ A.X A.X A.X).hom ≫ A.X ◁ A.mul ≫ A.mul) =
    (α_ (F.obj A.X) (F.obj A.X) (F.obj A.X)).hom ≫
      F.obj A.X ◁ F.μ A.X A.X ≫ F.μ A.X (A.X ⊗ A.X) ≫ F.map (A.X ◁ A.mul) ≫ F.map A.mul
tactic: slice_lhs 3 4 => rw [← F.toFunctor.map_comp, A.mul_assoc]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
A : Mon_ C
⊢ F.μ A.X A.X ▷ F.obj A.X ≫ F.μ (A.X ⊗ A.X) A.X ≫ F.map ((α_ A.X A.X A.X).hom ≫ A.X ◁ A.mul ≫ A.mul) =
    (α_ (F.obj A.X) (F.obj A.X) (F.obj A.X)).hom ≫
      F.obj A.X ◁ F.μ A.X A.X ≫ F.μ A.X (A.X ⊗ A.X) ≫ F.map (A.X ◁ A.mul) ≫ F.map A.mul
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ ((fun A =>
            { X := F.obj A.X, one := F.ε ≫ F.map A.one, mul := F.μ A.X A.X ≫ F.map A.mul, one_mul := ⋯, mul_one := ⋯,
              mul_assoc := ⋯ })
          X✝).one ≫
      F.map f.hom =
    ((fun A =>
          { X := F.obj A.X, one := F.ε ≫ F.map A.one, mul := F.μ A.X A.X ≫ F.map A.mul, one_mul := ⋯, mul_one := ⋯,
            mul_assoc := ⋯ })
        Y✝).one
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ (F.ε ≫ F.map X✝.one) ≫ F.map f.hom = F.ε ≫ F.map Y✝.one
tactic: dsimp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ (F.ε ≫ F.map X✝.one) ≫ F.map f.hom = F.ε ≫ F.map Y✝.one
state_after: no goals
tactic: rw [Category.assoc, ← F.toFunctor.map_comp, f.one_hom]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ ((fun A =>
            { X := F.obj A.X, one := F.ε ≫ F.map A.one, mul := F.μ A.X A.X ≫ F.map A.mul, one_mul := ⋯, mul_one := ⋯,
              mul_assoc := ⋯ })
          X✝).mul ≫
      F.map f.hom =
    (F.map f.hom ⊗ F.map f.hom) ≫
      ((fun A =>
            { X := F.obj A.X, one := F.ε ≫ F.map A.one, mul := F.μ A.X A.X ≫ F.map A.mul, one_mul := ⋯, mul_one := ⋯,
              mul_assoc := ⋯ })
          Y✝).mul
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ (F.μ X✝.X X✝.X ≫ F.map X✝.mul) ≫ F.map f.hom = (F.map f.hom ⊗ F.map f.hom) ≫ F.μ Y✝.X Y✝.X ≫ F.map Y✝.mul
tactic: dsimp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X✝ Y✝ : Mon_ C
f : X✝ ⟶ Y✝
⊢ (F.μ X✝.X X✝.X ≫ F.map X✝.mul) ≫ F.map f.hom = (F.map f.hom ⊗ F.map f.hom) ≫ F.μ Y✝.X Y✝.X ≫ F.map Y✝.mul
state_after: no goals
tactic: rw [Category.assoc, F.μ_natural_assoc, ← F.toFunctor.map_comp, ← F.toFunctor.map_comp,
          f.mul_hom]