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

tactic: dsimp only [rightZigzag]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ rightZigzag η ε ⊗≫ rightZigzag η ε = rightZigzag η ε
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ (g ◁ η ⊗≫ ε ▷ g) ⊗≫ g ◁ η ⊗≫ ε ▷ g = g ◁ η ⊗≫ ε ▷ g

tactic: calc
  _ = g ◁ η ⊗≫ ((ε ▷ g ▷ 𝟙 a) ≫ (𝟙 b ≫ g) ◁ η) ⊗≫ ε ▷ g := by
    simp [bicategoricalComp]; coherence
  _ = 𝟙 _ ⊗≫ g ◁ (η ▷ 𝟙 a ≫ (f ≫ g) ◁ η) ⊗≫ (ε ▷ (g ≫ f) ≫ 𝟙 b ◁ ε) ▷ g ⊗≫ 𝟙 _ := by
    rw [← whisker_exchange]; simp [bicategoricalComp]; coherence
  _ = g ◁ η ⊗≫ g ◁ leftZigzag η ε ▷ g ⊗≫ ε ▷ g := by
    rw [← whisker_exchange,  ← whisker_exchange]; simp [leftZigzag, bicategoricalComp]; coherence
  _ = g ◁ η ⊗≫ ε ▷ g := by
    rw [h]; simp [bicategoricalComp]; coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ (g ◁ η ⊗≫ ε ▷ g) ⊗≫ g ◁ η ⊗≫ ε ▷ g = g ◁ η ⊗≫ ε ▷ g
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
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ (g ◁ η ⊗≫ ε ▷ g) ⊗≫ g ◁ η ⊗≫ ε ▷ g = g ◁ η ⊗≫ (ε ▷ g ▷ 𝟙 a ≫ (𝟙 b ≫ g) ◁ η) ⊗≫ ε ▷ g
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g ≫ (λ_ g).hom ≫ (ρ_ g).inv ≫ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g =
    g ◁ η ≫
      (α_ g f g).inv ≫
        ε ▷ g ≫ (ρ_ (𝟙 b ≫ g)).inv ≫ (α_ (𝟙 b) g (𝟙 a)).hom ≫ (λ_ (g ≫ 𝟙 a)).hom ≫ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g ≫ (λ_ g).hom ≫ (ρ_ g).inv ≫ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g =
    g ◁ η ≫
      (α_ g f g).inv ≫
        ε ▷ g ≫ (ρ_ (𝟙 b ≫ g)).inv ≫ (α_ (𝟙 b) g (𝟙 a)).hom ≫ (λ_ (g ≫ 𝟙 a)).hom ≫ g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g
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
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ⊗≫ (ε ▷ g ▷ 𝟙 a ≫ (𝟙 b ≫ g) ◁ η) ⊗≫ ε ▷ g =
    𝟙 (g ≫ 𝟙 a) ⊗≫ g ◁ (η ▷ 𝟙 a ≫ (f ≫ g) ◁ η) ⊗≫ (ε ▷ (g ≫ f) ≫ 𝟙 b ◁ ε) ▷ g ⊗≫ 𝟙 (𝟙 b ≫ g)
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ⊗≫ (((g ≫ f) ≫ g) ◁ η ≫ ε ▷ g ▷ (f ≫ g)) ⊗≫ ε ▷ g =
    𝟙 (g ≫ 𝟙 a) ⊗≫ g ◁ (η ▷ 𝟙 a ≫ (f ≫ g) ◁ η) ⊗≫ (ε ▷ (g ≫ f) ≫ 𝟙 b ◁ ε) ▷ g ⊗≫ 𝟙 (𝟙 b ≫ g)

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

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫
      (α_ g f g).inv ≫
        (ρ_ ((g ≫ f) ≫ g)).inv ≫
          (α_ (g ≫ f) g (𝟙 a)).hom ≫
            (α_ g f (g ≫ 𝟙 a)).hom ≫
              g ◁ f ◁ g ◁ η ≫
                (α_ g f (g ≫ f ≫ g)).inv ≫
                  (α_ (g ≫ f) g (f ≫ g)).inv ≫
                    (α_ ((g ≫ f) ≫ g) f g).inv ≫
                      ε ▷ g ▷ f ▷ g ≫
                        (α_ (𝟙 b ≫ g) f g).hom ≫
                          (α_ (𝟙 b) g (f ≫ g)).hom ≫ (λ_ (g ≫ f ≫ g)).hom ≫ (α_ g f g).inv ≫ ε ▷ g =
    g ◁ η ≫
      (ρ_ (g ≫ f ≫ g)).inv ≫
        (α_ g (f ≫ g) (𝟙 a)).hom ≫
          g ◁ (α_ f g (𝟙 a)).hom ≫
            g ◁ f ◁ g ◁ η ≫
              g ◁ f ◁ (α_ g f g).inv ≫
                (α_ g f ((g ≫ f) ≫ g)).inv ≫
                  (α_ (g ≫ f) (g ≫ f) g).inv ≫
                    (α_ (g ≫ f) g f).inv ▷ g ≫
                      ε ▷ g ▷ f ▷ g ≫ (α_ (𝟙 b) g f).hom ▷ g ≫ (α_ (𝟙 b) (g ≫ f) g).hom ≫ (λ_ ((g ≫ f) ≫ g)).hom ≫ ε ▷ g
state_after: no goals

tactic: rw [← whisker_exchange,  ← whisker_exchange]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ 𝟙 (g ≫ 𝟙 a) ⊗≫ g ◁ (η ▷ 𝟙 a ≫ (f ≫ g) ◁ η) ⊗≫ (ε ▷ (g ≫ f) ≫ 𝟙 b ◁ ε) ▷ g ⊗≫ 𝟙 (𝟙 b ≫ g) =
    g ◁ η ⊗≫ g ◁ leftZigzag η ε ▷ g ⊗≫ ε ▷ g
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ 𝟙 (g ≫ 𝟙 a) ⊗≫ g ◁ (𝟙 a ◁ η ≫ η ▷ (f ≫ g)) ⊗≫ ((g ≫ f) ◁ ε ≫ ε ▷ 𝟙 b) ▷ g ⊗≫ 𝟙 (𝟙 b ≫ g) =
    g ◁ η ⊗≫ g ◁ leftZigzag η ε ▷ g ⊗≫ ε ▷ g

tactic: simp [leftZigzag, bicategoricalComp]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ 𝟙 (g ≫ 𝟙 a) ⊗≫ g ◁ (𝟙 a ◁ η ≫ η ▷ (f ≫ g)) ⊗≫ ((g ≫ f) ◁ ε ≫ ε ▷ 𝟙 b) ▷ g ⊗≫ 𝟙 (𝟙 b ≫ g) =
    g ◁ η ⊗≫ g ◁ leftZigzag η ε ▷ g ⊗≫ ε ▷ g
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫
      g ◁ (λ_ (f ≫ g)).inv ≫
        g ◁ (α_ (𝟙 a) f g).inv ≫
          g ◁ η ▷ f ▷ g ≫
            g ◁ (α_ (f ≫ g) f g).hom ≫
              g ◁ (α_ f g (f ≫ g)).hom ≫
                g ◁ f ◁ (α_ g f g).inv ≫ g ◁ f ◁ ε ▷ g ≫ g ◁ f ◁ (λ_ g).hom ≫ (α_ g f g).inv ≫ ε ▷ g =
    g ◁ η ≫
      g ◁ (λ_ (f ≫ g)).inv ≫
        g ◁ (α_ (𝟙 a) f g).inv ≫
          g ◁ η ▷ f ▷ g ≫
            g ◁ (α_ f g f).hom ▷ g ≫
              g ◁ (α_ f (g ≫ f) g).hom ≫
                g ◁ f ◁ ε ▷ g ≫ g ◁ (α_ f (𝟙 b) g).inv ≫ g ◁ (ρ_ f).hom ▷ g ≫ (α_ g f g).inv ≫ ε ▷ g

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫
      g ◁ (λ_ (f ≫ g)).inv ≫
        g ◁ (α_ (𝟙 a) f g).inv ≫
          g ◁ η ▷ f ▷ g ≫
            g ◁ (α_ (f ≫ g) f g).hom ≫
              g ◁ (α_ f g (f ≫ g)).hom ≫
                g ◁ f ◁ (α_ g f g).inv ≫ g ◁ f ◁ ε ▷ g ≫ g ◁ f ◁ (λ_ g).hom ≫ (α_ g f g).inv ≫ ε ▷ g =
    g ◁ η ≫
      g ◁ (λ_ (f ≫ g)).inv ≫
        g ◁ (α_ (𝟙 a) f g).inv ≫
          g ◁ η ▷ f ▷ g ≫
            g ◁ (α_ f g f).hom ▷ g ≫
              g ◁ (α_ f (g ≫ f) g).hom ≫
                g ◁ f ◁ ε ▷ g ≫ g ◁ (α_ f (𝟙 b) g).inv ≫ g ◁ (ρ_ f).hom ▷ g ≫ (α_ g f g).inv ≫ ε ▷ g
state_after: no goals

tactic: rw [h]
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ⊗≫ g ◁ leftZigzag η ε ▷ g ⊗≫ ε ▷ g = g ◁ η ⊗≫ ε ▷ g
state_after: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ⊗≫ g ◁ ((λ_ f).hom ≫ (ρ_ f).inv) ▷ g ⊗≫ ε ▷ g = g ◁ η ⊗≫ ε ▷ g

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

tactic: coherence
state_before: B : Type u
inst✝ : Bicategory B
a b c : B
f : a ⟶ b
g : b ⟶ a
η : 𝟙 a ⟶ f ≫ g
ε : g ≫ f ⟶ 𝟙 b
h : leftZigzag η ε = (λ_ f).hom ≫ (ρ_ f).inv
⊢ g ◁ η ≫ g ◁ (ρ_ f).inv ▷ g ≫ g ◁ (ρ_ f).hom ▷ g ≫ (α_ g f g).inv ≫ ε ▷ g = g ◁ η ≫ (α_ g f g).inv ≫ ε ▷ g
state_after: no goals