@@ -126,16 +126,24 @@ theorem truncFinset_map [CommSemiring S] (f : R →+* S) (p : MvPowerSeries σ R
126126 ext x
127127 by_cases x ∈ s <;> grind [coeff_map, MvPolynomial.coeff_map]
128128
129- theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul (hs : IsLowerSet (s : Set (σ →₀ ℕ)))
130- {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hx : x ∈ s) :
131- (truncFinset R s f * truncFinset R s g).coeff x = coeff x (f * g) := by
129+ /-- A coefficient of a product of finset-truncated power series equals the coefficient of the
130+ untruncated product, with the two truncation finsets `s` and `t` allowed to differ. -/
131+ theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ {t : Finset (σ →₀ ℕ)}
132+ (hs : IsLowerSet (s : Set (σ →₀ ℕ))) (ht : IsLowerSet (t : Set (σ →₀ ℕ)))
133+ {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hxs : x ∈ s) (hxt : x ∈ t) :
134+ (truncFinset R s f * truncFinset R t g).coeff x = coeff x (f * g) := by
132135 classical
133136 simp only [MvPowerSeries.coeff_mul, MvPolynomial.coeff_mul]
134137 apply sum_congr rfl
135138 rintro ⟨i, j⟩ hij
136139 simp only [mem_antidiagonal] at hij
137- rw [coeff_truncFinset_of_mem _ (hs (show i ≤ x by simp [← hij]) hx),
138- coeff_truncFinset_of_mem _ (hs (show j ≤ x by simp [← hij]) hx)]
140+ rw [coeff_truncFinset_of_mem _ (hs (show i ≤ x by simp [← hij]) hxs),
141+ coeff_truncFinset_of_mem _ (ht (show j ≤ x by simp [← hij]) hxt)]
142+
143+ theorem coeff_truncFinset_mul_truncFinset_eq_coeff_mul (hs : IsLowerSet (s : Set (σ →₀ ℕ)))
144+ {x : σ →₀ ℕ} (f g : MvPowerSeries σ R) (hx : x ∈ s) :
145+ (truncFinset R s f * truncFinset R s g).coeff x = coeff x (f * g) :=
146+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ hs hs f g hx hx
139147
140148theorem truncFinset_truncFinset_pow (hs : IsLowerSet (s : Set (σ →₀ ℕ))) {k : ℕ} (hk : 1 ≤ k)
141149 (p : MvPowerSeries σ R) : truncFinset R s ((truncFinset R s p) ^ k) =
@@ -200,6 +208,21 @@ theorem trunc_C_mul (n : σ →₀ ℕ) (a : R) (p : MvPowerSeries σ R) :
200208theorem trunc_map [CommSemiring S] (n : σ →₀ ℕ) (f : R →+* S) (p : MvPowerSeries σ R) :
201209 trunc S n (map f p) = MvPolynomial.map f (trunc R n p) := truncFinset_map f p
202210
211+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
212+ product, with the two truncation levels `n₁` and `n₂` allowed to differ. -/
213+ theorem coeff_trunc_mul_trunc_eq_coeff_mul₂ (n₁ n₂ : σ →₀ ℕ)
214+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h₁ : m < n₁) (h₂ : m < n₂) :
215+ (trunc R n₁ f * trunc R n₂ g).coeff m = coeff m (f * g) :=
216+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ (by grind [IsLowerSet]) (by grind [IsLowerSet])
217+ f g (by simpa) (by simpa)
218+
219+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
220+ product. Both factors are truncated at the same level `n`. -/
221+ theorem coeff_trunc_mul_trunc_eq_coeff_mul (n : σ →₀ ℕ)
222+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h : m < n) :
223+ (trunc R n f * trunc R n g).coeff m = coeff m (f * g) :=
224+ coeff_trunc_mul_trunc_eq_coeff_mul₂ n n f g h h
225+
203226end TruncLT
204227
205228section TruncLE
@@ -232,11 +255,20 @@ theorem trunc'_one (n : σ →₀ ℕ) : trunc' R n 1 = 1 := truncFinset_one (by
232255theorem trunc'_C (n : σ →₀ ℕ) (a : R) : trunc' R n (C a) = MvPolynomial.C a :=
233256 truncFinset_C (by simp) a
234257
235- /-- Coefficients of the truncation of a product of two multivariate power series -/
258+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
259+ product, with the two truncation levels `n₁` and `n₂` allowed to differ. -/
260+ theorem coeff_trunc'_mul_trunc'_eq_coeff_mul₂ (n₁ n₂ : σ →₀ ℕ)
261+ (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h₁ : m ≤ n₁) (h₂ : m ≤ n₂) :
262+ (trunc' R n₁ f * trunc' R n₂ g).coeff m = coeff m (f * g) :=
263+ coeff_truncFinset_mul_truncFinset_eq_coeff_mul₂ (by grind [IsLowerSet]) (by grind [IsLowerSet])
264+ f g (by simpa) (by simpa)
265+
266+ /-- A coefficient of a product of truncated power series equals the coefficient of the untruncated
267+ product. Both factors are truncated at the same level `n`. -/
236268theorem coeff_trunc'_mul_trunc'_eq_coeff_mul (n : σ →₀ ℕ)
237269 (f g : MvPowerSeries σ R) {m : σ →₀ ℕ} (h : m ≤ n) :
238270 (trunc' R n f * trunc' R n g).coeff m = coeff m (f * g) :=
239- coeff_truncFinset_mul_truncFinset_eq_coeff_mul ( by intro; grind) f g ( by simpa)
271+ coeff_trunc'_mul_trunc'_eq_coeff_mul₂ n n f g h h
240272
241273@ [deprecated coeff_trunc'_mul_trunc'_eq_coeff_mul (since := "2026-02-20" )]
242274theorem coeff_mul_eq_coeff_trunc'_mul_trunc' (n : σ →₀ ℕ) (f g : MvPowerSeries σ R) {m : σ →₀ ℕ}
0 commit comments