Theorem: groupCohomology.resolution.diagonalSucc_hom_single
File: Mathlib/RepresentationTheory/GroupCohomology/Resolution.lean

Proof steps:
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (diagonalSucc k G n).hom.hom (single f a) = single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((inv ((linearization k G).μ (Action.leftRegular G) { V := Fin n → G, ρ := 1 })).hom
        ((lmapDomain k k (actionDiagonalSucc G n).hom.hom) (single f a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
tactic: change (𝟙 ((linearization k G).1.obj (Action.leftRegular G)).V
      ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
    ((inv ((linearization k G).μ (Action.leftRegular G) { V := Fin n → G, ρ := 1 })).hom
      ((lmapDomain k k (actionDiagonalSucc G n).hom.hom) (single f a))) = _
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((inv ((linearization k G).μ (Action.leftRegular G) { V := Fin n → G, ρ := 1 })).hom
        ((lmapDomain k k (actionDiagonalSucc G n).hom.hom) (single f a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      (↑(finsuppTensorFinsupp' k (Action.leftRegular G).V (Fin n → G)).symm
        ((lmapDomain k k (actionDiagonalSucc G n).hom.hom) (single f a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
tactic: simp only [CategoryTheory.Functor.map_id, linearization_μ_inv_hom]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      (↑(finsuppTensorFinsupp' k (Action.leftRegular G).V (Fin n → G)).symm
        ((lmapDomain k k (actionDiagonalSucc G n).hom.hom) (single f a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((finsuppTensorFinsupp k k k k (Action.leftRegular G).V (Fin n → G)).symm
        ((lcongr (Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (TensorProduct.lid k k).symm)
          (single ((actionDiagonalSucc G n).hom.hom f) a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
tactic: erw [lmapDomain_apply, mapDomain_single, LinearEquiv.coe_toLinearMap, finsuppTensorFinsupp',
    LinearEquiv.trans_symm, LinearEquiv.trans_apply, lcongr_symm, Equiv.refl_symm]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((finsuppTensorFinsupp k k k k (Action.leftRegular G).V (Fin n → G)).symm
        ((lcongr (Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (TensorProduct.lid k k).symm)
          (single ((actionDiagonalSucc G n).hom.hom f) a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((finsuppTensorFinsupp k k k k (Action.leftRegular G).V (Fin n → G)).symm
        (single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) ((actionDiagonalSucc G n).hom.hom f))
          ((TensorProduct.lid k k).symm a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
tactic: erw [lcongr_single]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      ((finsuppTensorFinsupp k k k k (Action.leftRegular G).V (Fin n → G)).symm
        (single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) ((actionDiagonalSucc G n).hom.hom f))
          ((TensorProduct.lid k k).symm a))) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      (single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)).1
          1 ⊗ₜ[k]
        single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)).2
          a) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
tactic: rw [TensorProduct.lid_symm_apply, actionDiagonalSucc_hom_apply, finsuppTensorFinsupp_symm_single]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
f : Fin (n + 1) → G
a : k
⊢ (𝟙 ((linearization k G).obj (Action.leftRegular G)).V ⊗ (linearizationTrivialIso k G (Fin n → G)).hom.hom)
      (single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)).1
          1 ⊗ₜ[k]
        single ((Equiv.refl ((Action.leftRegular G).V × (Fin n → G))) (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)).2
          a) =
    single (f 0) 1 ⊗ₜ[k] single (fun i => (f i.castSucc)⁻¹ * f i.succ) a
state_after: no goals
tactic: rfl