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

tactic: induction' n with n hn
state_before: k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
f : Fin (n + 1) → G
⊢ (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
state_after: case zero
k G✝ : Type u
inst✝² : CommRing k
n : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
f : Fin (0 + 1) → G
⊢ (actionDiagonalSucc G 0).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)

case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
⊢ (actionDiagonalSucc G (n + 1)).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)

tactic: exact Prod.ext rfl (funext fun x => Fin.elim0 x)
state_before: case zero
k G✝ : Type u
inst✝² : CommRing k
n : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
f : Fin (0 + 1) → G
⊢ (actionDiagonalSucc G 0).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
state_after: no goals

tactic: refine Prod.ext rfl (funext fun x => ?_)
state_before: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
⊢ (actionDiagonalSucc G (n + 1)).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
state_after: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ ((actionDiagonalSucc G (n + 1)).hom.hom f).2 x = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ).2 x

tactic: dsimp [actionDiagonalSucc]
state_before: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ ((actionDiagonalSucc G (n + 1)).hom.hom f).2 x = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ).2 x
state_after: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ (Equiv.piFinSuccAbove (fun x => G) 0).symm
      ((FunctorCategoryEquivalence.inverse.obj
            (FunctorCategoryEquivalence.functor.obj (leftRegular G) ⊗
              FunctorCategoryEquivalence.functor.obj { V := Fin n → G, ρ := 1 })).ρ
        ((Equiv.piFinSuccAbove (fun a => G) 0) f).1⁻¹
        ((actionDiagonalSucc G n).hom.hom ((Equiv.piFinSuccAbove (fun a => G) 0) f).2))
      x =
    (f x.castSucc)⁻¹ * f x.succ

tactic: erw [hn (fun (j : Fin (n + 1)) => f j.succ)]
state_before: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ (Equiv.piFinSuccAbove (fun x => G) 0).symm
      ((FunctorCategoryEquivalence.inverse.obj
            (FunctorCategoryEquivalence.functor.obj (leftRegular G) ⊗
              FunctorCategoryEquivalence.functor.obj { V := Fin n → G, ρ := 1 })).ρ
        ((Equiv.piFinSuccAbove (fun a => G) 0) f).1⁻¹
        ((actionDiagonalSucc G n).hom.hom ((Equiv.piFinSuccAbove (fun a => G) 0) f).2))
      x =
    (f x.castSucc)⁻¹ * f x.succ
state_after: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ (Equiv.piFinSuccAbove (fun x => G) 0).symm
      ((FunctorCategoryEquivalence.inverse.obj
            (FunctorCategoryEquivalence.functor.obj (leftRegular G) ⊗
              FunctorCategoryEquivalence.functor.obj { V := Fin n → G, ρ := 1 })).ρ
        ((Equiv.piFinSuccAbove (fun a => G) 0) f).1⁻¹ (f (Fin.succ 0), fun i => (f i.castSucc.succ)⁻¹ * f i.succ.succ))
      x =
    (f x.castSucc)⁻¹ * f x.succ

tactic: exact Fin.cases rfl (fun i => rfl) x
state_before: case succ
k G✝ : Type u
inst✝² : CommRing k
n✝ : ℕ
inst✝¹ : Group G✝
G : Type u
inst✝ : Group G
n : ℕ
hn : ∀ (f : Fin (n + 1) → G), (actionDiagonalSucc G n).hom.hom f = (f 0, fun i => (f i.castSucc)⁻¹ * f i.succ)
f : Fin (n + 1 + 1) → G
x : Fin (n + 1)
⊢ (Equiv.piFinSuccAbove (fun x => G) 0).symm
      ((FunctorCategoryEquivalence.inverse.obj
            (FunctorCategoryEquivalence.functor.obj (leftRegular G) ⊗
              FunctorCategoryEquivalence.functor.obj { V := Fin n → G, ρ := 1 })).ρ
        ((Equiv.piFinSuccAbove (fun a => G) 0) f).1⁻¹ (f (Fin.succ 0), fun i => (f i.castSucc.succ)⁻¹ * f i.succ.succ))
      x =
    (f x.castSucc)⁻¹ * f x.succ
state_after: no goals