Theorem: MonoidAlgebra.liftNC_smul
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✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
⊢ (liftNC ↑f ⇑g) (c • φ) = f c * (liftNC ↑f ⇑g) φ
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
⊢ (liftNC ↑f ⇑g).comp ((smulAddHom k (MonoidAlgebra k G)) c) = (AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)
tactic: suffices (liftNC (↑f) g).comp (smulAddHom k (MonoidAlgebra k G) c) =
      (AddMonoidHom.mulLeft (f c)).comp (liftNC (↑f) g) from
    DFunLike.congr_fun this φ
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
⊢ (liftNC ↑f ⇑g).comp ((smulAddHom k (MonoidAlgebra k G)) c) = (AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (((liftNC ↑f ⇑g).comp ((smulAddHom k (MonoidAlgebra k G)) c)).comp (singleAddHom a)) b =
    (((AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)).comp (singleAddHom a)) b
tactic: refine addHom_ext' fun a => AddMonoidHom.ext fun b => ?_
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (((liftNC ↑f ⇑g).comp ((smulAddHom k (MonoidAlgebra k G)) c)).comp (singleAddHom a)) b =
    (((AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)).comp (singleAddHom a)) b
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (((liftNC ↑f ⇑g).comp ((smulAddHom k (G →₀ k)) c)).comp (singleAddHom a)) b =
    (((AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)).comp (singleAddHom a)) b
tactic: unfold MonoidAlgebra
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (((liftNC ↑f ⇑g).comp ((smulAddHom k (G →₀ k)) c)).comp (singleAddHom a)) b =
    (((AddMonoidHom.mulLeft (f c)).comp (liftNC ↑f ⇑g)).comp (singleAddHom a)) b
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (liftNC ↑f ⇑g) (Finsupp.single a (c * b)) = f c * (liftNC ↑f ⇑g) (Finsupp.single a b)
tactic: simp only [AddMonoidHom.coe_comp, Function.comp_apply, singleAddHom_apply, smulAddHom_apply,
    smul_single, smul_eq_mul, AddMonoidHom.coe_mulLeft]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ (liftNC ↑f ⇑g) (Finsupp.single a (c * b)) = f c * (liftNC ↑f ⇑g) (Finsupp.single a b)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ ↑f (c * b) * g a = f c * (↑f b * g a)
tactic: erw [liftNC_single, liftNC_single]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R✝ : Type u_2
inst✝² : Semiring k
inst✝¹ : MulOneClass G
R : Type u_3
inst✝ : Semiring R
f : k →+* R
g : G →* R
c : k
φ : MonoidAlgebra k G
a : G
b : k
⊢ ↑f (c * b) * g a = f c * (↑f b * g a)
state_after: no goals
tactic: rw [AddMonoidHom.coe_coe, map_mul, mul_assoc]