Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(RingTheory.MvPowerSeries.Topology): define the product topology on mv power series #14866

Open
wants to merge 82 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 64 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
7cb1908
coefficients of powers of MvPowerSeries
AntoineChambert-Loir Jul 18, 2024
bdef1b0
initial commit
AntoineChambert-Loir Jul 18, 2024
06c9528
update references.bib
AntoineChambert-Loir Jul 18, 2024
543b97f
delete one blank line
AntoineChambert-Loir Jul 18, 2024
c2c4976
Merge branch 'ACLMIdFF/MvPowerSeries_coeffpow' into ACLMIdFF/MvPowerS…
AntoineChambert-Loir Jul 18, 2024
3d5a7d0
defines the topology (removes homogeneous components)
AntoineChambert-Loir Jul 18, 2024
2649640
correct def to theorem
AntoineChambert-Loir Jul 18, 2024
8345665
update
AntoineChambert-Loir Jul 18, 2024
805f1d5
mention non-relation with adic topology
AntoineChambert-Loir Jul 18, 2024
54bbcea
correct centered dots
AntoineChambert-Loir Jul 18, 2024
8d001f7
update Mathlib.lean
AntoineChambert-Loir Jul 18, 2024
d507e68
make lint happy (try to)
AntoineChambert-Loir Jul 18, 2024
1191b60
update
AntoineChambert-Loir Jul 18, 2024
cb8c681
move weights to other file
AntoineChambert-Loir Jul 18, 2024
5820cc0
homogeneize
AntoineChambert-Loir Jul 18, 2024
6e26559
adjust for degrees
AntoineChambert-Loir Jul 18, 2024
aae13ce
add le_degree
AntoineChambert-Loir Jul 18, 2024
df1d019
update mathlib.lean
AntoineChambert-Loir Jul 18, 2024
b2bbb36
try to make lint happy
AntoineChambert-Loir Jul 18, 2024
f649884
adjust
AntoineChambert-Loir Jul 18, 2024
4831b9b
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
bdfe910
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
bafb2d7
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
d744b9a
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
bc296a4
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
93df652
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
da2b237
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 18, 2024
c6886c7
apply (almost all of) Filippo's comments
AntoineChambert-Loir Jul 18, 2024
a2049f3
adjust
AntoineChambert-Loir Jul 18, 2024
e7c89bd
adjust and simplify
AntoineChambert-Loir Jul 18, 2024
165e928
make a def a theorem
AntoineChambert-Loir Jul 18, 2024
3a0ec1e
add a docstring
AntoineChambert-Loir Jul 18, 2024
4ecd44c
adjust to import - linter
AntoineChambert-Loir Jul 18, 2024
8dea296
adjust scoped instances following linter
AntoineChambert-Loir Jul 18, 2024
e0eb0fb
adjust import
AntoineChambert-Loir Jul 18, 2024
63924ca
adjust import
AntoineChambert-Loir Jul 18, 2024
72f8dce
Merge branch 'master' into ACLMIdFF/degree
AntoineChambert-Loir Jul 19, 2024
521492a
remove all #align and #align_import
AntoineChambert-Loir Jul 19, 2024
3054cbb
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
ab06f0f
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
ecade7c
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
c82153a
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
94ea8bf
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
c3e9092
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
54dafe5
Update Mathlib/RingTheory/MvPowerSeries/Basic.lean
AntoineChambert-Loir Jul 19, 2024
6758185
adjust
AntoineChambert-Loir Jul 19, 2024
9123cf2
linter 100
AntoineChambert-Loir Jul 19, 2024
f1f83c1
Merge branch 'ACLMIdFF/degree' into ACLMIdFF/MvPowerSeries_coeffpow
AntoineChambert-Loir Jul 20, 2024
761bbcf
adjust
AntoineChambert-Loir Jul 20, 2024
0d1c9d6
make some arguments implicit
AntoineChambert-Loir Jul 20, 2024
b9da976
Merge branch 'ACLMIdFF/degree' into ACLMIdFF/MvPowerSeries_coeffpow
AntoineChambert-Loir Jul 20, 2024
c96c50c
add docstring
AntoineChambert-Loir Jul 20, 2024
0492feb
linter 100 / adjust
AntoineChambert-Loir Jul 20, 2024
c2d9b6f
Merge branch 'master' into ACLMIdFF/MvPowerSeries_coeffpow
AntoineChambert-Loir Jul 21, 2024
48d2f35
change refine' to apply
AntoineChambert-Loir Jul 21, 2024
13cb3b2
Merge branch 'ACLMIdFF/MvPowerSeries_coeffpow' into ACLMIdFF/MvPowerS…
AntoineChambert-Loir Jul 21, 2024
d167eb3
adjust
AntoineChambert-Loir Jul 21, 2024
8d7a099
better docstring
AntoineChambert-Loir Jul 21, 2024
c21f5dd
better preamble
AntoineChambert-Loir Jul 21, 2024
f46bac1
linter 100
AntoineChambert-Loir Jul 21, 2024
ddd42b9
change α to R
AntoineChambert-Loir Jul 23, 2024
3a3dbf4
answer JC's comments + some lemmas hold more generally
AntoineChambert-Loir Jul 23, 2024
082d250
linter 100
AntoineChambert-Loir Jul 23, 2024
19944af
generalize
AntoineChambert-Loir Jul 23, 2024
9bf21d8
Merge branch 'master' into ACLMIdFF/MvPowerSeries_Topology
AntoineChambert-Loir Jul 29, 2024
d03c51f
rename Topology to PiTopology
AntoineChambert-Loir Jul 29, 2024
62170fe
mv stuff to BigOperators and change apply_eq_coeff
AntoineChambert-Loir Jul 29, 2024
0493cf1
never consider power series as functions
AntoineChambert-Loir Jul 29, 2024
379fbca
cleanup, docstrings
AntoineChambert-Loir Jul 29, 2024
d0cf16b
add PowerSeries/PiTopology
AntoineChambert-Loir Jul 29, 2024
e6e52e8
correct class
AntoineChambert-Loir Jul 29, 2024
71ed0cc
use Pi instances, reorder file
AntoineChambert-Loir Sep 6, 2024
b369662
fix namespaces
mariainesdff Sep 13, 2024
5d19e4d
expand comments
mariainesdff Sep 13, 2024
c6faa8a
Update Mathlib/RingTheory/MvPowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
13fa966
Update Mathlib/RingTheory/PowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
3546540
Update Mathlib/RingTheory/MvPowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
596670e
Update Mathlib/RingTheory/MvPowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
a817bc3
Update Mathlib/RingTheory/MvPowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
8212c6d
Update Mathlib/RingTheory/MvPowerSeries/PiTopology.lean
AntoineChambert-Loir Sep 20, 2024
054ea42
remove variable declaration and DecidableEq assumption
AntoineChambert-Loir Sep 20, 2024
57fce93
add classical
AntoineChambert-Loir Sep 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -3791,6 +3791,7 @@ import Mathlib.RingTheory.MvPolynomial.WeightedHomogeneous
import Mathlib.RingTheory.MvPowerSeries.Basic
import Mathlib.RingTheory.MvPowerSeries.Inverse
import Mathlib.RingTheory.MvPowerSeries.NoZeroDivisors
import Mathlib.RingTheory.MvPowerSeries.Topology
import Mathlib.RingTheory.MvPowerSeries.Trunc
import Mathlib.RingTheory.Nakayama
import Mathlib.RingTheory.Nilpotent.Basic
Expand Down
78 changes: 78 additions & 0 deletions Mathlib/RingTheory/MvPowerSeries/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Authors: Johan Commelin, Kenny Lau

import Mathlib.Algebra.MvPolynomial.Basic
import Mathlib.Algebra.Order.Antidiag.Finsupp
import Mathlib.Data.Finsupp.Antidiagonal
import Mathlib.Data.Finsupp.Weight
import Mathlib.LinearAlgebra.StdBasis
import Mathlib.Tactic.Linarith

Expand All @@ -19,6 +21,34 @@ A formal power series is to a polynomial like an infinite sum is to a finite sum

We provide the natural inclusion from multivariate polynomials to multivariate formal power series.

## Main definitions
AntoineChambert-Loir marked this conversation as resolved.
Show resolved Hide resolved

- `MvPowerSeries.C`: constant power series

- `MvPowerSeries.X`: the indeterminates

- `MvPowerSeries.coeff`, `MvPowerSeries.constantCoeff`:
the coefficients of a `MvPowerSeries`, its constant coefficient

- `MvPowerSeries.monomial`: the monomials

- `MvPowerSeries.coeff_mul`: computes the coefficients of the product of two `MvPowerSeries`

- `MvPowerSeries.coeff_prod` : computes the coefficients of products of `MvPowerSeries`

- `MvPowerSeries.coeff_pow` : computes the coefficients of powers of a `MvPowerSeries`

- `MvPowerSeries.coeff_eq_zero_of_constantCoeff_nilpotent`: if the constant coefficient
of a `MvPowerSeries` is nilpotent, then some coefficients of its powers are automatically zero

- `MvPowerSeries.map`: apply a `RingHom` to the coefficients of a `MvPowerSeries` (as a `RingHom)

- `MvPowerSeries.X_pow_dvd_iff`, `MvPowerSeries.X_dvd_iff`: equivalent
conditions for (a power of) an indeterminate to divide a `MvPowerSeries`

- `MvPolynomial.toMvPowerSeries`: the canonical coercion from `MvPolynomial` to `MvPowerSeries`


## Note

This file sets up the (semi)ring structure on multivariate power series:
Expand Down Expand Up @@ -621,6 +651,54 @@ theorem coeff_prod [DecidableEq σ]
simp only [add_right_inj] at huv
exact h rfl huv.symm

/-- The `d`th coefficient of a power of a multivariate power series
is the sum, indexed by `finsuppAntidiag (Finset.range n) d`, of products of coefficients -/
theorem coeff_pow [DecidableEq σ] (f : MvPowerSeries σ R) {n : ℕ} (d : σ →₀ ℕ) :
coeff R d (f ^ n) =
∑ l in finsuppAntidiag (Finset.range n) d,
∏ i in Finset.range n, coeff R (l i) f := by
suffices f ^ n = (Finset.range n).prod fun _ ↦ f by
rw [this, coeff_prod]
rw [Finset.prod_const, card_range]

/-- Vanishing of coefficients of powers of multivariate power series
when the constant coefficient is nilpotent
[N. Bourbaki, *Algebra {II}*, Chapter 4, §4, n°2, proposition 3][bourbaki1981] -/
theorem coeff_eq_zero_of_constantCoeff_nilpotent [DecidableEq σ]
{f : MvPowerSeries σ R} {m : ℕ} (hf : constantCoeff σ R f ^ m = 0)
{d : σ →₀ ℕ} {n : ℕ} (hn : m + degree d ≤ n) : coeff R d (f ^ n) = 0 := by
rw [coeff_pow]
apply sum_eq_zero
intro k hk
rw [mem_finsuppAntidiag] at hk
set s := (range n).filter fun i ↦ k i = 0 with hs_def
have hs : s ⊆ range n := filter_subset _ _
have hs' (i : ℕ) (hi : i ∈ s) : coeff R (k i) f = constantCoeff σ R f := by
simp only [hs_def, mem_filter] at hi
rw [hi.2, coeff_zero_eq_constantCoeff]
have hs'' (i : ℕ) (hi : i ∈ s) : k i = 0 := by
simp only [hs_def, mem_filter] at hi
rw [hi.2]
rw [← prod_sdiff (s₁ := s) (filter_subset _ _)]
apply mul_eq_zero_of_right
rw [prod_congr rfl hs', prod_const]
suffices m ≤ s.card by
obtain ⟨m', hm'⟩ := Nat.exists_eq_add_of_le this
rw [hm', pow_add, hf, MulZeroClass.zero_mul]
rw [← Nat.add_le_add_iff_right, add_comm s.card,
Finset.card_sdiff_add_card_eq_card (filter_subset _ _), card_range]
apply le_trans _ hn
simp only [add_comm m, Nat.add_le_add_iff_right, ← hk.1,
← sum_sdiff (hs), sum_eq_zero (s := s) hs'', add_zero]
rw [← hs_def]
convert Finset.card_nsmul_le_sum (range n \ s) (fun x ↦ degree (k x)) 1 _
· simp only [Algebra.id.smul_eq_mul, mul_one]
· simp only [degree_eq_weight_one, map_sum]
· simp only [hs_def, mem_filter, mem_sdiff, mem_range, not_and, and_imp]
intro i hi hi'
rw [← not_lt, Nat.lt_one_iff, degree_eq_zero_iff]
exact hi' hi

end CommSemiring

section Algebra
Expand Down
Loading
Loading