Theorem: Rep.diagonalHomEquiv_symm_apply
File: Mathlib/RepresentationTheory/GroupCohomology/Resolution.lean

tactic: unfold diagonalHomEquiv
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((diagonalHomEquiv n A).symm f).hom (Finsupp.single x 1) = (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((((Linear.homCongr k (diagonalSucc k G n ≪≫ (Representation.ofMulAction k G G).repOfTprodIso 1) (Iso.refl A)).trans
                  ((MonoidalClosed.linearHomEquivComm (of (Representation.ofMulAction k G G)) (of 1) A).trans
                    ((ihom (of 1)).obj A).leftRegularHomEquiv)).trans
              (Finsupp.llift (CoeSort.coe A) k k (Fin n → G)).symm).symm
          f).hom
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: simp only [LinearEquiv.trans_symm, LinearEquiv.symm_symm, LinearEquiv.trans_apply,
  leftRegularHomEquiv_symm_apply, Linear.homCongr_symm_apply, Iso.trans_hom, Iso.refl_inv,
  Category.comp_id, Action.comp_hom, MonoidalClosed.linearHomEquivComm_symm_hom]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((((Linear.homCongr k (diagonalSucc k G n ≪≫ (Representation.ofMulAction k G G).repOfTprodIso 1) (Iso.refl A)).trans
                  ((MonoidalClosed.linearHomEquivComm (of (Representation.ofMulAction k G G)) (of 1) A).trans
                    ((ihom (of 1)).obj A).leftRegularHomEquiv)).trans
              (Finsupp.llift (CoeSort.coe A) k k (Fin n → G)).symm).symm
          f).hom
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (((diagonalSucc k G n).hom.hom ≫ ((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom) ≫
        (TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1))
            (CoeSort.coe A))
          (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [ModuleCat.coe_comp]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (((diagonalSucc k G n).hom.hom ≫ ((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom) ≫
        (TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1))
            (CoeSort.coe A))
          (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (⇑((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1))
              (CoeSort.coe A))
            (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom) ∘
        ⇑((diagonalSucc k G n).hom.hom ≫ ((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom))
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: simp only [ModuleCat.coe_comp, Function.comp_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (⇑((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1))
              (CoeSort.coe A))
            (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom) ∘
        ⇑((diagonalSucc k G n).hom.hom ≫ ((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom))
      (Finsupp.single x 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1)) (CoeSort.coe A))
        (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom
        ((diagonalSucc k G n).hom.hom (Finsupp.single x 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [diagonalSucc_hom_single]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1)) (CoeSort.coe A))
        (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (((Representation.ofMulAction k G G).repOfTprodIso 1).hom.hom
        ((diagonalSucc k G n).hom.hom (Finsupp.single x 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1)) (CoeSort.coe A))
        (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (Finsupp.single (x 0) 1 ⊗ₜ[k] Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [TensorProduct.uncurry_apply, Finsupp.lift_apply, Finsupp.sum_single_index]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((TensorProduct.uncurry k (CoeSort.coe (of (Representation.ofMulAction k G G))) (CoeSort.coe (of 1)) (CoeSort.coe A))
        (((ihom (of 1)).obj A).leftRegularHom ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)).hom)
      (Finsupp.single (x 0) 1 ⊗ₜ[k] Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (1 • (((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f))
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ 0 • (((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f) = 0

tactic: simp only [one_smul]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (1 • (((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f))
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f))
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [Representation.linHom_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ ((((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f))
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0) ∘ₗ (Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f ∘ₗ (of 1).ρ (x 0)⁻¹)
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: simp only [LinearMap.comp_apply, MonoidHom.one_apply, LinearMap.one_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0) ∘ₗ (Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f ∘ₗ (of 1).ρ (x 0)⁻¹)
      (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)
        (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [Finsupp.llift_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f)
        (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (((Finsupp.lift (CoeSort.coe A) k (Fin n → G)) f)
        (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: rw [Finsupp.lift_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (((Finsupp.lift (CoeSort.coe A) k (Fin n → G)) f)
        (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1))) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (Finsupp.sum (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1)) fun x r => r • f x) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

tactic: erw [Finsupp.sum_single_index]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0))
      (Finsupp.sum (((of 1).ρ (x 0)⁻¹) (Finsupp.single (fun i => (x i.castSucc)⁻¹ * x i.succ) 1)) fun x r => r • f x) =
    (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0)) (1 • f fun i => (x i.castSucc)⁻¹ * x i.succ) = (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)

k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (0 • f fun i => (x i.castSucc)⁻¹ * x i.succ) = 0

tactic: rw [one_smul]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (A.ρ (x 0)) (1 • f fun i => (x i.castSucc)⁻¹ * x i.succ) = (A.ρ (x 0)) (f fun i => (x i.castSucc)⁻¹ * x i.succ)
state_after: no goals

tactic: rw [zero_smul]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ (0 • f fun i => (x i.castSucc)⁻¹ * x i.succ) = 0
state_after: no goals

tactic: rw [zero_smul]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
A : Rep k G
f : (Fin n → G) → CoeSort.coe A
x : Fin (n + 1) → G
⊢ 0 • (((ihom (of 1)).obj A).ρ (x 0)) ((Finsupp.llift (CoeSort.coe A) k k (Fin n → G)) f) = 0
state_after: no goals