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

tactic: calc
  _ = 𝟙 _ ⊗≫
        (g₂ ≫ g₁) ◁ adj₁.unit ⊗≫
          g₂ ◁ ((g₁ ≫ f₁) ◁ adj₂.unit ≫ adj₁.counit ▷ (f₂ ≫ g₂)) ▷ g₁ ⊗≫
            adj₂.counit ▷ (g₂ ≫ g₁) ⊗≫ 𝟙 _ := by
    simp [bicategoricalComp]; coherence
  _ = 𝟙 _ ⊗≫
        g₂ ◁ (rightZigzag adj₁.unit adj₁.counit) ⊗≫
          (rightZigzag adj₂.unit adj₂.counit) ▷ g₁ ⊗≫ 𝟙 _ := by
    rw [whisker_exchange]; simp [bicategoricalComp]; coherence
  _ = _ := by
    simp_rw [right_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₂
⊢ rightZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) = (ρ_ (g₂ ≫ g₁)).hom ≫ (λ_ (g₂ ≫ g₁)).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₂
⊢ rightZigzag (adj₁.compUnit adj₂) (adj₁.compCounit adj₂) =
    𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      (g₂ ≫ g₁) ◁ adj₁.unit ⊗≫
        g₂ ◁ ((g₁ ≫ f₁) ◁ adj₂.unit ≫ adj₁.counit ▷ (f₂ ≫ g₂)) ▷ g₁ ⊗≫ adj₂.counit ▷ (g₂ ≫ g₁) ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁)
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₂
⊢ g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ g₁ ◁ f₁ ◁ adj₂.unit ▷ g₁ ≫
          g₂ ◁ g₁ ◁ f₁ ◁ (α_ f₂ g₂ g₁).hom ≫
            g₂ ◁ g₁ ◁ (α_ f₁ f₂ (g₂ ≫ g₁)).inv ≫
              (α_ g₂ g₁ ((f₁ ≫ f₂) ≫ g₂ ≫ g₁)).inv ≫
                (α_ (g₂ ≫ g₁) (f₁ ≫ f₂) (g₂ ≫ g₁)).inv ≫
                  (α_ ((g₂ ≫ g₁) ≫ f₁ ≫ f₂) g₂ g₁).inv ≫
                    (α_ g₂ g₁ (f₁ ≫ f₂)).hom ▷ g₂ ▷ g₁ ≫
                      (α_ g₂ (g₁ ≫ f₁ ≫ f₂) g₂).hom ▷ g₁ ≫
                        (α_ g₂ ((g₁ ≫ f₁ ≫ f₂) ≫ g₂) g₁).hom ≫
                          g₂ ◁ (α_ g₁ f₁ f₂).inv ▷ g₂ ▷ g₁ ≫
                            g₂ ◁ adj₁.counit ▷ f₂ ▷ g₂ ▷ g₁ ≫
                              g₂ ◁ (α_ (𝟙 b) f₂ g₂).hom ▷ g₁ ≫
                                g₂ ◁ (α_ (𝟙 b) (f₂ ≫ g₂) g₁).hom ≫
                                  g₂ ◁ (λ_ ((f₂ ≫ g₂) ≫ g₁)).hom ≫
                                    (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫
                                      (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom =
    g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ g₁ ◁ f₁ ◁ adj₂.unit ▷ g₁ ≫
          g₂ ◁ (α_ g₁ f₁ ((f₂ ≫ g₂) ≫ g₁)).inv ≫
            g₂ ◁ (α_ (g₁ ≫ f₁) (f₂ ≫ g₂) g₁).inv ≫
              g₂ ◁ (α_ (g₁ ≫ f₁) f₂ g₂).inv ▷ g₁ ≫
                g₂ ◁ adj₁.counit ▷ f₂ ▷ g₂ ▷ g₁ ≫
                  g₂ ◁ (α_ (𝟙 b) f₂ g₂).hom ▷ g₁ ≫
                    g₂ ◁ (α_ (𝟙 b) (f₂ ≫ g₂) g₁).hom ≫
                      g₂ ◁ (λ_ ((f₂ ≫ g₂) ≫ g₁)).hom ≫
                        (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom

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₂
⊢ g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ g₁ ◁ f₁ ◁ adj₂.unit ▷ g₁ ≫
          g₂ ◁ g₁ ◁ f₁ ◁ (α_ f₂ g₂ g₁).hom ≫
            g₂ ◁ g₁ ◁ (α_ f₁ f₂ (g₂ ≫ g₁)).inv ≫
              (α_ g₂ g₁ ((f₁ ≫ f₂) ≫ g₂ ≫ g₁)).inv ≫
                (α_ (g₂ ≫ g₁) (f₁ ≫ f₂) (g₂ ≫ g₁)).inv ≫
                  (α_ ((g₂ ≫ g₁) ≫ f₁ ≫ f₂) g₂ g₁).inv ≫
                    (α_ g₂ g₁ (f₁ ≫ f₂)).hom ▷ g₂ ▷ g₁ ≫
                      (α_ g₂ (g₁ ≫ f₁ ≫ f₂) g₂).hom ▷ g₁ ≫
                        (α_ g₂ ((g₁ ≫ f₁ ≫ f₂) ≫ g₂) g₁).hom ≫
                          g₂ ◁ (α_ g₁ f₁ f₂).inv ▷ g₂ ▷ g₁ ≫
                            g₂ ◁ adj₁.counit ▷ f₂ ▷ g₂ ▷ g₁ ≫
                              g₂ ◁ (α_ (𝟙 b) f₂ g₂).hom ▷ g₁ ≫
                                g₂ ◁ (α_ (𝟙 b) (f₂ ≫ g₂) g₁).hom ≫
                                  g₂ ◁ (λ_ ((f₂ ≫ g₂) ≫ g₁)).hom ≫
                                    (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫
                                      (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom =
    g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ g₁ ◁ f₁ ◁ adj₂.unit ▷ g₁ ≫
          g₂ ◁ (α_ g₁ f₁ ((f₂ ≫ g₂) ≫ g₁)).inv ≫
            g₂ ◁ (α_ (g₁ ≫ f₁) (f₂ ≫ g₂) g₁).inv ≫
              g₂ ◁ (α_ (g₁ ≫ f₁) f₂ g₂).inv ▷ g₁ ≫
                g₂ ◁ adj₁.counit ▷ f₂ ▷ g₂ ▷ g₁ ≫
                  g₂ ◁ (α_ (𝟙 b) f₂ g₂).hom ▷ g₁ ≫
                    g₂ ◁ (α_ (𝟙 b) (f₂ ≫ g₂) g₁).hom ≫
                      g₂ ◁ (λ_ ((f₂ ≫ g₂) ≫ g₁)).hom ≫
                        (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom
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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      (g₂ ≫ g₁) ◁ adj₁.unit ⊗≫
        g₂ ◁ ((g₁ ≫ f₁) ◁ adj₂.unit ≫ adj₁.counit ▷ (f₂ ≫ g₂)) ▷ g₁ ⊗≫ adj₂.counit ▷ (g₂ ≫ g₁) ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      g₂ ◁ rightZigzag adj₁.unit adj₁.counit ⊗≫ rightZigzag adj₂.unit adj₂.counit ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁)
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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      (g₂ ≫ g₁) ◁ adj₁.unit ⊗≫
        g₂ ◁ (adj₁.counit ▷ 𝟙 b ≫ 𝟙 b ◁ adj₂.unit) ▷ g₁ ⊗≫ adj₂.counit ▷ (g₂ ≫ g₁) ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      g₂ ◁ rightZigzag adj₁.unit adj₁.counit ⊗≫ rightZigzag adj₂.unit adj₂.counit ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁)

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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      (g₂ ≫ g₁) ◁ adj₁.unit ⊗≫
        g₂ ◁ (adj₁.counit ▷ 𝟙 b ≫ 𝟙 b ◁ adj₂.unit) ▷ g₁ ⊗≫ adj₂.counit ▷ (g₂ ≫ g₁) ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      g₂ ◁ rightZigzag adj₁.unit adj₁.counit ⊗≫ rightZigzag adj₂.unit adj₂.counit ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁)
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₂
⊢ g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ (α_ g₁ f₁ (𝟙 b ≫ g₁)).inv ≫
          g₂ ◁ (α_ (g₁ ≫ f₁) (𝟙 b) g₁).inv ≫
            g₂ ◁ (ρ_ (g₁ ≫ f₁)).hom ▷ g₁ ≫
              g₂ ◁ adj₁.counit ▷ g₁ ≫
                g₂ ◁ adj₂.unit ▷ g₁ ≫
                  (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom =
    g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ (α_ g₁ f₁ g₁).inv ≫
        g₂ ◁ adj₁.counit ▷ g₁ ≫
          g₂ ◁ adj₂.unit ▷ g₁ ≫
            (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom

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₂
⊢ g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ g₁ ◁ f₁ ◁ (λ_ g₁).inv ≫
        g₂ ◁ (α_ g₁ f₁ (𝟙 b ≫ g₁)).inv ≫
          g₂ ◁ (α_ (g₁ ≫ f₁) (𝟙 b) g₁).inv ≫
            g₂ ◁ (ρ_ (g₁ ≫ f₁)).hom ▷ g₁ ≫
              g₂ ◁ adj₁.counit ▷ g₁ ≫
                g₂ ◁ adj₂.unit ▷ g₁ ≫
                  (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom =
    g₂ ◁ g₁ ◁ adj₁.unit ≫
      g₂ ◁ (α_ g₁ f₁ g₁).inv ≫
        g₂ ◁ adj₁.counit ▷ g₁ ≫
          g₂ ◁ adj₂.unit ▷ g₁ ≫
            (α_ g₂ (f₂ ≫ g₂) g₁).inv ≫ (α_ g₂ f₂ g₂).inv ▷ g₁ ≫ adj₂.counit ▷ g₂ ▷ g₁ ≫ (α_ (𝟙 c) g₂ g₁).hom
state_after: no goals

tactic: simp_rw [right_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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫
      g₂ ◁ rightZigzag adj₁.unit adj₁.counit ⊗≫ rightZigzag adj₂.unit adj₂.counit ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    (ρ_ (g₂ ≫ g₁)).hom ≫ (λ_ (g₂ ≫ g₁)).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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫ g₂ ◁ ((ρ_ g₁).hom ≫ (λ_ g₁).inv) ⊗≫ ((ρ_ g₂).hom ≫ (λ_ g₂).inv) ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    (ρ_ (g₂ ≫ g₁)).hom ≫ (λ_ (g₂ ≫ g₁)).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₂
⊢ 𝟙 ((g₂ ≫ g₁) ≫ 𝟙 a) ⊗≫ g₂ ◁ ((ρ_ g₁).hom ≫ (λ_ g₁).inv) ⊗≫ ((ρ_ g₂).hom ≫ (λ_ g₂).inv) ▷ g₁ ⊗≫ 𝟙 (𝟙 c ≫ g₂ ≫ g₁) =
    (ρ_ (g₂ ≫ g₁)).hom ≫ (λ_ (g₂ ≫ g₁)).inv
state_after: no goals