-- Lean 4 proof step from Mathlib.FieldTheory.Galois.Profinite (goal)
Goal:
k : Type u_3
K : Type u_4
inst : Field k
inst_1 : Field K
inst_2 : Algebra k K
g :
  (↑((limit (J := (FiniteGaloisIntermediateField k K)ᵒᵖ) (asProfiniteGaloisGroupFunctor k K)).toProfinite.toTop (P :=
        fun (X : TopCat.{u_4}) ↦ TotallyDisconnectedSpace.{u_4} (↑X : Type u_4))) :
    Type u_4)
L : IntermediateField k K
finiteDimensional : FiniteDimensional.{u_3, u_4} k ↥L
isGalois : IsGalois.{u_3, u_4} k ↥L
x :
  ↥{ toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois :
        FiniteGaloisIntermediateField k K }.toIntermediateField
L' : IntermediateField k K
finiteDimensional_1 : FiniteDimensional.{u_3, u_4} k ↥L'
isGalois_1 : IsGalois.{u_3, u_4} k ↥L'
h :
  { toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois :
      FiniteGaloisIntermediateField k K } ≤
    { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 }
this_1 : Algebra ↥L ↥L' := (Subsemiring.inclusion h).toAlgebra
this : IsScalarTower.{u_3, u_4, u_4} k ↥L ↥L' := ⋯
⊢ Eq.{u_4 + 1} (α := K)
    (↑((((proj
                    { toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois :
                      FiniteGaloisIntermediateField k K } :
                  (a : (↑(limit (asProfiniteGaloisGroupFunctor k K)).toProfinite.toTop : Type u_4)) →
                    Gal(↥{ toIntermediateField := L, finiteDimensional := finiteDimensional,
                            isGalois := isGalois }.toIntermediateField/k))
                g :
              Gal(↥{ toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois :
                      FiniteGaloisIntermediateField k K }.toIntermediateField/k)) :
            (a :
                ↥{ toIntermediateField := L, finiteDimensional := finiteDimensional,
                      isGalois := isGalois }.toIntermediateField) →
              ↥{ toIntermediateField := L, finiteDimensional := finiteDimensional,
                    isGalois := isGalois }.toIntermediateField)
          x) :
      K)
    (↑((((proj
                    { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                      FiniteGaloisIntermediateField k K } :
                  (a : (↑(limit (asProfiniteGaloisGroupFunctor k K)).toProfinite.toTop : Type u_4)) →
                    Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                            isGalois := isGalois_1 }.toIntermediateField/k))
                g :
              Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                      FiniteGaloisIntermediateField k K }.toIntermediateField/k)) :
            (a :
                ↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                      isGalois := isGalois_1 }.toIntermediateField) →
              ↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                    isGalois := isGalois_1 }.toIntermediateField)
          (Subtype.mk (p := fun (x : K) ↦
            x ∈
              { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                  FiniteGaloisIntermediateField k K }.toIntermediateField)
            (↑x : K) ⋯)) :
      K)
have mk : Eq.{u_4 + 1} (α := K)
  (↑((((ConcreteCategory.hom (FC := fun (x1 x2 : FiniteGrp.{u_4}) ↦ (↑x1.toGrp : Type u_4) →* (↑x2.toGrp : Type u_4))
                  (CC := fun (X : FiniteGrp.{u_4}) ↦ (↑X.toGrp : Type u_4)) (X :=
                  Functor.obj (finGaloisGroupFunctor k K)
                    (op
                      { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                        FiniteGaloisIntermediateField k K }))
                  (CategoryTheory.Functor.map (finGaloisGroupFunctor k K) h.hom.op) :
                (a :
                    (fun (X : FiniteGrp.{u_4}) ↦ (↑X.toGrp : Type u_4))
                      ((finGaloisGroupFunctor k K).obj
                        (op
                          { toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                            isGalois := isGalois_1 }))) →
                  (fun (X : FiniteGrp.{u_4}) ↦ (↑X.toGrp : Type u_4))
                    ((finGaloisGroupFunctor k K).obj
                      (op { toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois })))
              ((proj
                      { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                        FiniteGaloisIntermediateField k K } :
                    (a : (↑(limit (asProfiniteGaloisGroupFunctor k K)).toProfinite.toTop : Type u_4)) →
                      Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                              isGalois := isGalois_1 }.toIntermediateField/k))
                  g :
                Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                        FiniteGaloisIntermediateField k K }.toIntermediateField/k)) :
            (fun (X : FiniteGrp.{u_4}) ↦ (↑X.toGrp : Type u_4))
              (Functor.obj (finGaloisGroupFunctor k K)
                (op
                  { toIntermediateField := L, finiteDimensional := finiteDimensional, isGalois := isGalois :
                    FiniteGaloisIntermediateField k K }))) :
          (a :
              ↥{ toIntermediateField := L, finiteDimensional := finiteDimensional,
                    isGalois := isGalois }.toIntermediateField) →
            ↥{ toIntermediateField := L, finiteDimensional := finiteDimensional,
                  isGalois := isGalois }.toIntermediateField)
        x) :
    K)
  (↑((((proj
                  { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                    FiniteGaloisIntermediateField k K } :
                (a : (↑(limit (asProfiniteGaloisGroupFunctor k K)).toProfinite.toTop : Type u_4)) →
                  Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                          isGalois := isGalois_1 }.toIntermediateField/k))
              g :
            Gal(↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                    FiniteGaloisIntermediateField k K }.toIntermediateField/k)) :
          (a :
              ↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                    isGalois := isGalois_1 }.toIntermediateField) →
            ↥{ toIntermediateField := L', finiteDimensional := finiteDimensional_1,
                  isGalois := isGalois_1 }.toIntermediateField)
        (Subtype.mk (p := fun (x : K) ↦
          x ∈
            { toIntermediateField := L', finiteDimensional := finiteDimensional_1, isGalois := isGalois_1 :
                FiniteGaloisIntermediateField k K }.toIntermediateField)
          (↑x : K) sorry)) :
    K)
Tactic: rw [← finGaloisGroupFunctor_map_proj_eq_proj g h.hom]