@@ -125,16 +125,24 @@ theorem truncFinset_map [CommSemiring S] (f : R →+* S) (p : MvPowerSeries σ R
125125 ext x
126126 by_cases x ∈ s <;> grind [coeff_map, MvPolynomial.coeff_map]
127127
128- theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul (hs : IsLowerSet (s : Set (σ →₀ ℕ)))
129- {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hx : x ∈ s) :
130- (truncFinset R s f * truncFinset R s g).coeff x = coeff x (f * g) := by
128+ /-- A coefficient of a product of finset-truncated power series equals the coefficient of the
129+ untruncated product, with the two truncation finsets `s` and `t` allowed to differ. -/
130+ theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ {t : Finset (σ →₀ ℕ)}
131+ (hs : IsLowerSet (s : Set (σ →₀ ℕ))) (ht : IsLowerSet (t : Set (σ →₀ ℕ)))
132+ {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hxs : x ∈ s) (hxt : x ∈ t) :
133+ (truncFinset R s f * truncFinset R t g).coeff x = coeff x (f * g) := by
131134 classical
132135 simp only [MvPowerSeries.coeff_mul, MvPolynomial.coeff_mul]
133136 apply sum_congr rfl
134137 rintro ⟨i, j⟩ hij
135138 simp only [mem_antidiagonal] at hij
136- rw [coeff_truncFinset_of_mem _ (hs (show i ≤ x by simp [← hij]) hx),
137- coeff_truncFinset_of_mem _ (hs (show j ≤ x by simp [← hij]) hx)]
139+ rw [coeff_truncFinset_of_mem _ (hs (show i ≤ x by simp [← hij]) hxs),
140+ coeff_truncFinset_of_mem _ (ht (show j ≤ x by simp [← hij]) hxt)]
141+
142+ theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul (hs : IsLowerSet (s : Set (σ →₀ ℕ)))
143+ {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hx : x ∈ s) :
144+ (truncFinset R s f * truncFinset R s g).coeff x = coeff x (f * g) :=
145+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ hs hs f g hx hx
138146
139147theorem truncFinset_truncFinset_pow (hs : IsLowerSet (s : Set (σ →₀ ℕ))) {k : ℕ} (hk : 1 ≤ k)
140148 (p : MvPowerSeries σ R) : truncFinset R s ((truncFinset R s p) ^ k) =
@@ -190,6 +198,21 @@ theorem trunc_one (n : σ →₀ ℕ) (hnn : n ≠ 0) : trunc R n 1 = 1 :=
190198theorem trunc_C (n : σ →₀ ℕ) (hnn : n ≠ 0 ) (a : R) : trunc R n (C a) = MvPolynomial.C a :=
191199 truncFinset_C (by simpa using pos_of_ne_zero hnn) a
192200
201+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
202+ product, with the two truncation levels `n₁` and `n₂` allowed to differ. -/
203+ theorem coeff_trunc_mul_trunc_eq_coeff_mul₂ (n₁ n₂ : σ →₀ ℕ)
204+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h₁ : m < n₁) (h₂ : m < n₂) :
205+ (trunc R n₁ f * trunc R n₂ g).coeff m = coeff m (f * g) :=
206+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ (by intro; grind) (by intro; grind) f g
207+ (by simpa) (by simpa)
208+
209+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
210+ product. Both factors are truncated at the same level `n`. -/
211+ theorem coeff_trunc_mul_trunc_eq_coeff_mul (n : σ →₀ ℕ)
212+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h : m < n) :
213+ (trunc R n f * trunc R n g).coeff m = coeff m (f * g) :=
214+ coeff_trunc_mul_trunc_eq_coeff_mul₂ n n f g h h
215+
193216@[simp]
194217theorem trunc_C_mul (n : σ →₀ ℕ) (a : R) (p : MvPowerSeries σ R) :
195218 trunc R n (C a * p) = MvPolynomial.C a * trunc R n p := by
@@ -231,11 +254,20 @@ theorem trunc'_one (n : σ →₀ ℕ) : trunc' R n 1 = 1 := truncFinset_one (by
231254theorem trunc'_C (n : σ →₀ ℕ) (a : R) : trunc' R n (C a) = MvPolynomial.C a :=
232255 truncFinset_C (by simp) a
233256
234- /-- Coefficients of the truncation of a product of two multivariate power series -/
257+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
258+ product, with the two truncation levels `n₁` and `n₂` allowed to differ. -/
259+ theorem coeff_trunc'_mul_trunc'_eq_coeff_mul₂ (n₁ n₂ : σ →₀ ℕ)
260+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h₁ : m ≤ n₁) (h₂ : m ≤ n₂) :
261+ (trunc' R n₁ f * trunc' R n₂ g).coeff m = coeff m (f * g) :=
262+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ (by intro; grind) (by intro; grind) f g
263+ (by simpa) (by simpa)
264+
265+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
266+ product. Both factors are truncated at the same level `n`. -/
235267theorem coeff_trunc'_mul_trunc'_eq_coeff_mul (n : σ →₀ ℕ)
236268 (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h : m ≤ n) :
237269 (trunc' R n f * trunc' R n g).coeff m = coeff m (f * g) :=
238- coeff_truncFinset_mul_truncFinset_eq_coeff_mul ( by intro; grind) f g ( by simpa)
270+ coeff_trunc'_mul_trunc'_eq_coeff_mul₂ n n f g h h
239271
240272@ [deprecated coeff_trunc'_mul_trunc'_eq_coeff_mul (since := "2026-02-20" )]
241273theorem coeff_mul_eq_coeff_trunc'_mul_trunc' (n : σ →₀ ℕ) (f g : MvPowerSeries σ R) {m : σ →₀ ℕ}
0 commit comments