/-- Vertical composition of oplax natural transformations. -/
@[simps]
def vcomp (η : OplaxNatTrans F G) (θ : OplaxNatTrans G H) : OplaxNatTrans F H where
  app a := η.app a ≫ θ.app a
  naturality {a b} f :=
    (α_ _ _ _).inv ≫
      η.naturality f ▷ θ.app b ≫ (α_ _ _ _).hom ≫ η.app a ◁ θ.naturality f ≫ (α_ _ _ _).inv
  naturality_comp {a b c} f g := by
    calc
      _ =
          ?_ ≫
            F.mapComp f g ▷ η.app c ▷ θ.app c ≫
              ?_ ≫
                F.map f ◁ η.naturality g ▷ θ.app c ≫
                  ?_ ≫
                    (F.map f ≫ η.app b) ◁ θ.naturality g ≫
                      η.naturality f ▷ (θ.app b ≫ H.map g) ≫
                        ?_ ≫ η.app a ◁ θ.naturality f ▷ H.map g ≫ ?_ :=
        ?_
      _ = _ := ?_
    

Proof state:
case calc_1
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ (↑F.toPrelaxFunctor).map (f ≫ g) ≫ (fun a => η.app a ≫ θ.app a) c ⟶
    ((↑F.toPrelaxFunctor).map (f ≫ g) ≫ η.app c) ≫ θ.app c
case calc_2
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ (((↑F.toPrelaxFunctor).map f ≫ (↑F.toPrelaxFunctor).map g) ≫ η.app c) ≫ θ.app c ⟶
    (↑F.toPrelaxFunctor).map f ≫ ((↑F.toPrelaxFunctor).map g ≫ η.app c) ≫ θ.app c
case calc_3
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ (↑F.toPrelaxFunctor).map f ≫ (η.app b ≫ (↑G.toPrelaxFunctor).map g) ≫ θ.app c ⟶
    ((↑F.toPrelaxFunctor).map f ≫ η.app b) ≫ (↑G.toPrelaxFunctor).map g ≫ θ.app c
case calc_4
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ (η.app a ≫ (↑G.toPrelaxFunctor).map f) ≫ θ.app b ≫ (↑H.toPrelaxFunctor).map g ⟶
    η.app a ≫ ((↑G.toPrelaxFunctor).map f ≫ θ.app b) ≫ (↑H.toPrelaxFunctor).map g
case calc_5
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ η.app a ≫ (θ.app a ≫ (↑H.toPrelaxFunctor).map f) ≫ (↑H.toPrelaxFunctor).map g ⟶
    (fun a => η.app a ≫ θ.app a) a ≫ (↑H.toPrelaxFunctor).map f ≫ (↑H.toPrelaxFunctor).map g
case calc_6
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ (fun {a b} f =>
          (α_ ((↑F.toPrelaxFunctor).map f) (η.app b) (θ.app b)).inv ≫
            naturality η f ▷ θ.app b ≫
              (α_ (η.app a) ((↑G.toPrelaxFunctor).map f) (θ.app b)).hom ≫
                η.app a ◁ naturality θ f ≫ (α_ (η.app a) (θ.app a) ((↑H.toPrelaxFunctor).map f)).inv)
        (f ≫ g) ≫
      (fun a => η.app a ≫ θ.app a) a ◁ OplaxFunctor.mapComp H f g =
    ?calc_1 ≫
      OplaxFunctor.mapComp F f g ▷ η.app c ▷ θ.app c ≫
        ?calc_2 ≫
          (↑F.toPrelaxFunctor).map f ◁ naturality η g ▷ θ.app c ≫
            ?calc_3 ≫
              ((↑F.toPrelaxFunctor).map f ≫ η.app b) ◁ naturality θ g ≫
                naturality η f ▷ (θ.app b ≫ (↑H.toPrelaxFunctor).map g) ≫
                  ?calc_4 ≫ η.app a ◁ naturality θ f ▷ (↑H.toPrelaxFunctor).map g ≫ ?calc_5
case calc_7
B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η✝ : OplaxNatTrans F G
θ✝ : OplaxNatTrans G H
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
f : a ⟶ b
g : b ⟶ c
⊢ ?calc_1 ≫
      OplaxFunctor.mapComp F f g ▷ η.app c ▷ θ.app c ≫
        ?calc_2 ≫
          (↑F.toPrelaxFunctor).map f ◁ naturality η g ▷ θ.app c ≫
            ?calc_3 ≫
              ((↑F.toPrelaxFunctor).map f ≫ η.app b) ◁ naturality θ g ≫
                naturality η f ▷ (θ.app b ≫ (↑H.toPrelaxFunctor).map g) ≫
                  ?calc_4 ≫ η.app a ◁ naturality θ f ▷ (↑H.toPrelaxFunctor).map g ≫ ?calc_5 =
    OplaxFunctor.mapComp F f g ▷ (fun a => η.app a ≫ θ.app a) c ≫
      (α_ ((↑F.toPrelaxFunctor).map f) ((↑F.toPrelaxFunctor).map g) ((fun a => η.app a ≫ θ.app a) c)).hom ≫
        (↑F.toPrelaxFunctor).map f ◁
            (fun {a b} f =>
                (α_ ((↑F.toPrelaxFunctor).map f) (η.app b) (θ.app b)).inv ≫
                  naturality η f ▷ θ.app b ≫
                    (α_ (η.app a) ((↑G.toPrelaxFunctor).map f) (θ.app b)).hom ≫
                      η.app a ◁ naturality θ f ≫ (α_ (η.app a) (θ.app a) ((↑H.toPrelaxFunctor).map f)).inv)
              g ≫
          (α_ ((↑F.toPrelaxFunctor).map f) ((fun a => η.app a ≫ θ.app a) b) ((↑H.toPrelaxFunctor).map g)).inv ≫
            (fun {a b} f =>
                    (α_ ((↑F.toPrelaxFunctor).map f) (η.app b) (θ.app b)).inv ≫
                      naturality η f ▷ θ.app b ≫
                        (α_ (η.app a) ((↑G.toPrelaxFunctor).map f) (θ.app b)).hom ≫
                          η.app a ◁ naturality θ f ≫ (α_ (η.app a) (θ.app a) ((↑H.toPrelaxFunctor).map f)).inv)
                  f ▷
                (↑H.toPrelaxFunctor).map g ≫
              (α_ ((fun a => η.app a ≫ θ.app a) a) ((↑H.toPrelaxFunctor).map f) ((↑H.toPrelaxFunctor).map g)).hom

Next tactic:
exact (α_ _ _ _).inv