-- Lean 4 proof step from Mathlib.RepresentationTheory.Homological.GroupHomology.Functoriality (goal)
Goal:
k G : Type u
inst : CommRing k
inst_1 : Group G
A : Rep k G
S : Subgroup G
inst_2 : S.Normal
x : (↑(shortComplexH1 (A.coinvariantsShortComplex S).X₁).X₂ : Type u)
h : Membership.mem (γ := Submodule k (↑(shortComplexH1 (A.coinvariantsShortComplex S).X₁).X₂ : Type u)) ⊤ x
X : G →₀ ↥S →₀ (↑A : Type u)
hX :
  mapRange
      (⇑(ConcreteCategory.hom (FC := fun (x1 x2 : ModuleCat k) ↦ (↑x1 : Type u) →ₗ[k] (↑x2 : Type u)) (CC :=
            ModuleCat.carrier) (chains₁ToCoinvariantsKer (res S.subtype A))) :
        (a : (↑(ModuleCat.of k (↥S →₀ (↑(res S.subtype A) : Type u))) : Type u)) →
          (↑(ModuleCat.of k ↥(Coinvariants.ker (res S.subtype A).ρ)) : Type u))
      ⋯ X =
    x
Y : ↥S →₀ (↑A : Type u) :=
  X.sum fun (g : G) (f : ↥S →₀ (↑A : Type u)) ↦
    HSub.hSub (α := ↥S →₀ (↑A : Type u))
      ((mapRange.linearMap ((A.ρ : (a : G) → (↑A : Type u) →ₗ[k] (↑A : Type u)) g⁻¹) :
            (a : ↥S →₀ (↑A : Type u)) → ↥S →₀ (↑A : Type u))
          ((lmapDomain (↑A : Type u) k fun (s : ↥S) ↦
                (((MulAut.conjNormal : (a : G) → MulAut ↥S) g⁻¹ : MulAut ↥S) : (a : ↥S) → ↥S) s :
              (a : ↥S →₀ (↑A : Type u)) → ↥S →₀ (↑A : Type u))
            f) :
        ↥S →₀ (↑A : Type u))
      f
Z : G × G →₀ (↑A : Type u) :=
  X.sum fun (g : G) (f : ↥S →₀ (↑A : Type u)) ↦
    HSub.hSub (α := G × G →₀ (↑A : Type u)) (β := G × G →₀ (↑A : Type u))
      ((lmapDomain (↑A : Type u) k fun (s : ↥S) ↦ (g, g⁻¹ * (↑s : G) * g) :
            (a : ↥S →₀ (↑A : Type u)) → G × G →₀ (↑A : Type u))
          f :
        G × G →₀ (↑A : Type u))
      ((lmapDomain (↑A : Type u) k fun (s : ↥S) ↦ ((↑s : G), g) : (a : ↥S →₀ (↑A : Type u)) → G × G →₀ (↑A : Type u))
          f :
        G × G →₀ (↑A : Type u))
⊢ Eq (α := (↑(shortComplexH1 A).opcycles : Type u))
    ((ModuleCat.Hom.hom ((mapShortComplexH1 S.subtype (𝟙 (res S.subtype A))).τ₂ ≫ (shortComplexH1 A).pOpcycles) :
          (a : (↑(shortComplexH1 (res S.subtype A)).X₂ : Type u)) → (↑(shortComplexH1 A).opcycles : Type u))
        Y :
      (↑(shortComplexH1 A).opcycles : Type u))
    ((ModuleCat.Hom.hom
            (Hom.τ₂ (mapShortComplexH1 (MonoidHom.id G) (A.coinvariantsShortComplex S).f) ≫
              (shortComplexH1 A).pOpcycles) :
          (a : (↑(shortComplexH1 (A.coinvariantsShortComplex S).X₁).X₂ : Type u)) →
            (↑(shortComplexH1 A).opcycles : Type u))
        x :
      (↑(shortComplexH1 A).opcycles : Type u))
have apply : (ModuleCat.Hom.hom (shortComplexH1 A).f : (a : (↑(shortComplexH1 A).X₁ : Type u)) → (↑(shortComplexH1 A).X₂ : Type u))
    Z =
  HSub.hSub (α := (↑(shortComplexH1 A).X₂ : Type u)) (β := (↑(shortComplexH1 A).X₂ : Type u))
    (((mapShortComplexH1 S.subtype (𝟙 (res S.subtype A))).τ₂.hom' :
          (a : (↑(shortComplexH1 (res S.subtype A)).X₂ : Type u)) → (↑(shortComplexH1 A).X₂ : Type u))
        Y :
      (↑(shortComplexH1 A).X₂ : Type u))
    ((ModuleCat.Hom.hom' (Hom.τ₂ (mapShortComplexH1 (MonoidHom.id G) (A.coinvariantsShortComplex S).f)) :
          (a : (↑(shortComplexH1 (A.coinvariantsShortComplex S).X₁).X₂ : Type u)) → (↑(shortComplexH1 A).X₂ : Type u))
        x :
      (↑(shortComplexH1 A).X₂ : Type u))
Tactic: apply (moduleCat_pOpcycles_eq_iff _ _ _).2 ⟨Z, ?_⟩