l3lab/ntp-mathlib huggingface dataset:
/-- Simpler expression for the differential in the standard resolution of `k` as a
`G`-representation. It sends `(g₀, ..., gₙ₊₁) ↦ ∑ (-1)ⁱ • (g₀, ..., ĝᵢ, ..., gₙ₊₁)`. -/
theorem d_eq (n : ℕ) : ((groupCohomology.resolution k G).d (n + 1) n).hom = d k G (n + 1) := by
  refine' Finsupp.lhom_ext' fun x => LinearMap.ext_ring _
  dsimp [groupCohomology.resolution]
/- Porting note: broken proof was
  simpa [← @intCast_smul k, simplicial_object.δ] -/
  simp_rw [alternatingFaceMapComplex_obj_d, AlternatingFaceMapComplex.objD, SimplicialObject.δ,
    Functor.comp_map, ← intCast_smul (k := k) ((-1) ^ _ : ℤ), Int.cast_pow, Int.cast_neg,
    Int.cast_one, Action.sum_hom, Action.smul_hom, Rep.linearization_map_hom]
  rw [LinearMap.coeFn_sum, Fintype.sum_apply]
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n✝ : ℕ
inst✝ : Monoid G
n : ℕ
x : ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk (n + 1)))).V
⊢ (Finset.sum Finset.univ fun c =>
      ((-1) ^ ↑c • Finsupp.lmapDomain k k ((classifyingSpaceUniversalCover G).map (SimplexCategory.δ c).op).hom)
        fun₀ | x => 1) =
    (d k G (n + 1)) fun₀ | x => 1

Next tactic:
erw [d_of (k := k) x]
/-- Simpler expression for the differential in the standard resolution of `k` as a
`G`-representation. It sends `(g₀, ..., gₙ₊₁) ↦ ∑ (-1)ⁱ • (g₀, ..., ĝᵢ, ..., gₙ₊₁)`. -/
theorem d_eq (n : ℕ) : ((groupCohomology.resolution k G).d (n + 1) n).hom = d k G (n + 1) := by
  refine' Finsupp.lhom_ext' fun x => LinearMap.ext_ring _
  dsimp [groupCohomology.resolution]
/- Porting note: broken proof was
  simpa [← @intCast_smul k, simplicial_object.δ] -/
  simp_rw [alternatingFaceMapComplex_obj_d, AlternatingFaceMapComplex.objD, SimplicialObject.δ,
    Functor.comp_map, ← intCast_smul (k := k) ((-1) ^ _ : ℤ), Int.cast_pow, Int.cast_neg,
    Int.cast_one, Action.sum_hom, Action.smul_hom, Rep.linearization_map_hom]
  rw [LinearMap.coeFn_sum, Fintype.sum_apply]
  erw [d_of (k := k) x]
/- Porting note: want to rewrite `LinearMap.smul_apply` but simp/simp_rw won't do it; I need erw,
so using Finset.sum_congr to get rid of the binder -/
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n✝ : ℕ
inst✝ : Monoid G
n : ℕ
x : ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk (n + 1)))).V
⊢ (Finset.sum Finset.univ fun c =>
      ((-1) ^ ↑c • Finsupp.lmapDomain k k ((classifyingSpaceUniversalCover G).map (SimplexCategory.δ c).op).hom)
        fun₀ | x => 1) =
    Finset.sum Finset.univ fun p => fun₀ | x ∘ Fin.succAbove p => (-1) ^ ↑p

Next tactic:
refine' Finset.sum_congr rfl fun _ _ => _
/-- Simpler expression for the differential in the standard resolution of `k` as a
`G`-representation. It sends `(g₀, ..., gₙ₊₁) ↦ ∑ (-1)ⁱ • (g₀, ..., ĝᵢ, ..., gₙ₊₁)`. -/
theorem d_eq (n : ℕ) : ((groupCohomology.resolution k G).d (n + 1) n).hom = d k G (n + 1) := by
  refine' Finsupp.lhom_ext' fun x => LinearMap.ext_ring _
  dsimp [groupCohomology.resolution]
/- Porting note: broken proof was
  simpa [← @intCast_smul k, simplicial_object.δ] -/
  simp_rw [alternatingFaceMapComplex_obj_d, AlternatingFaceMapComplex.objD, SimplicialObject.δ,
    Functor.comp_map, ← intCast_smul (k := k) ((-1) ^ _ : ℤ), Int.cast_pow, Int.cast_neg,
    Int.cast_one, Action.sum_hom, Action.smul_hom, Rep.linearization_map_hom]
  rw [LinearMap.coeFn_sum, Fintype.sum_apply]
  erw [d_of (k := k) x]
/- Porting note: want to rewrite `LinearMap.smul_apply` but simp/simp_rw won't do it; I need erw,
so using Finset.sum_congr to get rid of the binder -/
  refine' Finset.sum_congr rfl fun _ _ => _
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n✝ : ℕ
inst✝ : Monoid G
n : ℕ
x : ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk (n + 1)))).V
x✝¹ : Fin (n + 2)
x✝ : x✝¹ ∈ Finset.univ
⊢ (((-1) ^ ↑x✝¹ • Finsupp.lmapDomain k k ((classifyingSpaceUniversalCover G).map (SimplexCategory.δ x✝¹).op).hom)
      fun₀ | x => 1) =
    fun₀ | x ∘ Fin.succAbove x✝¹ => (-1) ^ ↑x✝¹

Next tactic:
erw [LinearMap.smul_apply]
/-- Simpler expression for the differential in the standard resolution of `k` as a
`G`-representation. It sends `(g₀, ..., gₙ₊₁) ↦ ∑ (-1)ⁱ • (g₀, ..., ĝᵢ, ..., gₙ₊₁)`. -/
theorem d_eq (n : ℕ) : ((groupCohomology.resolution k G).d (n + 1) n).hom = d k G (n + 1) := by
  refine' Finsupp.lhom_ext' fun x => LinearMap.ext_ring _
  dsimp [groupCohomology.resolution]
/- Porting note: broken proof was
  simpa [← @intCast_smul k, simplicial_object.δ] -/
  simp_rw [alternatingFaceMapComplex_obj_d, AlternatingFaceMapComplex.objD, SimplicialObject.δ,
    Functor.comp_map, ← intCast_smul (k := k) ((-1) ^ _ : ℤ), Int.cast_pow, Int.cast_neg,
    Int.cast_one, Action.sum_hom, Action.smul_hom, Rep.linearization_map_hom]
  rw [LinearMap.coeFn_sum, Fintype.sum_apply]
  erw [d_of (k := k) x]
/- Porting note: want to rewrite `LinearMap.smul_apply` but simp/simp_rw won't do it; I need erw,
so using Finset.sum_congr to get rid of the binder -/
  refine' Finset.sum_congr rfl fun _ _ => _
  erw [LinearMap.smul_apply]
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n✝ : ℕ
inst✝ : Monoid G
n : ℕ
x : ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk (n + 1)))).V
x✝¹ : Fin (n + 2)
x✝ : x✝¹ ∈ Finset.univ
⊢ ((-1) ^ ↑x✝¹ •
      (Finsupp.lmapDomain k k ((classifyingSpaceUniversalCover G).map (SimplexCategory.δ x✝¹).op).hom) fun₀ | x => 1) =
    fun₀ | x ∘ Fin.succAbove x✝¹ => (-1) ^ ↑x✝¹

Next tactic:
rw [Finsupp.lmapDomain_apply, Finsupp.mapDomain_single, Finsupp.smul_single', mul_one]
/-- Simpler expression for the differential in the standard resolution of `k` as a
`G`-representation. It sends `(g₀, ..., gₙ₊₁) ↦ ∑ (-1)ⁱ • (g₀, ..., ĝᵢ, ..., gₙ₊₁)`. -/
theorem d_eq (n : ℕ) : ((groupCohomology.resolution k G).d (n + 1) n).hom = d k G (n + 1) := by
  refine' Finsupp.lhom_ext' fun x => LinearMap.ext_ring _
  dsimp [groupCohomology.resolution]
/- Porting note: broken proof was
  simpa [← @intCast_smul k, simplicial_object.δ] -/
  simp_rw [alternatingFaceMapComplex_obj_d, AlternatingFaceMapComplex.objD, SimplicialObject.δ,
    Functor.comp_map, ← intCast_smul (k := k) ((-1) ^ _ : ℤ), Int.cast_pow, Int.cast_neg,
    Int.cast_one, Action.sum_hom, Action.smul_hom, Rep.linearization_map_hom]
  rw [LinearMap.coeFn_sum, Fintype.sum_apply]
  erw [d_of (k := k) x]
/- Porting note: want to rewrite `LinearMap.smul_apply` but simp/simp_rw won't do it; I need erw,
so using Finset.sum_congr to get rid of the binder -/
  refine' Finset.sum_congr rfl fun _ _ => _
  erw [LinearMap.smul_apply]
  rw [Finsupp.lmapDomain_apply, Finsupp.mapDomain_single, Finsupp.smul_single', mul_one]
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n✝ : ℕ
inst✝ : Monoid G
n : ℕ
x : ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk (n + 1)))).V
x✝¹ : Fin (n + 2)
x✝ : x✝¹ ∈ Finset.univ
⊢ (fun₀ | Action.Hom.hom ((classifyingSpaceUniversalCover G).map (SimplexCategory.δ x✝¹).op) x => (-1) ^ ↑x✝¹) =
    fun₀ | x ∘ Fin.succAbove x✝¹ => (-1) ^ ↑x✝¹

Next tactic:
rfl
/-- The hom of `k`-linear `G`-representations `k[G¹] → k` sending `∑ nᵢgᵢ ↦ ∑ nᵢ`. -/
def ε : Rep.ofMulAction k G (Fin 1 → G) ⟶ Rep.trivial k G k where
  hom := Finsupp.total _ _ _ fun _ => (1 : k)
  comm g := Finsupp.lhom_ext' fun _ => LinearMap.ext_ring (by
    

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
g : ↑(MonCat.of G)
x✝ : Fin 1 → G
⊢ (((Rep.ofMulAction k G (Fin 1 → G)).ρ g ≫ Finsupp.total (Fin 1 → G) (↑(Rep.trivial k G k).V) k fun x => 1) ∘ₗ
        Finsupp.lsingle x✝)
      1 =
    (((Finsupp.total (Fin 1 → G) (↑(Rep.trivial k G k).V) k fun x => 1) ≫ (Rep.trivial k G k).ρ g) ∘ₗ
        Finsupp.lsingle x✝)
      1

Next tactic:
show
      Finsupp.total (Fin 1 → G) k k (fun _ => (1 : k)) (Finsupp.mapDomain _ (Finsupp.single _ _)) =
        Finsupp.total (Fin 1 → G) k k (fun _ => (1 : k)) (Finsupp.single _ _)
/-- The hom of `k`-linear `G`-representations `k[G¹] → k` sending `∑ nᵢgᵢ ↦ ∑ nᵢ`. -/
def ε : Rep.ofMulAction k G (Fin 1 → G) ⟶ Rep.trivial k G k where
  hom := Finsupp.total _ _ _ fun _ => (1 : k)
  comm g := Finsupp.lhom_ext' fun _ => LinearMap.ext_ring (by
    show
      Finsupp.total (Fin 1 → G) k k (fun _ => (1 : k)) (Finsupp.mapDomain _ (Finsupp.single _ _)) =
        Finsupp.total (Fin 1 → G) k k (fun _ => (1 : k)) (Finsupp.single _ _)
    

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
g : ↑(MonCat.of G)
x✝ : Fin 1 → G
⊢ (Finsupp.total (Fin 1 → G) k k fun x => 1) (Finsupp.mapDomain (fun a => (fun x => g • x) a) fun₀ | x✝ => 1) =
    (Finsupp.total (Fin 1 → G) k k fun x => 1) fun₀ | x✝ => 1

Next tactic:
simp only [Finsupp.mapDomain_single, Finsupp.total_single]
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ HomologicalComplex.Hom.f (forget₂ToModuleCatHomotopyEquiv k G).hom 0 = (forget₂ (Rep k G) (ModuleCat k)).map (ε k G)

Next tactic:
show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ HomologicalComplex.Hom.f
      ((HomotopyEquiv.ofIso (compForgetAugmentedIso k G).symm).hom ≫
        (SimplicialObject.Augmented.ExtraDegeneracy.homotopyEquiv
              (extraDegeneracyCompForgetAugmentedToModule k G)).hom ≫
          (HomotopyEquiv.ofIso
              ((ChainComplex.single₀ (ModuleCat k)).mapIso
                (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom)
      0 =
    (forget₂ (Rep k G) (ModuleCat k)).map (ε k G)

Next tactic:
simp only [HomologicalComplex.comp_f]
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ HomologicalComplex.Hom.f (HomotopyEquiv.ofIso (compForgetAugmentedIso k G).symm).hom 0 ≫
      HomologicalComplex.Hom.f
          (SimplicialObject.Augmented.ExtraDegeneracy.homotopyEquiv
              (extraDegeneracyCompForgetAugmentedToModule k G)).hom
          0 ≫
        HomologicalComplex.Hom.f
          (HomotopyEquiv.ofIso
              ((ChainComplex.single₀ (ModuleCat k)).mapIso
                (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom
          0 =
    (forget₂ (Rep k G) (ModuleCat k)).map (ε k G)

Next tactic:
dsimp
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ HomologicalComplex.Hom.f (HomotopyEquiv.ofIso (compForgetAugmentedIso k G).symm).hom 0 ≫
      HomologicalComplex.Hom.f
          (SimplicialObject.Augmented.ExtraDegeneracy.homotopyEquiv
              (extraDegeneracyCompForgetAugmentedToModule k G)).hom
          0 ≫
        HomologicalComplex.Hom.f
          (HomotopyEquiv.ofIso
              ((ChainComplex.single₀ (ModuleCat k)).mapIso
                (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom
          0 =
    (forget₂ (Rep k G) (ModuleCat k)).map (ε k G)

Next tactic:
convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · 

Proof state:
case h.e'_2.h.e'_6.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
e_4✝ :
  (compForgetAugmented.toModule k G).left.obj (Opposite.op (SimplexCategory.mk 0)) =
    HomologicalComplex.X (forget₂ToModuleCat k G) 0
⊢ HomologicalComplex.Hom.f (HomotopyEquiv.ofIso (compForgetAugmentedIso k G).symm).hom 0 =
    𝟙 (HomologicalComplex.X (forget₂ToModuleCat k G) 0)

Next tactic:
dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    

Proof state:
case h.e'_2.h.e'_6.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
e_4✝ :
  (compForgetAugmented.toModule k G).left.obj (Opposite.op (SimplexCategory.mk 0)) =
    HomologicalComplex.X (forget₂ToModuleCat k G) 0
⊢ HomologicalComplex.Hom.f
      (eqToIso
            (_ :
              ((SimplicialObject.whiskering (Rep k G) (ModuleCat k)).obj (forget₂ (Rep k G) (ModuleCat k)) ⋙
                      alternatingFaceMapComplex (ModuleCat k)).obj
                  (classifyingSpaceUniversalCover G ⋙ (Rep.linearization k G).toLaxMonoidalFunctor.toFunctor) =
                (alternatingFaceMapComplex (Rep k G) ⋙
                      Functor.mapHomologicalComplex (forget₂ (Rep k G) (ModuleCat k)) (ComplexShape.down ℕ)).obj
                  (classifyingSpaceUniversalCover G ⋙ (Rep.linearization k G).toLaxMonoidalFunctor.toFunctor))).symm.hom
      0 =
    𝟙 (HomologicalComplex.X (forget₂ToModuleCat k G) 0)

Next tactic:
simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  

Proof state:
case h.e'_3
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) =
    HomologicalComplex.Hom.f
        (SimplicialObject.Augmented.ExtraDegeneracy.homotopyEquiv (extraDegeneracyCompForgetAugmentedToModule k G)).hom
        0 ≫
      HomologicalComplex.Hom.f
        (HomotopyEquiv.ofIso
            ((ChainComplex.single₀ (ModuleCat k)).mapIso
              (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom
        0

Next tactic:
trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
  · 

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) =
    (Finsupp.total (⊤_ Type u) k k fun x => 1) ∘ₗ (ModuleCat.free k).map (terminal.from (Fin 1 → G))

Next tactic:
dsimp
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
  · dsimp
    

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) =
    (Finsupp.total (⊤_ Type u) k k fun x => 1) ∘ₗ Finsupp.lmapDomain k k (terminal.from (Fin 1 → G))

Next tactic:
erw [Finsupp.lmapDomain_total (α := Fin 1 → G) (R := k) (α' := ⊤_ Type u)
        (v := fun _ => (1 : k)) (v' := fun _ => (1 : k))
        (terminal.from
          ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk 0))).V)
        LinearMap.id fun i => rfl,
      LinearMap.id_comp]
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
  · dsimp
    erw [Finsupp.lmapDomain_total (α := Fin 1 → G) (R := k) (α' := ⊤_ Type u)
        (v := fun _ => (1 : k)) (v' := fun _ => (1 : k))
        (terminal.from
          ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk 0))).V)
        LinearMap.id fun i => rfl,
      LinearMap.id_comp]
    

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) = Finsupp.total (Fin 1 → G) k k fun x => 1

Next tactic:
rfl
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
  · dsimp
    erw [Finsupp.lmapDomain_total (α := Fin 1 → G) (R := k) (α' := ⊤_ Type u)
        (v := fun _ => (1 : k)) (v' := fun _ => (1 : k))
        (terminal.from
          ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk 0))).V)
        LinearMap.id fun i => rfl,
      LinearMap.id_comp]
    rfl
  · 

Proof state:
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (Finsupp.total (⊤_ Type u) k k fun x => 1) ∘ₗ (ModuleCat.free k).map (terminal.from (Fin 1 → G)) =
    HomologicalComplex.Hom.f
        (SimplicialObject.Augmented.ExtraDegeneracy.homotopyEquiv (extraDegeneracyCompForgetAugmentedToModule k G)).hom
        0 ≫
      HomologicalComplex.Hom.f
        (HomotopyEquiv.ofIso
            ((ChainComplex.single₀ (ModuleCat k)).mapIso
              (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom
        0

Next tactic:
congr
/-- The homotopy equivalence of complexes of `k`-modules between the standard resolution of `k` as
a trivial `G`-representation, and the complex which is `k` at 0 and 0 everywhere else, acts as
`∑ nᵢgᵢ ↦ ∑ nᵢ : k[G¹] → k` at 0. -/
theorem forget₂ToModuleCatHomotopyEquiv_f_0_eq :
    (forget₂ToModuleCatHomotopyEquiv k G).1.f 0 = (forget₂ (Rep k G) _).map (ε k G) := by
  show (HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _ ≫ HomotopyEquiv.hom _).f 0 = _
  simp only [HomologicalComplex.comp_f]
  dsimp
  convert Category.id_comp (X := (forget₂ToModuleCat k G).X 0) _
  · dsimp only [HomotopyEquiv.ofIso, compForgetAugmentedIso, map_alternatingFaceMapComplex]
    simp only [Iso.symm_hom, eqToIso.inv, HomologicalComplex.eqToHom_f, eqToHom_refl]
  trans (Finsupp.total _ _ _ fun _ => (1 : k)).comp ((ModuleCat.free k).map (terminal.from _))
  · dsimp
    erw [Finsupp.lmapDomain_total (α := Fin 1 → G) (R := k) (α' := ⊤_ Type u)
        (v := fun _ => (1 : k)) (v' := fun _ => (1 : k))
        (terminal.from
          ((classifyingSpaceUniversalCover G).obj (Opposite.op (SimplexCategory.mk 0))).V)
        LinearMap.id fun i => rfl,
      LinearMap.id_comp]
    rfl
  · congr
    · 

Proof state:
case e_f
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (Finsupp.total (⊤_ Type u) k k fun x => 1) =
    HomologicalComplex.Hom.f
      (HomotopyEquiv.ofIso
          ((ChainComplex.single₀ (ModuleCat k)).mapIso
            (LinearEquiv.toModuleIso (Finsupp.LinearEquiv.finsuppUnique k k (⊤_ Type u))))).hom
      0

Next tactic:
ext x