-- Lean 4 proof step from Mathlib.Topology.Sheaves.Flasque (goal)
Goal:
X : TopCat
U : Opens (↑X : Type u)
F G : Sheaf AddCommGrpCat X
g : F ⟶ G
s : (↑(G.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) : Type u)
c : Set (Under g s)
h : IsChain (fun (x y : Under g s) ↦ Nonempty.{u + 1} (y ⟶ x)) c
f : (↑c : Type u) → Opens (↑X : Type u) :=
  fun (x : (↑c : Type u)) ↦
    unop
      ((StructuredArrow.right (↑x : Under g s)).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))) ⋙
              CategoryTheory.forget AddCommGrpCat (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦
                (↑x1 : Type u) →+ (↑x2 : Type u)) (CC := AddCommGrpCat.carrier)).obj
          c))
i j : (↑c : Type u)
h₁ : Nonempty.{u + 1} ((↑j : Under g s) ⟶ (↑i : Under g s))
⊢ Eq (α :=
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
      Type u))
    ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
            AddCommGrpCat.carrier) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
              (op (f i ⊓ f j)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op ((f i).infLELeft (f j)))) :
          (a : (↑(F.obj.obj (op (f i))) : Type u)) → (↑(F.obj.obj (op (f i ⊓ f j))) : Type u))
        ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
                AddCommGrpCat.carrier)
                (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                  (↑h₁.some.right : (↑j : Under g s).right.fst ⟶ (↑i : Under g s).right.fst)) :
              (a : (↑(F.obj.obj (↑j : Under g s).right.fst) : Type u)) →
                (↑(F.obj.obj (↑i : Under g s).right.fst) : Type u))
            ((↑j : Under g s).right.snd (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
              ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
                AddCommGrpCat.carrier)
                (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj c))) :
          (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
                ((↑i : Under g s).right.fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
                  ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
                    AddCommGrpCat.carrier)
                    (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj c)))) :
            Type u)) :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
        Type u))
    ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
            AddCommGrpCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f j)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op ((f i).infLERight (f j)))) :
          (a : (↑(F.obj.obj (op (f j))) : Type u)) → (↑(F.obj.obj (op (f i ⊓ f j))) : Type u))
        ((StructuredArrow.right (↑j : Under g s)).snd (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
          ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
            AddCommGrpCat.carrier)
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj c))) :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
        Type u))
have inr : Eq (α :=
  (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
    Type u))
  ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
          AddCommGrpCat.carrier) (Y :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j)))
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
            ((↑h₁.some.right : (↑j : Under g s).right.fst ⟶ (↑i : Under g s).right.fst) ≫
              Quiver.Hom.op ((f i).infLELeft (f j)))) :
        (a : (↑(F.obj.obj (↑j : Under g s).right.fst) : Type u)) → (↑(F.obj.obj (op (f i ⊓ f j))) : Type u))
      ((↑j : Under g s).right.snd (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC := AddCommGrpCat.carrier)
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj c))) :
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
      Type u))
  ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
          AddCommGrpCat.carrier) (X :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f j)))
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
            (Quiver.Hom.op ((f i).infLERight (f j)))) :
        (a : (↑(F.obj.obj (op (f j))) : Type u)) → (↑(F.obj.obj (op (f i ⊓ f j))) : Type u))
      ((StructuredArrow.right (↑j : Under g s)).snd (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC := AddCommGrpCat.carrier)
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj c))) :
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (f i ⊓ f j))) :
      Type u))
Tactic: rw [← Functor.map_comp_apply]