Theorem: inhomogeneousCochains.d_eq
File: Mathlib/RepresentationTheory/GroupCohomology/Basic.lean

Proof steps:
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
⊢ d n A =
    (diagonalHomEquiv n A).toModuleIso.inv ≫
      (linearYonedaObjResolution A).d n (n + 1) ≫ (diagonalHomEquiv (n + 1) A).toModuleIso.hom
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ((diagonalHomEquiv n A).toModuleIso.inv ≫
        (linearYonedaObjResolution A).d n (n + 1) ≫ (diagonalHomEquiv (n + 1) A).toModuleIso.hom)
      f g
tactic: ext f g
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ((diagonalHomEquiv n A).toModuleIso.inv ≫
        (linearYonedaObjResolution A).d n (n + 1) ≫ (diagonalHomEquiv (n + 1) A).toModuleIso.hom)
      f g
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g = (diagonalHomEquiv (n + 1) A) ((resolution k G).d (n + 1) n ≫ (diagonalHomEquiv n A).symm f) g
tactic: change d n A f g = diagonalHomEquiv (n + 1) A
    ((resolution k G).d (n + 1) n ≫ (diagonalHomEquiv n A).symm f) g
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g = (diagonalHomEquiv (n + 1) A) ((resolution k G).d (n + 1) n ≫ (diagonalHomEquiv n A).symm f) g
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g = ((diagonalHomEquiv n A).symm f).hom ((resolution.d k G (n + 1)) (Finsupp.single (Fin.partialProd g) 1))
tactic: erw [diagonalHomEquiv_apply, Action.comp_hom, ModuleCat.comp_def, LinearMap.comp_apply,
    resolution.d_eq]
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g = ((diagonalHomEquiv n A).symm f).hom ((resolution.d k G (n + 1)) (Finsupp.single (Fin.partialProd g) 1))
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ((diagonalHomEquiv n A).symm f).hom
      (∑ p : Fin (n + 1 + 1), Finsupp.single (Fin.partialProd g ∘ p.succAbove) ((-1) ^ ↑p))
tactic: erw [resolution.d_of (Fin.partialProd g)]
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ((diagonalHomEquiv n A).symm f).hom
      (∑ p : Fin (n + 1 + 1), Finsupp.single (Fin.partialProd g ∘ p.succAbove) ((-1) ^ ↑p))
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ∑ x : Fin (n + 1 + 1),
      ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑x • Finsupp.single (Fin.partialProd g ∘ x.succAbove) 1)
tactic: simp only [map_sum, ← Finsupp.smul_single_one _ ((-1 : k) ^ _)]
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (d n A) f g =
    ∑ x : Fin (n + 1 + 1),
      ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑x • Finsupp.single (Fin.partialProd g ∘ x.succAbove) 1)
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (A.ρ (g 0)) (f fun i => g i.succ) + ∑ j : Fin (n + 1), (-1) ^ (↑j + 1) • f (j.contractNth (fun x x_1 => x * x_1) g) =
    (A.ρ ((Fin.partialProd g ∘ Fin.succ) 0))
        (f fun i => ((Fin.partialProd g ∘ Fin.succ) i.castSucc)⁻¹ * (Fin.partialProd g ∘ Fin.succ) i.succ) +
      ∑ i : Fin (n + 1),
        ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑i.succ • Finsupp.single (Fin.partialProd g ∘ i.succ.succAbove) 1)
tactic: erw [d_apply, @Fin.sum_univ_succ _ _ (n + 1), Fin.val_zero, pow_zero, one_smul,
    Fin.succAbove_zero, diagonalHomEquiv_symm_apply f (Fin.partialProd g ∘ @Fin.succ (n + 1))]
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (A.ρ (g 0)) (f fun i => g i.succ) + ∑ j : Fin (n + 1), (-1) ^ (↑j + 1) • f (j.contractNth (fun x x_1 => x * x_1) g) =
    (A.ρ ((Fin.partialProd g ∘ Fin.succ) 0))
        (f fun i => ((Fin.partialProd g ∘ Fin.succ) i.castSucc)⁻¹ * (Fin.partialProd g ∘ Fin.succ) i.succ) +
      ∑ i : Fin (n + 1),
        ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑i.succ • Finsupp.single (Fin.partialProd g ∘ i.succ.succAbove) 1)
state_after: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (A.ρ (g 0)) (f fun i => g i.succ) + ∑ j : Fin (n + 1), (-1) ^ (↑j + 1) • f (j.contractNth (fun x x_1 => x * x_1) g) =
    (A.ρ (g 0))
        (f fun i =>
          (Fin.partialProd g i.castSucc.castSucc * g i.castSucc)⁻¹ * (Fin.partialProd g i.succ.castSucc * g i.succ)) +
      ∑ i : Fin (n + 1),
        ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑i.succ • Finsupp.single (Fin.partialProd g ∘ i.succ.succAbove) 1)
tactic: simp_rw [Function.comp_apply, Fin.partialProd_succ, Fin.castSucc_zero,
    Fin.partialProd_zero, one_mul]
state_before: case h.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
⊢ (A.ρ (g 0)) (f fun i => g i.succ) + ∑ j : Fin (n + 1), (-1) ^ (↑j + 1) • f (j.contractNth (fun x x_1 => x * x_1) g) =
    (A.ρ (g 0))
        (f fun i =>
          (Fin.partialProd g i.castSucc.castSucc * g i.castSucc)⁻¹ * (Fin.partialProd g i.succ.castSucc * g i.succ)) +
      ∑ i : Fin (n + 1),
        ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑i.succ • Finsupp.single (Fin.partialProd g ∘ i.succ.succAbove) 1)
state_after: case h.h.e_a.h.e_6.h.e_a.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
x : Fin n
⊢ g x.succ = (Fin.partialProd g x.castSucc.castSucc * g x.castSucc)⁻¹ * (Fin.partialProd g x.succ.castSucc * g x.succ)

case h.h.e_a.e_f.h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
g : Fin (n + 1) → G
x : Fin (n + 1)
⊢ (-1) ^ (↑x + 1) • f (x.contractNth (fun x x_1 => x * x_1) g) =
    ((diagonalHomEquiv n A).symm f).hom ((-1) ^ ↑x.succ • Finsupp.single (Fin.partialProd g ∘ x.succ.succAbove) 1)
tactic: rcongr x