Theorem: CategoryTheory.Bicategory.Adjunction.comp_left_triangle_aux
File: Mathlib/CategoryTheory/Bicategory/Adjunction.lean

tactic: calc
  _ = 𝟙 _ ⊗≫
        adj₁.unit ▷ (f₁ ≫ f₂) ⊗≫
          f₁ ◁ (adj₂.unit ▷ (g₁ ≫ f₁) ≫ (f₂ ≫ g₂) ◁ adj₁.counit) ▷ f₂ ⊗≫
            (f₁ ≫ f₂) ◁ adj₂.counit ⊗≫ 𝟙 _ := by
    simp [bicategoricalComp]; coherence
  _ = 𝟙 _ ⊗≫
        (leftZigzag adj₁.unit adj₁.counit) ▷ f₂ ⊗≫
          f₁ ◁ (leftZigzag adj₂.unit adj₂.counit) ⊗≫ 𝟙 _ := by
    rw [← whisker_exchange]; simp [bicategoricalComp]; coherence
  _ = _ := by
    simp_rw [left_triangle]; simp [bicategoricalComp]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ leftZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) = (λ_ (f₁ ≫ f₂)).hom ≫ (ρ_ (f₁ ≫ f₂)).inv
state_after: no goals

tactic: simp [bicategoricalComp]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ leftZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) =
    𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      adj₁.unit ▷ (f₁ ≫ f₂) ⊗≫
        f₁ ◁ (adj₂.unit ▷ (g₁ ≫ f₁) ≫ (f₂ ≫ g₂) ◁ adj₁.counit) ▷ f₂ ⊗≫ (f₁ ≫ f₂) ◁ adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c)
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ (λ_ ((g₁ ≫ f₁) ≫ f₂)).inv ≫
            f₁ ◁ (α_ (𝟙 b) (g₁ ≫ f₁) f₂).inv ≫
              f₁ ◁ (α_ (𝟙 b) g₁ f₁).inv ▷ f₂ ≫
                f₁ ◁ adj₂.unit ▷ g₁ ▷ f₁ ▷ f₂ ≫
                  f₁ ◁ (α_ f₂ g₂ g₁).hom ▷ f₁ ▷ f₂ ≫
                    (α_ f₁ ((f₂ ≫ g₂ ≫ g₁) ≫ f₁) f₂).inv ≫
                      (α_ f₁ (f₂ ≫ g₂ ≫ g₁) f₁).inv ▷ f₂ ≫
                        (α_ f₁ f₂ (g₂ ≫ g₁)).inv ▷ f₁ ▷ f₂ ≫
                          (α_ ((f₁ ≫ f₂) ≫ g₂ ≫ g₁) f₁ f₂).hom ≫
                            (α_ (f₁ ≫ f₂) (g₂ ≫ g₁) (f₁ ≫ f₂)).hom ≫
                              (α_ f₁ f₂ ((g₂ ≫ g₁) ≫ f₁ ≫ f₂)).hom ≫
                                f₁ ◁ f₂ ◁ (α_ g₂ g₁ (f₁ ≫ f₂)).hom ≫
                                  f₁ ◁ f₂ ◁ g₂ ◁ (α_ g₁ f₁ f₂).inv ≫
                                    f₁ ◁ f₂ ◁ g₂ ◁ adj₁.counit ▷ f₂ ≫
                                      f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv =
    adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ (λ_ ((g₁ ≫ f₁) ≫ f₂)).inv ≫
            f₁ ◁ (α_ (𝟙 b) (g₁ ≫ f₁) f₂).inv ≫
              f₁ ◁ (α_ (𝟙 b) g₁ f₁).inv ▷ f₂ ≫
                f₁ ◁ adj₂.unit ▷ g₁ ▷ f₁ ▷ f₂ ≫
                  f₁ ◁ (α_ (f₂ ≫ g₂) g₁ f₁).hom ▷ f₂ ≫
                    f₁ ◁ (α_ (f₂ ≫ g₂) (g₁ ≫ f₁) f₂).hom ≫
                      f₁ ◁ (α_ f₂ g₂ ((g₁ ≫ f₁) ≫ f₂)).hom ≫
                        f₁ ◁ f₂ ◁ g₂ ◁ adj₁.counit ▷ f₂ ≫
                          f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ (λ_ ((g₁ ≫ f₁) ≫ f₂)).inv ≫
            f₁ ◁ (α_ (𝟙 b) (g₁ ≫ f₁) f₂).inv ≫
              f₁ ◁ (α_ (𝟙 b) g₁ f₁).inv ▷ f₂ ≫
                f₁ ◁ adj₂.unit ▷ g₁ ▷ f₁ ▷ f₂ ≫
                  f₁ ◁ (α_ f₂ g₂ g₁).hom ▷ f₁ ▷ f₂ ≫
                    (α_ f₁ ((f₂ ≫ g₂ ≫ g₁) ≫ f₁) f₂).inv ≫
                      (α_ f₁ (f₂ ≫ g₂ ≫ g₁) f₁).inv ▷ f₂ ≫
                        (α_ f₁ f₂ (g₂ ≫ g₁)).inv ▷ f₁ ▷ f₂ ≫
                          (α_ ((f₁ ≫ f₂) ≫ g₂ ≫ g₁) f₁ f₂).hom ≫
                            (α_ (f₁ ≫ f₂) (g₂ ≫ g₁) (f₁ ≫ f₂)).hom ≫
                              (α_ f₁ f₂ ((g₂ ≫ g₁) ≫ f₁ ≫ f₂)).hom ≫
                                f₁ ◁ f₂ ◁ (α_ g₂ g₁ (f₁ ≫ f₂)).hom ≫
                                  f₁ ◁ f₂ ◁ g₂ ◁ (α_ g₁ f₁ f₂).inv ≫
                                    f₁ ◁ f₂ ◁ g₂ ◁ adj₁.counit ▷ f₂ ≫
                                      f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv =
    adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ (λ_ ((g₁ ≫ f₁) ≫ f₂)).inv ≫
            f₁ ◁ (α_ (𝟙 b) (g₁ ≫ f₁) f₂).inv ≫
              f₁ ◁ (α_ (𝟙 b) g₁ f₁).inv ▷ f₂ ≫
                f₁ ◁ adj₂.unit ▷ g₁ ▷ f₁ ▷ f₂ ≫
                  f₁ ◁ (α_ (f₂ ≫ g₂) g₁ f₁).hom ▷ f₂ ≫
                    f₁ ◁ (α_ (f₂ ≫ g₂) (g₁ ≫ f₁) f₂).hom ≫
                      f₁ ◁ (α_ f₂ g₂ ((g₁ ≫ f₁) ≫ f₂)).hom ≫
                        f₁ ◁ f₂ ◁ g₂ ◁ adj₁.counit ▷ f₂ ≫
                          f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv
state_after: no goals

tactic: rw [← whisker_exchange]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      adj₁.unit ▷ (f₁ ≫ f₂) ⊗≫
        f₁ ◁ (adj₂.unit ▷ (g₁ ≫ f₁) ≫ (f₂ ≫ g₂) ◁ adj₁.counit) ▷ f₂ ⊗≫ (f₁ ≫ f₂) ◁ adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      leftZigzag adj₁.unit adj₁.counit ▷ f₂ ⊗≫ f₁ ◁ leftZigzag adj₂.unit adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c)
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      adj₁.unit ▷ (f₁ ≫ f₂) ⊗≫
        f₁ ◁ (𝟙 b ◁ adj₁.counit ≫ adj₂.unit ▷ 𝟙 b) ▷ f₂ ⊗≫ (f₁ ≫ f₂) ◁ adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      leftZigzag adj₁.unit adj₁.counit ▷ f₂ ⊗≫ f₁ ◁ leftZigzag adj₂.unit adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c)

tactic: simp [bicategoricalComp]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      adj₁.unit ▷ (f₁ ≫ f₂) ⊗≫
        f₁ ◁ (𝟙 b ◁ adj₁.counit ≫ adj₂.unit ▷ 𝟙 b) ▷ f₂ ⊗≫ (f₁ ≫ f₂) ◁ adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      leftZigzag adj₁.unit adj₁.counit ▷ f₂ ⊗≫ f₁ ◁ leftZigzag adj₂.unit adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c)
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ adj₁.counit ▷ f₂ ≫
            f₁ ◁ adj₂.unit ▷ f₂ ≫
              f₁ ◁ (ρ_ (f₂ ≫ g₂)).inv ▷ f₂ ≫
                f₁ ◁ (α_ (f₂ ≫ g₂) (𝟙 b) f₂).hom ≫
                  f₁ ◁ (α_ f₂ g₂ (𝟙 b ≫ f₂)).hom ≫
                    f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv =
    adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ adj₁.counit ▷ f₂ ≫
            f₁ ◁ adj₂.unit ▷ f₂ ≫ f₁ ◁ (α_ f₂ g₂ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ adj₁.counit ▷ f₂ ≫
            f₁ ◁ adj₂.unit ▷ f₂ ≫
              f₁ ◁ (ρ_ (f₂ ≫ g₂)).inv ▷ f₂ ≫
                f₁ ◁ (α_ (f₂ ≫ g₂) (𝟙 b) f₂).hom ≫
                  f₁ ◁ (α_ f₂ g₂ (𝟙 b ≫ f₂)).hom ≫
                    f₁ ◁ f₂ ◁ g₂ ◁ (λ_ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv =
    adj₁.unit ▷ f₁ ▷ f₂ ≫
      (α_ f₁ g₁ f₁).hom ▷ f₂ ≫
        (α_ f₁ (g₁ ≫ f₁) f₂).hom ≫
          f₁ ◁ adj₁.counit ▷ f₂ ≫
            f₁ ◁ adj₂.unit ▷ f₂ ≫ f₁ ◁ (α_ f₂ g₂ f₂).hom ≫ f₁ ◁ f₂ ◁ adj₂.counit ≫ (α_ f₁ f₂ (𝟙 c)).inv
state_after: no goals

tactic: simp_rw [left_triangle]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫
      leftZigzag adj₁.unit adj₁.counit ▷ f₂ ⊗≫ f₁ ◁ leftZigzag adj₂.unit adj₂.counit ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    (λ_ (f₁ ≫ f₂)).hom ≫ (ρ_ (f₁ ≫ f₂)).inv
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫ ((λ_ f₁).hom ≫ (ρ_ f₁).inv) ▷ f₂ ⊗≫ f₁ ◁ ((λ_ f₂).hom ≫ (ρ_ f₂).inv) ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    (λ_ (f₁ ≫ f₂)).hom ≫ (ρ_ (f₁ ≫ f₂)).inv

tactic: simp [bicategoricalComp]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
f₁ : a ⟶ b
g₁ : b ⟶ a
f₂ : b ⟶ c
g₂ : c ⟶ b
adj₁ : f₁ ⊣ g₁
adj₂ : f₂ ⊣ g₂
⊢ 𝟙 (𝟙 a ≫ f₁ ≫ f₂) ⊗≫ ((λ_ f₁).hom ≫ (ρ_ f₁).inv) ▷ f₂ ⊗≫ f₁ ◁ ((λ_ f₂).hom ≫ (ρ_ f₂).inv) ⊗≫ 𝟙 ((f₁ ≫ f₂) ≫ 𝟙 c) =
    (λ_ (f₁ ≫ f₂)).hom ≫ (ρ_ (f₁ ≫ f₂)).inv
state_after: no goals