-- Module: Mathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections
Goal:
C : Type u_1
inst : Category.{v_1, u_1} C
X : TopCat
F : Sheaf.{w, v_1, u_1} C X
U V : Opens (↑X : Type w)
s :
  PullbackCone (X := F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).obj (op U))
    (Y := F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).obj (op V))
    (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
      (Quiver.Hom.op (homOfLE ⋯)))
    (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
      (Quiver.Hom.op (homOfLE ⋯)))
ι : ULift.{w, 0} WalkingPair → Opens (↑X : Type w) :=
  fun (j : ULift.{w, 0} WalkingPair) ↦
    WalkingPair.casesOn (motive := fun (x : WalkingPair) ↦ Opens (↑X : Type w)) j.down U V
hι : U ⊔ V = iSup ι
refine_1 :
  (X_1 : (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) →
    Functor.obj.{w, v_1, w, u_1}
        (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) X_1 ⟶
      (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj X_1
refine_2 :
  ∀ ⦃X_1 Y : (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ⦄ (f : X_1 ⟶ Y),
    Eq.{v_1 + 1} (α :=
      Functor.obj.{w, v_1, w, u_1}
          (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) X_1 ⟶
        (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj Y)
      (CategoryTheory.Functor.map
          (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) f ≫
        Opposite.casesOn (motive := fun (x : (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) ↦
          Functor.obj.{w, v_1, w, u_1}
              (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) x ⟶
            (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj x)
          Y fun (unop : CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair)) ↦
          Pairwise.casesOn (motive := fun (x : CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair)) ↦
            Functor.obj.{w, v_1, w, u_1}
                (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) (op x) ⟶
              (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op x))
            unop
            (fun (a : ULift.{w, 0} WalkingPair) ↦
              ULift.casesOn (motive := fun (x : ULift.{w, 0} WalkingPair) ↦
                Functor.obj.{w, v_1, w, u_1}
                    (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                    (op (Pairwise.single x)) ⟶
                  (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.single x)))
                a fun (down : WalkingPair) ↦
                WalkingPair.casesOn (motive := fun (x : WalkingPair) ↦
                  Functor.obj.{w, v_1, w, u_1}
                      (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                      (op (Pairwise.single { down := x : ULift.{w, 0} WalkingPair })) ⟶
                    (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.single { down := x })))
                  down s.fst s.snd)
            fun (a a_1 : ULift.{w, 0} WalkingPair) ↦
            ULift.casesOn (motive := fun (x : ULift.{w, 0} WalkingPair) ↦
              Functor.obj.{w, v_1, w, u_1}
                  (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                  (op (Pairwise.pair x a_1)) ⟶
                (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.pair x a_1)))
              a fun (down : WalkingPair) ↦
              WalkingPair.casesOn (motive := fun (x : WalkingPair) ↦
                Functor.obj.{w, v_1, w, u_1}
                    (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                    (op (Pairwise.pair { down := x : ULift.{w, 0} WalkingPair } a_1)) ⟶
                  (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.pair { down := x } a_1)))
                down
                (s.fst ≫
                  F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
                    (Quiver.Hom.op (homOfLE ⋯)))
                (s.snd ≫
                  F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
                    (Quiver.Hom.op (homOfLE ⋯))))
      ((Opposite.casesOn (motive := fun (x : (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) ↦
          Functor.obj.{w, v_1, w, u_1}
              (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) x ⟶
            (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj x)
          X_1 fun (unop : CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair)) ↦
          Pairwise.casesOn (motive := fun (x : CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair)) ↦
            Functor.obj.{w, v_1, w, u_1}
                (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt) (op x) ⟶
              (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op x))
            unop
            (fun (a : ULift.{w, 0} WalkingPair) ↦
              ULift.casesOn (motive := fun (x : ULift.{w, 0} WalkingPair) ↦
                Functor.obj.{w, v_1, w, u_1}
                    (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                    (op (Pairwise.single x)) ⟶
                  (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.single x)))
                a fun (down : WalkingPair) ↦
                WalkingPair.casesOn (motive := fun (x : WalkingPair) ↦
                  Functor.obj.{w, v_1, w, u_1}
                      (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                      (op (Pairwise.single { down := x : ULift.{w, 0} WalkingPair })) ⟶
                    (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.single { down := x })))
                  down s.fst s.snd)
            fun (a a_1 : ULift.{w, 0} WalkingPair) ↦
            ULift.casesOn (motive := fun (x : ULift.{w, 0} WalkingPair) ↦
              Functor.obj.{w, v_1, w, u_1}
                  (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                  (op (Pairwise.pair x a_1)) ⟶
                (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.pair x a_1)))
              a fun (down : WalkingPair) ↦
              WalkingPair.casesOn (motive := fun (x : WalkingPair) ↦
                Functor.obj.{w, v_1, w, u_1}
                    (Functor.obj (Functor.const (CategoryTheory.Pairwise (ULift.{w, 0} WalkingPair))ᵒᵖ) s.pt)
                    (op (Pairwise.pair { down := x : ULift.{w, 0} WalkingPair } a_1)) ⟶
                  (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).obj (op (Pairwise.pair { down := x } a_1)))
                down
                (s.fst ≫
                  F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
                    (Quiver.Hom.op (homOfLE ⋯)))
                (s.snd ≫
                  F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).map
                    (Quiver.Hom.op (homOfLE ⋯)))) ≫
        (Functor.op (Pairwise.diagram ι) ⋙ F.presheaf).map f)
⊢ s.pt ⟶ F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type w))).obj (op (U ⊔ V))

Tactic:
refine
    (F.presheaf.isSheaf_iff_isSheafPairwiseIntersections.mp F.2 ι).some.lift
        ⟨s.pt,
          { app := ?_
            naturality := ?_ }⟩ ≫
      F.1.map (eqToHom hι).op

Premises used: Quiver.Hom.op, CategoryTheory.eqToHom, CategoryTheory.ObjectProperty.FullSubcategory.property, TopCat.Presheaf.isSheaf_iff_isSheafPairwiseIntersections, Nonempty.some, CategoryTheory.ObjectProperty.FullSubcategory.obj, CategoryTheory.Limits.Cone.pt, CategoryTheory.Functor.map, CategoryTheory.NatTrans.mk, Iff.mp, TopCat.Sheaf.presheaf, CategoryTheory.Limits.Cone.mk, CategoryTheory.Limits.IsLimit.lift