-- Lean 4 proof step from Mathlib.Topology.Sheaves.Flasque (goal)
Goal:
X : TopCat
U : Opens (↑X : Type u)
S : ShortComplex (Sheaf AddCommGrpCat X)
hS : S.ShortExact
inst : S.X₁.IsFlasque
s : (↑(S.X₃.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op U)) : Type u)
t : Under S.g s
ht : ∀ (a : Under S.g s), Nonempty.{u + 1} (a ⟶ t) → Nonempty.{u + 1} (t ⟶ a)
tle :
  unop
      ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        (S.X₂.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)) ≤
    U
tcomp :
  Eq (α :=
    ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC := AddCommGrpCat.carrier)
      (S.X₃.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
        (op
          (unop
            ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
              (S.X₂.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))))))
    (restrictOpen (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
      AddCommGrpCat.carrier) s
      (unop
        ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
          (S.X₂.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)))
      tle)
    ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
          AddCommGrpCat.carrier) (X :=
          S.X₂.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj
            ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
              (S.X₂.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)))
          (S.g.hom.app
            ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
              (S.X₂.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))) :
        (a : (↑(S.X₂.obj.obj (StructuredArrow.right t).fst) : Type u)) →
          (↑(S.X₃.obj.obj (StructuredArrow.right t).fst) : Type u))
      ((StructuredArrow.right t).snd (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        (S.X₂.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)))
x : (↑X : Type u)
hx : x ∈ U
this :
  Presheaf.IsLocallySurjective (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
    AddCommGrpCat.carrier) S.g.hom
⊢ x ∈
    unop
      ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        (S.X₂.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))
have obtain : ∀ (W : Opens (↑X : Type u)) (Wle : W ≤ U) (hW : x ∈ W)
  (t₁ :
    (↑(S.X₂.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) : Type u))
  (ht₁ :
    Eq (α :=
      (↑(S.X₃.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) :
        Type u))
      ((ConcreteCategory.hom (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
              AddCommGrpCat.carrier) (X :=
              S.X₂.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W))
              (S.g.hom.app (op W)) :
            (a : (↑(S.X₂.obj.obj (op W)) : Type u)) → (↑(S.X₃.obj.obj (op W)) : Type u))
          t₁ :
        (↑(S.X₃.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)) :
          Type u))
      (restrictOpen (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC :=
          AddCommGrpCat.carrier) s W Wle :
        ToType (FC := fun (x1 x2 : AddCommGrpCat.{u}) ↦ (↑x1 : Type u) →+ (↑x2 : Type u)) (CC := AddCommGrpCat.carrier)
          (S.X₃.obj (P := CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology (↑X : Type u))).obj (op W)))),
  x ∈
    unop
      ((StructuredArrow.right t).fst (β := fun (c : (Opens (↑X : Type u))ᵒᵖ) ↦
        (S.X₂.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))
Tactic: obtain ⟨W, Wle, ⟨t₁, ht₁⟩, hW⟩ := (isLocallySurjective_iff S.g.hom).mp this U s x hx