-- Lean 4 proof step from Mathlib.Topology.Category.TopCat.GrothendieckTopology (goal)
Goal:
X Y : TopCat
𝒰 : precoverage.ZeroHypercover Y
heq :
  ∀ (i : 𝒰.I₀) (y : (↑(𝒰.X i) : Type u_1)),
    Eq (α := (↑Y : Type u_1))
      ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC := carrier)
              (𝒰.f i) :
            (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))
          y :
        (↑Y : Type u_1))
      ((↑(Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X i) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f i)) :
                    (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                x)
              ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                    carrier) (𝒰.f i) :
                  (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))
                y)
              ⋯) :
          (↑Y : Type u_1)) :
        (↑Y : Type u_1))
x : (i : 𝒰.I₀) → Functor.obj (Functor.obj yoneda X) (Opposite.op (𝒰.X i))
hx : Presieve.Arrows.Compatible (Functor.obj yoneda X) 𝒰.f x
i j : 𝒰.I₀
y : (↑Y : Type u_1)
xi : (↑(𝒰.X i) : Type u_1)
hi :
  (ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC := carrier) (𝒰.f i) :
        (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))
      xi =
    y
xj : (↑(𝒰.X j) : Type u_1)
hj :
  (ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC := carrier) (𝒰.f j) :
        (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1))
      xj =
    y
⊢ Eq (α := (↑X : Type u_1))
    ((Hom.hom (x i) : (a : (↑(𝒰.X i) : Type u_1)) → (↑X : Type u_1))
        ((⋯.toHomeomorph.symm :
              (a :
                  (↑(Set.range (⇑(ConcreteCategory.hom (𝒰.f i)) : (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))) :
                    Type u_1)) →
                (↑(𝒰.X i) : Type u_1))
            (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
                Membership.mem (γ := Set (↑Y : Type u_1))
                  (Set.range (ι := (↑(𝒰.X i) : Type u_1))
                    (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1)))
                          (CC := carrier) (𝒰.f i)) :
                      (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                  x)
                ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                      carrier) (𝒰.f i) :
                    (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))
                  xi)
                ⋯ :
              { x : (↑Y : Type u_1) //
                Membership.mem (γ := Set (↑Y : Type u_1))
                  (Set.range (ι := (↑(𝒰.X i) : Type u_1))
                    (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1)))
                          (CC := carrier) (𝒰.f i)) :
                      (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                  x }) :
          (↑(𝒰.X i) : Type u_1)) :
      (↑X : Type u_1))
    ((Hom.hom (x j) : (a : (↑(𝒰.X j) : Type u_1)) → (↑X : Type u_1))
        ((⋯.toHomeomorph.symm :
              (a :
                  (↑(Set.range (⇑(ConcreteCategory.hom (𝒰.f j)) : (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1))) :
                    Type u_1)) →
                (↑(𝒰.X j) : Type u_1))
            (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X j) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f j)) :
                    (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1)))
                x)
              y ⋯) :
          (↑(𝒰.X j) : Type u_1)) :
      (↑X : Type u_1))
have refine_1 : Eq (α := (↑X : Type u_1))
  ((Hom.hom (x i) : (a : (↑(𝒰.X i) : Type u_1)) → (↑X : Type u_1))
      ((sorry.toHomeomorph.symm :
            (a :
                (↑(Set.range (⇑(ConcreteCategory.hom (𝒰.f i)) : (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))) :
                  Type u_1)) →
              (↑(𝒰.X i) : Type u_1))
          (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X i) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f i)) :
                    (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                x)
              ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                    carrier) (𝒰.f i) :
                  (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1))
                xi)
              sorry :
            { x : (↑Y : Type u_1) //
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X i) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f i)) :
                    (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                x }) :
        (↑(𝒰.X i) : Type u_1)) :
    (↑X : Type u_1))
  ((Hom.hom (x j) : (a : (↑(𝒰.X j) : Type u_1)) → (↑X : Type u_1))
      ((sorry.toHomeomorph.symm :
            (a :
                (↑(Set.range (⇑(ConcreteCategory.hom (𝒰.f j)) : (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1))) :
                  Type u_1)) →
              (↑(𝒰.X j) : Type u_1))
          (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X j) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f j)) :
                    (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1)))
                x)
              ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                    carrier) (𝒰.f j) :
                  (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1))
                xj)
              sorry :
            { x : (↑Y : Type u_1) //
              Membership.mem (γ := Set (↑Y : Type u_1))
                (Set.range (ι := (↑(𝒰.X j) : Type u_1))
                  (⇑(ConcreteCategory.hom (FC := fun (X Y : TopCat.{u_1}) ↦ C((↑X : Type u_1), (↑Y : Type u_1))) (CC :=
                        carrier) (𝒰.f j)) :
                    (a : (↑(𝒰.X j) : Type u_1)) → (↑Y : Type u_1)))
                x }) :
        (↑(𝒰.X j) : Type u_1)) :
    (↑X : Type u_1))
Tactic: conv_rhs => simp only [← hj]