-- Lean 4 proof step from Mathlib.CategoryTheory.Galois.IsFundamentalgroup (goal)
Goal:
C : Type u₁
inst : Category.{u₂, u₁} C
F : Functor.{u₂, w, u₁, w + 1} C FintypeCat
G : Type u_1
inst_1 : Group G
inst_2 : (X : C) → MulAction.{u_1, w} G (F.obj X).obj
inst_3 : IsNaturalSMul F G
inst_4 : GaloisCategory.{u₁, u₂} C
inst_5 : FiberFunctor F
t : Aut F
ι : Type u_2
inst_6 : Finite ι
X : ι → C
inst_7 : ∀ (i : ι), IsGalois.{u₁, u₂} (X i)
h : ∀ (X : C) [IsGalois.{u₁, u₂} X], MulAction.IsPretransitive.{u_1, w} G (F.obj X).obj
x : (i : ι) → (F.obj (X i)).obj := fun (i : ι) ↦ Nonempty.some ⋯
P : C := piObj.{u_2, u₂, u₁} X
is₁ : F.obj P ≅ ∏ᶜ fun (i : ι) ↦ F.obj (X i) := PreservesProduct.iso F X
is₂ : ObjectProperty.FullSubcategory.obj (P := Finite) (∏ᶜ fun (i : ι) ↦ F.obj (X i)) ≃ ((i : ι) → (F.obj (X i)).obj) :=
  FintypeCat.productEquiv fun (i : ι) ↦ F.obj (X i)
px : (F.obj P).obj :=
  (@ConcreteCategory.hom _ (ObjectProperty.FullSubcategory.category Finite)
        (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦ TypeCat.Fun X.obj Y.obj)
        (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj)
        (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦
          (TypeCat.instFunLikeFun : FunLike (TypeCat.Fun X.obj Y.obj) X.obj Y.obj))
        _ _ _ is₁.inv :
      (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (∏ᶜ fun (i : ι) ↦ F.obj (X i))) →
        (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj P))
    ((is₂.symm : (a : (i : ι) → (F.obj (X i)).obj) → (∏ᶜ fun (i : ι) ↦ F.obj (X i)).obj) x :
      ObjectProperty.FullSubcategory.obj (P := Finite) (∏ᶜ fun (i : ι) ↦ F.obj (X i)))
hpx :
  ∀ (i : ι),
    (@ConcreteCategory.hom _ (ObjectProperty.FullSubcategory.category Finite)
            (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦ TypeCat.Fun X.obj Y.obj)
            (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj)
            (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦
              (TypeCat.instFunLikeFun : FunLike (TypeCat.Fun X.obj Y.obj) X.obj Y.obj))
            _ _ _ (F.map (Pi.π X i) : F.obj (piObj.{u_2, u₂, u₁} X) ⟶ F.obj (X i)) :
          (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (∏ᶜ X))) →
            (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
        px =
      x i
⊢ ∃ (g : G),
    ∀ (i : ι) (x : (F.obj (X i)).obj),
      g • x =
        (@ConcreteCategory.hom _ (ObjectProperty.FullSubcategory.category Finite)
              (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦ TypeCat.Fun X.obj Y.obj)
              (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj)
              (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦
                (TypeCat.instFunLikeFun : FunLike (TypeCat.Fun X.obj Y.obj) X.obj Y.obj))
              _ _ _ (t.hom.app (X i) : F.obj (X i) ⟶ F.obj (X i)) :
            (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i))) →
              (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
          x
have obtain : ∀ (A : C) (f : A ⟶ P) (a : (F.obj A).obj),
  IsGalois.{u₁, u₂} A →
    ∀
      (hfa :
        (@ConcreteCategory.hom _ (ObjectProperty.FullSubcategory.category Finite)
                (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦ TypeCat.Fun X.obj Y.obj)
                (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj)
                (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦
                  (TypeCat.instFunLikeFun : FunLike (TypeCat.Fun X.obj Y.obj) X.obj Y.obj))
                _ _ _ (F.map f) :
              (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj A)) →
                (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj P))
            a =
          px),
      ∃ (g : G),
        ∀ (i : ι) (x : (F.obj (X i)).obj),
          g • x =
            (@ConcreteCategory.hom _ (ObjectProperty.FullSubcategory.category Finite)
                  (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦ TypeCat.Fun X.obj Y.obj)
                  (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj)
                  (fun (X Y : ObjectProperty.FullSubcategory Finite) ↦
                    (TypeCat.instFunLikeFun : FunLike (TypeCat.Fun X.obj Y.obj) X.obj Y.obj))
                  _ _ _ (t.hom.app (X i) : F.obj (X i) ⟶ F.obj (X i)) :
                (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i))) →
                  (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
              x
Tactic: obtain ⟨A, f, a, _, hfa⟩ := exists_hom_from_galois_of_fiber F P px