-- 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
refine_1 :
  (i : 𝒰.I₀) →
    C((↑((fun (i : 𝒰.I₀) ↦
              (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)) :
                Set (↑Y : Type u_1)))
            i) :
        Type u_1),
      (↑X : Type u_1))
refine_1₁ :
  ∀ (i j : 𝒰.I₀) (x_1 : (↑Y : Type u_1))
    (hxi :
      Membership.mem (γ := Set (↑Y : Type u_1))
        ((fun (i : 𝒰.I₀) ↦
            (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)) :
              Set (↑Y : Type u_1)))
          i)
        x_1)
    (hxj :
      Membership.mem (γ := Set (↑Y : Type u_1))
        ((fun (i : 𝒰.I₀) ↦
            (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)) :
              Set (↑Y : Type u_1)))
          j)
        x_1),
    Eq (α := (↑X : Type u_1))
      (({
              toFun :=
                Function.comp (β := (↑(Opposite.unop (Opposite.op (𝒰.X i))) : Type u_1))
                  (⇑(Hom.hom (x i)) : (a : (↑(Opposite.unop (Opposite.op (𝒰.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)),
              continuous_toFun := ⋯ } :
            (a :
                (↑((fun (i : 𝒰.I₀) ↦
                        Set.range (⇑(ConcreteCategory.hom (𝒰.f i)) : (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                      i) :
                  Type u_1)) →
              (↑X : Type u_1))
          (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
            Membership.mem (γ := Set (↑Y : Type u_1))
              ((fun (i : 𝒰.I₀) ↦
                  (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)) :
                    Set (↑Y : Type u_1)))
                i)
              x)
            x_1 hxi) :
        (↑X : Type u_1))
      (({
              toFun :=
                Function.comp (β := (↑(Opposite.unop (Opposite.op (𝒰.X j))) : Type u_1))
                  (⇑(Hom.hom (x j)) : (a : (↑(Opposite.unop (Opposite.op (𝒰.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)),
              continuous_toFun := ⋯ } :
            (a :
                (↑((fun (i : 𝒰.I₀) ↦
                        Set.range (⇑(ConcreteCategory.hom (𝒰.f i)) : (a : (↑(𝒰.X i) : Type u_1)) → (↑Y : Type u_1)))
                      j) :
                  Type u_1)) →
              (↑X : Type u_1))
          (Subtype.mk (p := fun (x : (↑Y : Type u_1)) ↦
            Membership.mem (γ := Set (↑Y : Type u_1))
              ((fun (i : 𝒰.I₀) ↦
                  (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)) :
                    Set (↑Y : Type u_1)))
                j)
              x)
            x_1 hxj) :
        (↑X : Type u_1))
⊢ (fun (X : Type u_1) ↦ X) (Functor.obj (Functor.obj yoneda X) (Opposite.op Y))
have refine_1₂ : ∀ (x : (↑Y : Type u_1)),
  ∃ (i : 𝒰.I₀),
    (fun (i : 𝒰.I₀) ↦
          (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)) :
            Set (↑Y : Type u_1)))
        i ∈
      nhds x
Tactic: refine ofHom <| ContinuousMap.liftCover (fun i ↦ Set.range (𝒰.f i)) ?_ ?_ ?_