-- Lean 4 proof step from Mathlib.Topology.Sheaves.CommRingCat (goal)
Goal:
X : TopCat
F : Sheaf CommRingCat X
U V W : Opens (↑X : Type u)
e : W ≤ U ⊔ V
x :
  (↑(CommRingCat.of
        ↥(RingHom.eqLocus
            (RingHom.comp
              (CommRingCat.Hom.hom
                (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                  (Quiver.Hom.op (homOfLE ⋯))))
              (RingHom.fst
                (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) :
                  Type u)
                (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op V)) :
                  Type u)))
            (RingHom.comp
              (CommRingCat.Hom.hom
                (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                  (Quiver.Hom.op (homOfLE ⋯))))
              (RingHom.snd
                (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) :
                  Type u)
                (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op V)) :
                  Type u))))) :
    Type u)
y : (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) : Type u)
e₁ :
  Eq (α :=
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
      Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op U)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
        (↑x : (↑(F.obj.obj (op U)) : Type u) × (↑(F.obj.obj (op V)) : Type u)).1 :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
        Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op W)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
        y :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
        Type u))
e₂ :
  Eq (α :=
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (V ⊓ W))) :
      Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op V)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (V ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op V)) : Type u)) → (↑(F.obj.obj (op (V ⊓ W))) : Type u))
        (↑x : (↑(F.obj.obj (op U)) : Type u) × (↑(F.obj.obj (op V)) : Type u)).2 :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (V ⊓ W))) :
        Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (V ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op W)) : Type u)) → (↑(F.obj.obj (op (V ⊓ W))) : Type u))
        y :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (V ⊓ W))) :
        Type u))
⊢ Eq (α :=
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
      Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op W)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
        ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
                CommRingCat.carrier)
                (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                  (homOfLE e).op) :
              (a : (↑(F.obj.obj (op (U ⊔ V))) : Type u)) → (↑(F.obj.obj (op W)) : Type u))
            ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
                    CommRingCat.carrier) (F.objSupIsoProdEqLocus U V).inv :
                  (a :
                      (↑(CommRingCat.of
                            ↥(((CommRingCat.Hom.hom (F.obj.map (homOfLE ⋯).op)).comp
                                    (RingHom.fst (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))).eqLocus
                                ((CommRingCat.Hom.hom (F.obj.map (homOfLE ⋯).op)).comp
                                  (RingHom.snd (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))))) :
                        Type u)) →
                    (↑(F.obj.obj (op (U ⊔ V))) : Type u))
                x :
              (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
                    (op (U ⊔ V))) :
                Type u)) :
          (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) :
            Type u)) :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
        Type u))
    ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
            CommRingCat.carrier) (X :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) (Y :=
            F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
            (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
              (Quiver.Hom.op (homOfLE ⋯))) :
          (a : (↑(F.obj.obj (op W)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
        y :
      (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
        Type u))
have mpr : Eq (α :=
  (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
    Type u))
  ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
          CommRingCat.carrier) (X :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) (Y :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
            (Quiver.Hom.op (homOfLE sorry))) :
        (a : (↑(F.obj.obj (op W)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
      ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
              CommRingCat.carrier)
              (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                (homOfLE e).op) :
            (a : (↑(F.obj.obj (op (U ⊔ V))) : Type u)) → (↑(F.obj.obj (op W)) : Type u))
          ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
                  CommRingCat.carrier) (F.objSupIsoProdEqLocus U V).inv :
                (a :
                    (↑(CommRingCat.of
                          ↥(((CommRingCat.Hom.hom (F.obj.map (homOfLE sorry).op)).comp
                                  (RingHom.fst (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))).eqLocus
                              ((CommRingCat.Hom.hom (F.obj.map (homOfLE sorry).op)).comp
                                (RingHom.snd (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))))) :
                      Type u)) →
                  (↑(F.obj.obj (op (U ⊔ V))) : Type u))
              x :
            (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
                  (op (U ⊔ V))) :
              Type u)) :
        (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) :
          Type u)) :
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
      Type u))
  ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
          CommRingCat.carrier) (X :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) (Y :=
          F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W)))
          (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
            (Quiver.Hom.op (homOfLE sorry))) :
        (a : (↑(F.obj.obj (op U)) : Type u)) → (↑(F.obj.obj (op (U ⊓ W))) : Type u))
      ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
              CommRingCat.carrier) (X :=
              F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊔ V)))
              (F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).map
                (Quiver.Hom.op (homOfLE sorry))) :
            (a : (↑(F.obj.obj (op (U ⊔ V))) : Type u)) → (↑(F.obj.obj (op U)) : Type u))
          ((ConcreteCategory.hom (FC := fun (R S : CommRingCat.{u}) ↦ (↑R : Type u) →+* (↑S : Type u)) (CC :=
                  CommRingCat.carrier) (F.objSupIsoProdEqLocus U V).inv :
                (a :
                    (↑(CommRingCat.of
                          ↥(((CommRingCat.Hom.hom (F.obj.map (homOfLE sorry).op)).comp
                                  (RingHom.fst (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))).eqLocus
                              ((CommRingCat.Hom.hom (F.obj.map (homOfLE sorry).op)).comp
                                (RingHom.snd (↑(F.obj.obj (op U)) : Type u) (↑(F.obj.obj (op V)) : Type u))))) :
                      Type u)) →
                  (↑(F.obj.obj (op (U ⊔ V))) : Type u))
              x :
            (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
                  (op (U ⊔ V))) :
              Type u)) :
        (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) :
          Type u)) :
    (↑(F.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op (U ⊓ W))) :
      Type u))
Tactic: rw [← e₁, ← TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst]