Theorem: CategoryTheory.Pseudofunctor.comp_mapComp
File: Mathlib/CategoryTheory/Bicategory/Functor/Pseudofunctor.lean

Proof steps:
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f : a✝ ⟶ b✝
η : b✝ ⟶ c✝
⊢ ∀ {h : b✝ ⟶ c✝} (η_1 : η ⟶ h),
    (F.comp G.toPrelaxFunctor).map₂ (f ◁ η_1) =
      ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f η).hom ≫
        (F.comp G.toPrelaxFunctor).map f ◁ (F.comp G.toPrelaxFunctor).map₂ η_1 ≫
          ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f h).inv
state_after: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f : a✝ ⟶ b✝
η : b✝ ⟶ c✝
⊢ ∀ {h : b✝ ⟶ c✝} (η_1 : η ⟶ h),
    G.map₂ (F.map₂ (f ◁ η_1)) =
      (G.map₂ (F.mapComp f η).hom ≫ (G.mapComp (F.map f) (F.map η)).hom) ≫
        G.map (F.map f) ◁ G.map₂ (F.map₂ η_1) ≫ (G.mapComp (F.map f) (F.map h)).inv ≫ G.map₂ (F.mapComp f h).inv
tactic: dsimp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f : a✝ ⟶ b✝
η : b✝ ⟶ c✝
⊢ ∀ {h : b✝ ⟶ c✝} (η_1 : η ⟶ h),
    G.map₂ (F.map₂ (f ◁ η_1)) =
      (G.map₂ (F.mapComp f η).hom ≫ (G.mapComp (F.map f) (F.map η)).hom) ≫
        G.map (F.map f) ◁ G.map₂ (F.map₂ η_1) ≫ (G.mapComp (F.map f) (F.map h)).inv ≫ G.map₂ (F.mapComp f h).inv
state_after: no goals
tactic: simp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f✝ g✝ : a✝ ⟶ b✝
η : f✝ ⟶ g✝
h : b✝ ⟶ c✝
⊢ (F.comp G.toPrelaxFunctor).map₂ (η ▷ h) =
    ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f✝ h).hom ≫
      (F.comp G.toPrelaxFunctor).map₂ η ▷ (F.comp G.toPrelaxFunctor).map h ≫
        ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) g✝ h).inv
state_after: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f✝ g✝ : a✝ ⟶ b✝
η : f✝ ⟶ g✝
h : b✝ ⟶ c✝
⊢ G.map₂ (F.map₂ (η ▷ h)) =
    (G.map₂ (F.mapComp f✝ h).hom ≫ (G.mapComp (F.map f✝) (F.map h)).hom) ≫
      G.map₂ (F.map₂ η) ▷ G.map (F.map h) ≫ (G.mapComp (F.map g✝) (F.map h)).inv ≫ G.map₂ (F.mapComp g✝ h).inv
tactic: dsimp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ : B
f✝ g✝ : a✝ ⟶ b✝
η : f✝ ⟶ g✝
h : b✝ ⟶ c✝
⊢ G.map₂ (F.map₂ (η ▷ h)) =
    (G.map₂ (F.mapComp f✝ h).hom ≫ (G.mapComp (F.map f✝) (F.map h)).hom) ≫
      G.map₂ (F.map₂ η) ▷ G.map (F.map h) ≫ (G.mapComp (F.map g✝) (F.map h)).inv ≫ G.map₂ (F.mapComp g✝ h).inv
state_after: no goals
tactic: simp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ d✝ : B
f : a✝ ⟶ b✝
g : b✝ ⟶ c✝
h : c✝ ⟶ d✝
⊢ (F.comp G.toPrelaxFunctor).map₂ (α_ f g h).hom =
    ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) (f ≫ g) h).hom ≫
      ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f g).hom ▷
          (F.comp G.toPrelaxFunctor).map h ≫
        (α_ ((F.comp G.toPrelaxFunctor).map f) ((F.comp G.toPrelaxFunctor).map g)
              ((F.comp G.toPrelaxFunctor).map h)).hom ≫
          (F.comp G.toPrelaxFunctor).map f ◁
              ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) g h).inv ≫
            ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f (g ≫ h)).inv
state_after: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ d✝ : B
f : a✝ ⟶ b✝
g : b✝ ⟶ c✝
h : c✝ ⟶ d✝
⊢ G.map₂ (F.map₂ (α_ f g h).hom) =
    (G.map₂ (F.mapComp (f ≫ g) h).hom ≫ (G.mapComp (F.map (f ≫ g)) (F.map h)).hom) ≫
      (G.map₂ (F.mapComp f g).hom ≫ (G.mapComp (F.map f) (F.map g)).hom) ▷ G.map (F.map h) ≫
        (α_ (G.map (F.map f)) (G.map (F.map g)) (G.map (F.map h))).hom ≫
          G.map (F.map f) ◁ ((G.mapComp (F.map g) (F.map h)).inv ≫ G.map₂ (F.mapComp g h).inv) ≫
            (G.mapComp (F.map f) (F.map (g ≫ h))).inv ≫ G.map₂ (F.mapComp f (g ≫ h)).inv
tactic: dsimp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ c✝ d✝ : B
f : a✝ ⟶ b✝
g : b✝ ⟶ c✝
h : c✝ ⟶ d✝
⊢ G.map₂ (F.map₂ (α_ f g h).hom) =
    (G.map₂ (F.mapComp (f ≫ g) h).hom ≫ (G.mapComp (F.map (f ≫ g)) (F.map h)).hom) ≫
      (G.map₂ (F.mapComp f g).hom ≫ (G.mapComp (F.map f) (F.map g)).hom) ▷ G.map (F.map h) ≫
        (α_ (G.map (F.map f)) (G.map (F.map g)) (G.map (F.map h))).hom ≫
          G.map (F.map f) ◁ ((G.mapComp (F.map g) (F.map h)).inv ≫ G.map₂ (F.mapComp g h).inv) ≫
            (G.mapComp (F.map f) (F.map (g ≫ h))).inv ≫ G.map₂ (F.mapComp f (g ≫ h)).inv
state_after: no goals
tactic: simp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ (F.comp G.toPrelaxFunctor).map₂ (λ_ f).hom =
    ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) (𝟙 a✝) f).hom ≫
      ((fun a => G.map₂Iso (F.mapId a) ≪≫ G.mapId (F.obj a)) a✝).hom ▷ (F.comp G.toPrelaxFunctor).map f ≫
        (λ_ ((F.comp G.toPrelaxFunctor).map f)).hom
state_after: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ G.map₂ (F.map₂ (λ_ f).hom) =
    (G.map₂ (F.mapComp (𝟙 a✝) f).hom ≫ (G.mapComp (F.map (𝟙 a✝)) (F.map f)).hom) ≫
      (G.map₂ (F.mapId a✝).hom ≫ (G.mapId (F.obj a✝)).hom) ▷ G.map (F.map f) ≫ (λ_ (G.map (F.map f))).hom
tactic: dsimp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ G.map₂ (F.map₂ (λ_ f).hom) =
    (G.map₂ (F.mapComp (𝟙 a✝) f).hom ≫ (G.mapComp (F.map (𝟙 a✝)) (F.map f)).hom) ≫
      (G.map₂ (F.mapId a✝).hom ≫ (G.mapId (F.obj a✝)).hom) ▷ G.map (F.map f) ≫ (λ_ (G.map (F.map f))).hom
state_after: no goals
tactic: simp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ (F.comp G.toPrelaxFunctor).map₂ (ρ_ f).hom =
    ((fun {a b c} f g => G.map₂Iso (F.mapComp f g) ≪≫ G.mapComp (F.map f) (F.map g)) f (𝟙 b✝)).hom ≫
      (F.comp G.toPrelaxFunctor).map f ◁ ((fun a => G.map₂Iso (F.mapId a) ≪≫ G.mapId (F.obj a)) b✝).hom ≫
        (ρ_ ((F.comp G.toPrelaxFunctor).map f)).hom
state_after: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ G.map₂ (F.map₂ (ρ_ f).hom) =
    (G.map₂ (F.mapComp f (𝟙 b✝)).hom ≫ (G.mapComp (F.map f) (F.map (𝟙 b✝))).hom) ≫
      G.map (F.map f) ◁ (G.map₂ (F.mapId b✝).hom ≫ (G.mapId (F.obj b✝)).hom) ≫ (ρ_ (G.map (F.map f))).hom
tactic: dsimp
state_before: B : Type u₁
inst✝² : Bicategory B
C : Type u₂
inst✝¹ : Bicategory C
D : Type u₃
inst✝ : Bicategory D
F✝ F : Pseudofunctor B C
G : Pseudofunctor C D
a✝ b✝ : B
f : a✝ ⟶ b✝
⊢ G.map₂ (F.map₂ (ρ_ f).hom) =
    (G.map₂ (F.mapComp f (𝟙 b✝)).hom ≫ (G.mapComp (F.map f) (F.map (𝟙 b✝))).hom) ≫
      G.map (F.map f) ◁ (G.map₂ (F.mapId b✝).hom ≫ (G.mapId (F.obj b✝)).hom) ≫ (ρ_ (G.map (F.map f))).hom
state_after: no goals
tactic: simp