Theorem: MonoidAlgebra.liftMagma_apply_apply
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

Proof steps:
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
t' : k
a : MonoidAlgebra k G
⊢ (fun a => sum a fun m t => t • f m) (t' • a) = (MonoidHom.id k) t' • (fun a => sum a fun m t => t • f m) a
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
t' : k
a : MonoidAlgebra k G
⊢ (sum (t' • a) fun m t => t • f m) = (MonoidHom.id k) t' • sum a fun m t => t • f m
tactic: beta_reduce
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
t' : k
a : MonoidAlgebra k G
⊢ (sum (t' • a) fun m t => t • f m) = (MonoidHom.id k) t' • sum a fun m t => t • f m
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
t' : k
a : MonoidAlgebra k G
⊢ (sum a fun i c => (t' • c) • f i) = sum a fun a b => (MonoidHom.id k) t' • b • f a

k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
t' : k
a : MonoidAlgebra k G
⊢ ∀ (i : G), 0 • f i = 0
tactic: rw [Finsupp.smul_sum, sum_smul_index']
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
tactic: let g : G → k → A := fun m t => t • f m
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
tactic: have h₁ : ∀ m, g m 0 = 0 := by
          intro m
          exact zero_smul k (f m)
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
tactic: have h₂ : ∀ (m) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂ := by
          intros
          rw [← add_smul]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun (a₁ * a₂) =
    { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₁ *
      { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }.toFun a₂
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (sum (sum a₁ fun a₁ b₁ => sum a₂ fun a₂ b₂ => single (a₁ * a₂) (b₁ * b₂)) fun m t => t • f m) =
    sum a₁ fun x' v' => sum a₂ fun x v => (v' * v) • f (x' * x)
tactic: simp_rw [Finsupp.mul_sum, Finsupp.sum_mul, smul_mul_smul, ← f.map_mul, mul_def,
          sum_comm a₂ a₁]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (sum (sum a₁ fun a₁ b₁ => sum a₂ fun a₂ b₂ => single (a₁ * a₂) (b₁ * b₂)) fun m t => t • f m) =
    sum a₁ fun x' v' => sum a₂ fun x v => (v' * v) • f (x' * x)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (sum a₁ fun a b => sum (sum a₂ fun a₂ b₂ => single (a * a₂) (b * b₂)) g) =
    sum a₁ fun x' v' => sum a₂ fun x v => (v' * v) • f (x' * x)
tactic: rw [sum_sum_index h₁ h₂]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (sum a₁ fun a b => sum (sum a₂ fun a₂ b₂ => single (a * a₂) (b * b₂)) g) =
    sum a₁ fun x' v' => sum a₂ fun x v => (v' * v) • f (x' * x)
state_after: case e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (fun a b => sum (sum a₂ fun a₂ b₂ => single (a * a₂) (b * b₂)) g) = fun x' v' =>
    sum a₂ fun x v => (v' * v) • f (x' * x)
tactic: congr
state_before: case e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
⊢ (fun a b => sum (sum a₂ fun a₂ b₂ => single (a * a₂) (b * b₂)) g) = fun x' v' =>
    sum a₂ fun x v => (v' * v) • f (x' * x)
state_after: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ sum (sum a₂ fun a₂ b₂ => single (x✝¹ * a₂) (x✝ * b₂)) g = sum a₂ fun x v => (x✝ * v) • f (x✝¹ * x)
tactic: ext
state_before: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ sum (sum a₂ fun a₂ b₂ => single (x✝¹ * a₂) (x✝ * b₂)) g = sum a₂ fun x v => (x✝ * v) • f (x✝¹ * x)
state_after: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ (sum a₂ fun a b => sum (single (x✝¹ * a) (x✝ * b)) g) = sum a₂ fun x v => (x✝ * v) • f (x✝¹ * x)
tactic: rw [sum_sum_index h₁ h₂]
state_before: case e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ (sum a₂ fun a b => sum (single (x✝¹ * a) (x✝ * b)) g) = sum a₂ fun x v => (x✝ * v) • f (x✝¹ * x)
state_after: case e_g.h.h.e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ (fun a b => sum (single (x✝¹ * a) (x✝ * b)) g) = fun x v => (x✝ * v) • f (x✝¹ * x)
tactic: congr
state_before: case e_g.h.h.e_g
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝¹ : G
x✝ : k
⊢ (fun a b => sum (single (x✝¹ * a) (x✝ * b)) g) = fun x v => (x✝ * v) • f (x✝¹ * x)
state_after: case e_g.h.h.e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝³ : G
x✝² : k
x✝¹ : G
x✝ : k
⊢ sum (single (x✝³ * x✝¹) (x✝² * x✝)) g = (x✝² * x✝) • f (x✝³ * x✝¹)
tactic: ext
state_before: case e_g.h.h.e_g.h.h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
a₁ a₂ : MonoidAlgebra k G
g : G → k → A := fun m t => t • f m
h₁ : ∀ (m : G), g m 0 = 0
h₂ : ∀ (m : G) (t₁ t₂ : k), g m (t₁ + t₂) = g m t₁ + g m t₂
x✝³ : G
x✝² : k
x✝¹ : G
x✝ : k
⊢ sum (single (x✝³ * x✝¹) (x✝² * x✝)) g = (x✝² * x✝) • f (x✝³ * x✝¹)
state_after: no goals
tactic: rw [sum_single_index (h₁ _)]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
⊢ (fun F => F.toMulHom.comp (ofMagma k G))
      ((fun f =>
          let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
          { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯ })
        f) =
    f
state_after: case h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
m : G
⊢ ((fun F => F.toMulHom.comp (ofMagma k G))
        ((fun f =>
            let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
            { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯,
              map_mul' := ⋯ })
          f))
      m =
    f m
tactic: ext m
state_before: case h
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
f : G →ₙ* A
m : G
⊢ ((fun F => F.toMulHom.comp (ofMagma k G))
        ((fun f =>
            let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
            { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯,
              map_mul' := ⋯ })
          f))
      m =
    f m
state_after: no goals
tactic: simp only [NonUnitalAlgHom.coe_mk, ofMagma_apply, NonUnitalAlgHom.toMulHom_eq_coe,
      sum_single_index, Function.comp_apply, one_smul, zero_smul, MulHom.coe_comp,
      NonUnitalAlgHom.coe_to_mulHom]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
F : MonoidAlgebra k G →ₙₐ[k] A
⊢ (fun f =>
        let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
        { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯, map_mul' := ⋯ })
      ((fun F => F.toMulHom.comp (ofMagma k G)) F) =
    F
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
F : MonoidAlgebra k G →ₙₐ[k] A
m : G
⊢ (((fun f =>
                let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
                { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯,
                  map_mul' := ⋯ })
              ((fun F => F.toMulHom.comp (ofMagma k G)) F)).toMulHom.comp
        (ofMagma k G))
      m =
    (F.toMulHom.comp (ofMagma k G)) m
tactic: refine nonUnitalAlgHom_ext' k (MulHom.ext fun m => ?_)
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁶ : Semiring k
inst✝⁵ : DistribSMul R k
inst✝⁴ : Mul G
A : Type u₃
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module k A
inst✝¹ : IsScalarTower k A A
inst✝ : SMulCommClass k A A
F : MonoidAlgebra k G →ₙₐ[k] A
m : G
⊢ (((fun f =>
                let __src := liftAddHom fun x => (smulAddHom k A).flip (f x);
                { toFun := fun a => sum a fun m t => t • f m, map_smul' := ⋯, map_zero' := ⋯, map_add' := ⋯,
                  map_mul' := ⋯ })
              ((fun F => F.toMulHom.comp (ofMagma k G)) F)).toMulHom.comp
        (ofMagma k G))
      m =
    (F.toMulHom.comp (ofMagma k G)) m
state_after: no goals
tactic: simp only [NonUnitalAlgHom.coe_mk, ofMagma_apply, NonUnitalAlgHom.toMulHom_eq_coe,
      sum_single_index, Function.comp_apply, one_smul, zero_smul, MulHom.coe_comp,
      NonUnitalAlgHom.coe_to_mulHom]