Theorem: PolynomialModule.monomial_smul_single
File: Mathlib/Data/Polynomial/Module.lean

tactic: simp only [LinearMap.mul_apply, Polynomial.aeval_monomial, LinearMap.pow_apply,
  Module.algebraMap_end_apply, modulePolynomialOfEndo_smul_def]
state_before: R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
i : ℕ
r : R
j : ℕ
m : M
⊢ ↑(monomial i) r • ↑(single R j) m = ↑(single R (i + j)) (r • m)

tactic: induction i generalizing r j m with
| zero =>
  rw [Nat.zero_eq, Function.iterate_zero, zero_add]
  exact Finsupp.smul_single r j m
| succ n hn =>
  rw [Function.iterate_succ, Function.comp_apply, Nat.succ_eq_add_one, add_assoc, ← hn]
  congr 2
  rw [← Nat.succ_eq_one_add]
  exact Finsupp.mapDomain_single
state_before: R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
i : ℕ
r : R
j : ℕ
m : M
⊢ r • (↑(Finsupp.lmapDomain M R Nat.succ)^[i]) (↑(single R j) m) = ↑(single R (i + j)) (r • m)

tactic: rw [Nat.zero_eq, Function.iterate_zero, zero_add]
state_before: case zero
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
r : R
j : ℕ
m : M
⊢ r • (↑(Finsupp.lmapDomain M R Nat.succ)^[Nat.zero]) (↑(single R j) m) = ↑(single R (Nat.zero + j)) (r • m)

tactic: exact Finsupp.smul_single r j m
state_before: case zero
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
r : R
j : ℕ
m : M
⊢ r • id (↑(single R j) m) = ↑(single R j) (r • m)

tactic: rw [Function.iterate_succ, Function.comp_apply, Nat.succ_eq_add_one, add_assoc, ← hn]
state_before: case succ
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
n : ℕ
hn :
  ∀ (r : R) (j : ℕ) (m : M),
    r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(single R j) m) = ↑(single R (n + j)) (r • m)
r : R
j : ℕ
m : M
⊢ r • (↑(Finsupp.lmapDomain M R Nat.succ)^[Nat.succ n]) (↑(single R j) m) = ↑(single R (Nat.succ n + j)) (r • m)

tactic: congr 2
state_before: case succ
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
n : ℕ
hn :
  ∀ (r : R) (j : ℕ) (m : M),
    r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(single R j) m) = ↑(single R (n + j)) (r • m)
r : R
j : ℕ
m : M
⊢ r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(Finsupp.lmapDomain M R Nat.succ) (↑(single R j) m)) =
    r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(single R (1 + j)) m)

tactic: rw [← Nat.succ_eq_one_add]
state_before: case succ.e_a.e_a
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
n : ℕ
hn :
  ∀ (r : R) (j : ℕ) (m : M),
    r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(single R j) m) = ↑(single R (n + j)) (r • m)
r : R
j : ℕ
m : M
⊢ ↑(Finsupp.lmapDomain M R Nat.succ) (↑(single R j) m) = ↑(single R (1 + j)) m

tactic: exact Finsupp.mapDomain_single
state_before: case succ.e_a.e_a
R : Type u_2
M : Type u_1
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type ?u.189821
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
n : ℕ
hn :
  ∀ (r : R) (j : ℕ) (m : M),
    r • (↑(Finsupp.lmapDomain M R Nat.succ)^[n]) (↑(single R j) m) = ↑(single R (n + j)) (r • m)
r : R
j : ℕ
m : M
⊢ ↑(Finsupp.lmapDomain M R Nat.succ) (↑(single R j) m) = ↑(single R (Nat.succ j)) m