-- 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
A : C
f : A ⟶ P
a : (F.obj A).obj
left : 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
hg :
  ∀ (x : (F.obj A).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 A) :
          (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj A)) →
            (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj A))
        x
i : ι
y : (F.obj (X i)).obj
rw :
  HSMul.hSMul (β := (F.obj (X i)).obj) g
      ((@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 :
        (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X 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))
          _ _ _ (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)))
      ((@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 :
        (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
rw₁ :
  Eq (α := (F.obj (X i)).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))
            _ _ _ (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)))
        (g • px) :
      (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X 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))
            _ _ _ (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)))
        ((@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 :
          (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i))) :
      (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
⊢ g • x 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))
          _ _ _ (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 i)
have rw₂ : Eq (α := (F.obj (X i)).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))
          _ _ _ (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)))
      (g • px) :
    (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X 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)))
      ((@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 (piObj.{u_2, u₂, u₁} X) : F.obj (piObj.{u_2, u₂, u₁} X) ⟶ F.obj (piObj.{u_2, u₂, u₁} X)) :
            (a : (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (∏ᶜ X))) →
              (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (∏ᶜ X)))
          px :
        (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (piObj.{u_2, u₂, u₁} X))) :
    (fun (X : ObjectProperty.FullSubcategory Finite) ↦ X.obj) (F.obj (X i)))
Tactic: rw [← hpx i, ← IsNaturalSMul.naturality, FunctorToFintypeCat.naturality,
    ← hfa, FunctorToFintypeCat.naturality, ← IsNaturalSMul.naturality, hg]