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

tactic: refine f.induction ?_ ?_
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f
state_after: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] 0) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) 0

case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ ∀ (a : Fin n → G) (b : k) (f : (Fin n → G) →₀ k),
    a ∉ f.support →
      b ≠ 0 →
        (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f →
          (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] (single a b + f)) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r)
              (single a b + f)

tactic: rw [TensorProduct.tmul_zero, map_zero]
state_before: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] 0) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) 0
state_after: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ 0 = ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) 0

tactic: erw [map_zero]
state_before: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ 0 = ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) 0
state_after: no goals

tactic: intro _ _ _ _ _ hx
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
⊢ ∀ (a : Fin n → G) (b : k) (f : (Fin n → G) →₀ k),
    a ∉ f.support →
      b ≠ 0 →
        (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f →
          (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] (single a b + f)) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r)
              (single a b + f)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] (single a✝² b✝ + f✝)) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝ + f✝)

tactic: rw [TensorProduct.tmul_add, map_add]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] (single a✝² b✝ + f✝)) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝ + f✝)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) + (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝ + f✝)

tactic: erw [map_add, hx]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) + (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝ + f✝)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) +
      ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝ =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝) +
      ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝

tactic: simp_rw [lift_apply, smul_single, smul_eq_mul]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) +
      ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝ =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) (single a✝² b✝) +
      ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ ((diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)) =
    ((single a✝² b✝).sum fun x r_1 => single (g • partialProd x) (r_1 * r)) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)

tactic: erw [diagonalSucc_inv_single_single]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ ((diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] single a✝² b✝) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)) =
    ((single a✝² b✝).sum fun x r_1 => single (g • partialProd x) (r_1 * r)) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (single (g • partialProd a✝²) (r * b✝) + f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)) =
    ((single a✝² b✝).sum fun x r_1 => single (g • partialProd x) (r_1 * r)) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)

tactic: rw [sum_single_index, mul_comm]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ (single (g • partialProd a✝²) (r * b✝) + f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)) =
    ((single a✝² b✝).sum fun x r_1 => single (g • partialProd x) (r_1 * r)) +
      f✝.sum fun x r_1 => single (g • partialProd x) (r_1 * r)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ single (g • partialProd a✝²) (0 * r) = 0

tactic: rw [zero_mul, single_zero]
state_before: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : (Fin n → G) →₀ k
r : k
a✝² : Fin n → G
b✝ : k
f✝ : (Fin n → G) →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (single g r ⊗ₜ[k] f✝) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k (Fin n → G)) fun f => single (g • partialProd f) r) f✝
⊢ single (g • partialProd a✝²) (0 * r) = 0
state_after: no goals