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

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

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

tactic: rw [TensorProduct.zero_tmul, map_zero]
state_before: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G →₀ k
f : Fin n → G
r : k
⊢ (diagonalSucc k G n).inv.hom (0 ⊗ₜ[k] single f r) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • partialProd f) r) 0
state_after: case refine_1
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G →₀ k
f : Fin n → G
r : k
⊢ 0 = ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • 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 →₀ k
f : Fin n → G
r : k
⊢ 0 = ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • 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 →₀ k
f : Fin n → G
r : k
⊢ ∀ (a : G) (b : k) (f_1 : G →₀ k),
    a ∉ f_1.support →
      b ≠ 0 →
        (diagonalSucc k G n).inv.hom (f_1 ⊗ₜ[k] single f r) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • partialProd f) r) f_1 →
          (diagonalSucc k G n).inv.hom ((single a b + f_1) ⊗ₜ[k] single f r) =
            ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • partialProd f) r) (single a b + f_1)
state_after: case refine_2
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G →₀ k
f : Fin n → G
r : k
a✝² : G
b✝ : k
f✝ : G →₀ k
a✝¹ : a✝² ∉ f✝.support
a✝ : b✝ ≠ 0
hx :
  (diagonalSucc k G n).inv.hom (f✝ ⊗ₜ[k] single f r) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • partialProd f) r) f✝
⊢ (diagonalSucc k G n).inv.hom ((single a✝² b✝ + f✝) ⊗ₜ[k] single f r) =
    ((Finsupp.lift ((Fin (n + 1) → G) →₀ k) k G) fun a => single (a • partialProd f) r) (single a✝² b✝ + f✝)

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

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

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