Et les Shadoks comptaient, comptaient . . . Contexte et notations

publicité
File:CountingWithFlipFlopAndGaiRequin.tex
compil. le 6 février 2017,7:52
Et les Shadoks comptaient, comptaient . . .
Contexte et notations
• On désigne par K un corps de nombres et OK son anneau d’entiers. On fixe un premier p qui se factorise
dans OK en :
pOK = pe11 · · · pegg
Pg
et on note fi = dimFp OK /pi de sorte que i=1 ei fi = [K : Q].
• On introduit le facteur p-Eulérien de K qui est la fraction rationnelle :
Zp (T ) =
g
Y
1
1 − T fi
i=1
A noter que les indices de ramification ei n’interviennent pas dans la définition de Zp (T ).
• Pour un entier m ≥ 1, on note am = νK (m) le nombre d’idéaux de OK de norme m. Cette suite
intervient dans la fonction zeta de Dedekind de K :
X am
X 1
=
ζK (s) =
s
N (I)
ms
m≥1
I6=0
Il est important (c’est une qualité de l’anneau OK ) de signaler que la norme sur les idéaux, définie par
N (I) = #OK /I, est multiplicative et que N (pi ) = pfi . En conséquence :
α1 f1 +···+αg fg
αg
1
N (pα
1 · · · pg ) = p
• On a a1 = 1 et la suite (am )m≥1 est multiplicative. Cela permet d’écrire :
X am
Y X apr () Y 1 =
Zp
=
ms
prs
ps
p
p
m≥1
r≥0
L’égalité () sera justifiée par la proposition ci-après.
• Pour une fraction rationnelle à une indéterminée Z = Z(T ), on convient de parler de sa dérivée
logarithmique décalée DLD(Z) qui est la fraction rationnelle :
DLD(Z) = T
Z0
Z
Par exemple :
DLD
1
1 − Tf
=
fTf
1 − Tf
• Etant donné un entier q, puissance d’un nombre premier, un Fq -point de OK est un morphisme d’anneaux (ou de Z-algèbres, c’est la même chose) OK → Fq . Supposons par exemple, OK monogène i.e.
OK = Z[x] = Z[X]/hF i où F ∈ Z[X] est un polynôme unitaire irréductible ; alors un Fq -point de OK ,
ψ : OK → Fq est défini par son image ξ := ψ(x) ∈ Fq qui doit vérifier F (ξ) = 0. I.e. les Fq -points de Z[x]
sont les racines du polynôme F dans Fq .
De manière plus générale, la Z-algèbre OK peut-être vue comme une Z-algèbre de présentation finie :
OK = Z[x1 , . . . , x` ] = Z[X1 , . . . , X` ]/hF1 , · · · , Fs i
Ceci fournit un schéma affine défini sur Z :
{F1 = · · · = Fs = 0}
Un Fq -point de OK n’est autre qu’un point de ce schéma affine défini sur Fq .
On note :
Nq (OK ) = nombre de Fq -points de OK
1
Un exemple dans ce formalisme. Un Fp -point de OK est un morphisme ψ : OK → Fp , nécessairement
surjectif ; son noyau est un idéal maximal p de OK et l’on a OK /p ' Fp . Ceci prouve que p est l’un des
pi ayant un degré fi égal à 1. Bilan :
Np (OK ) = nombre de fi égaux à 1 = ap
Cela vaut le coup de ré-écrire les choses en français, de l’encadrer et même mettre du rouge
Le nombre de points sur Fp du Z-schéma défini par OK est égal au nombre d’idéaux de OK de norme p
De la même manière, on pourrait, pour tout anneau k, définir un k-point de OK comme étant un
morphisme d’anneaux OK → k.
Le résultat visé par les Shadoks
Proposition 1.
(1) Le coefficient de T k dans le développement en série formelle de Zp (T ) est le nombre apk d’idéaux de
norme pk :
Zp (T ) = 1 + ap T 1 + ap2 T 2 + ap3 T 3 + · · ·
(2) La dérivée logarithmique décalée de Zp (T ) est la série génératrice de la suite (Nr )r≥1 = (Npr (OK ))r≥1
i.e.
Zp0 (T )
= N1 T + N2 T 2 + N3 T 3 + · · ·
T
Zp (T )
P
(3) Pris dans l’autre sens, la série r≥1 Nr T r est une fraction rationnelle. Très précisemment :
X
Nr T r =
r≥1
On introduit :
f1 T f1
fg T fg
+
·
·
·
+
1 − T f1
1 − T fg
(
f
δ(f, •) =
0
Alors :
N (OK ) =
pr
si f | •
sinon
g
X
δ(fi , r)
i=1
En particulier :
Np (OK ) = nombre de fi égaux à 1
La preuve du premier point
On a toujours N (I) ∈ I ; en effet, le groupe abélien OK /I est de cardinal N (I) donc annulé par N (I).
En particulier N (I) · 1 = 0 dans ce quotient, donc N (I) ∈ I.
Soit I un idéal de norme pk . On a pk ∈ I et donc les facteurs premiers de I sont parmi les pi . En
conséquence, I s’écrit de manière unique :
αg
1
I = pα
1 · · · pg
Puisque N (I) = pα1 f1 +···+αg fg , on a :
(?)
α1 f1 + · · · + αg fg = k
Le nombre apk d’idéaux de OK de norme pk est donc le nombre de α = (α1 , · · · , αg ) ∈ Ng vérifiant (?).
Mais ce nombre est le coefficient de T k dans le développement en série formelle de :
Zp (T ) =
1
1
···
f
1
1−T
1 − T fg
Pour le voir, il suffit de développer Zp (T ) sous la forme :
(1 + T f1 + T 2f1 + T 3f1 + · · · )
···
et d’examiner le coefficient de T k dans ce produit.
2
(1 + T fg + T 2fg + T 3fg + · · · )
Plus sur la dérivée logarithmique décalée
Elle transforme un produit en une somme. En conséquence :
T
Zp0 (T )
fg T fg
f1 T f1
+
·
·
·
+
=
Zp (T )
1 − T f1
1 − T fg
La preuve des deux autres points
• On rappelle le fait suivant sur les corps finis. Soient deux corps finis k et k0 ; à quelle condition existe-t-il
un morphisme de k dans k0 et si oui combien ? La réponse est : il en existe un si et seulement si #k0 est
une puissance de #k. Et dans ce cas, le nombre de morphismes de k → k0 est #Aut(k) i.e. f si k ' Fpf .
Justification : la première partie est classique. A noter dans ce cas qu’il existe un seul sous-corps de k0
isomorphe à k à savoir {x ∈ k0 | xq = x} si q = #k. On obtient tous les morphismes de k dans k0 en
composant un morphisme fixé par tous les automorphismes de k.
Et on sait que Aut(Fpf ) est un groupe cyclique d’ordre f engendré par le Frobenius x 7→ xp .
• D’autre part, quel est le coefficient de T r dans le développement en série formelle de :
fTf
1 − Tf
La réponse est :
(
f si f | r
0 sinon
c.a.d
δ(f, r) = coeff de T r dans le développement de
fTf
1 − Tf
Soit ψ : OK → Fq un Fq -point de OK où q est une puissance de p, q = pr . Son noyau est un idéal maximal
p de OK et on a une injection :
OK /p ,→ Fq
En conséquence, OK /p est un corps de caractéristique p et donc p est l’un des pi .
Réciproquement, on obtient tous les Fq -points de OK en considérant tous les morphismes
Fpfi ' OK /pi ,→ Fq = Fpr
(♥i )
avec i variable.
Combien de morphismes tels que (♥i ) ? Si r n’est pas multiple de fi , aucun, sinon fi . C.a.d. avec nos
notations δ(fi , r).
Bilan : le nombre de Fpr -points de OK est à la fois :
g
X
δ(fi , r) et le coefficient en T r de
i=1
3
f1 T f1
fg T fg
+
·
·
·
+
1 − T f1
1 − T fg
Illustrations
Le polynôme de Dedekind
>
>
>
>
>
>
>
F := X^3 + X^2 - 2*X + 8 ;
assert Discriminant(F) eq -2^2 * 503 ;
K<x> := NumberField(F) ;
y := 4/x ;
OK := MaximalOrder(K) ;
assert Discriminant(OK) eq -503 ;
assert OK eq Order([x, y]) ;
>
[
>
[
>
[
DecompositionType(OK, 2) ;
<1, 1>, <1, 1>, <1, 1> ]
DecompositionType(OK, 503) ;
<1, 1>, <1, 2> ]
[<p, LegendreSymbol(-503,p), DecompositionType(OK,p)> : p in PrimesInInterval(3,10^2)] ;
Quelques lois de factorisation
<3, 1, [ <3, 1> ]>,
<5, -1, [ <1, 1>, <2, 1> ]>,
<7, 1, [ <3, 1> ]>,
<11, 1, [ <3, 1> ]>,
<13, 1, [ <3, 1> ]>,
<17, -1, [ <1, 1>, <2, 1> ]>,
<19, -1, [ <1, 1>, <2, 1> ]>,
<23, 1, [ <3, 1> ]>,
<29, -1, [ <1, 1>, <2, 1> ]>,
<31, -1, [ <1, 1>, <2, 1> ]>,
<37, -1, [ <1, 1>, <2, 1> ]>,
<41, -1, [ <1, 1>, <2, 1> ]>,
<43, 1, [ <3, 1> ]>,
<47, 1, [ <3, 1> ]>,
<53, -1, [ <1, 1>, <2, 1> ]>,
<59, 1, [ <1, 1>, <1, 1>, <1,
<61, 1, [ <3, 1> ]>,
<67, 1, [ <3, 1> ]>,
<71, -1, [ <1, 1>, <2, 1> ]>,
<73, 1, [ <1, 1>, <1, 1>, <1,
<79, 1, [ <1, 1>, <1, 1>, <1,
<83, 1, [ <3, 1> ]>,
<89, -1, [ <1, 1>, <2, 1> ]>,
<97, 1, [ <1, 1>, <1, 1>, <1,
1> ]>,
1> ]>,
1> ]>,
1> ]>
]
>
> // si p non carré mod 503 : g=2 et f1=1, f2=2
> assert &and [DegreeType(OK,p) eq [1,2] : p in PrimesInInterval(3,10^3) | LegendreSymbol(p,503) eq -1] ;
> // Mais si p est en carré mod 503, on peut avoir g=1 (inerte) ou g=3 (totalement décomposé)
> [p : p in PrimesInInterval(3,10^3) | LegendreSymbol(p,503) eq 1 and DegreeType(OK,p) eq [1,1,1]] ;
[ 59, 73, 79, 97, 199, 283, 383, 389, 421, 433, 547, 569, 587, 599, 647, 673, 691, 719, 797, 827,
881, 883, 887, 919, 977 ]
Détermination du schéma
> ZXY<X,Y> := PolynomialRing(Z,2) ;
> equations := OrderPresentationEquations([x,y] : PolRing := ZXY) ;
> IZ := Ideal(equations) ;
> IZ ;
Ideal of Polynomial ring of rank 2 over Integer Ring
Order: Lexicographical
Variables: X, Y
Basis:
[
2*X + Y^2 - Y + 2,
X*Y - 4,
X^2 + X + 2*Y - 2
]
> assert Evaluate(F,X) in IZ ;
> assert IZ ne Ideal([Evaluate(F,X), X*Y - 4]) ;
>
> IQ := ChangeRing(IZ,Q) ;
> assert IsMaximal(IQ) ;
> L<x,y> := Generic(IQ)/IQ ;
> assert MinimalPolynomial(x) eq F and x*y eq 4 ;
>
> A2 := AffineSpace(Generic(IZ)) ;
> A2 ;
Affine Space of dimension 2
Variables: X, Y
> OKscheme := Scheme(A2, IZ) ;
> OKscheme ;
Scheme over Integer Ring defined by
X^2 + X + 2*Y - 2,
X*Y - 4,
2*X + Y^2 - Y + 2,
Y^3 - Y^2 + 2*Y + 8
4
>
>
>
>
>
>
>
>
>
>
t
Fonction ζK , facteurs Eulériens
NombreDePoints := func < q | #Points(BaseChange(OKscheme, GF(q))) > ;
et comptage
p := RandomPrime(4) ;
degrees := DegreeType(OK, p) ;
assert &and [NombreDePoints(p^r) eq &+[deltaSymbol(fi,r) : fi in degrees] : r in [1..20]] ;
precision := 10^2 ;
DedekindZetaK := LSeries(K) ;
SK := FormalSeries(DedekindZetaK, precision) ;
SK ;
+ 3*t^2 + 6*t^4 + t^5 + 10*t^8 + 3*t^10 + 15*t^16 + t^17 + t^19 + 6*t^20 + 2*t^25 + t^27 + t^29 + t^31 + 21*t^32 +
3*t^34 + t^37 + 3*t^38 + 10*t^40 + t^41 + 6*t^50 + t^53 + 3*t^54 + 3*t^58 + 3*t^59 + 3*t^62 + 28*t^64 + 6*t^68 +
t^71 + 3*t^73 + 3*t^74 + 6*t^76 + 3*t^79 + 15*t^80 + 3*t^82 + t^85 + t^89 + t^95 + 3*t^97 + 12*t^100
> assert &and [NombreDePoints(p) eq Coefficient(SK,p) : p in PrimesInInterval(2,precision)] ;
>
> p := 2 ;
> pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
> assert pZeta eq 1/(1-T)^3 ;
> S := T*Derivative(pZeta) / pZeta ;
> // S = 3*T/(1-T) = 3 * (T + T^2 + T^3 + ....)
> assert S eq 3*T/(1-T) ;
> PSR ! S ;
3*t + 3*t^2 + 3*t^3 + 3*t^4 + 3*t^5 + 3*t^6 + 3*t^7 + 3*t^8 + 3*t^9 + 3*t^10 + 3*t^11 + 3*t^12 + 3*t^13 + 3*t^14 +
3*t^15 + 3*t^16 + 3*t^17 + 3*t^18 + 3*t^19 + 3*t^20 + O(t^21)
> assert &and [NombreDePoints(p^r) eq 3 : r in [1..20]] ;
>
> p := 503 ;
> pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
> assert pZeta eq 1/(1-T)^2 ;
> S := T*Derivative(pZeta) / pZeta ;
> S ;
-2*T/(T - 1)
> // S = 2*T/(1-T) = 2 * (T + T^2 + T^3 + ....)
> assert S eq 2*T/(1-T) ;
> PSR ! S ;
2*t + 2*t^2 + 2*t^3 + 2*t^4 + 2*t^5 + 2*t^6 + 2*t^7 + 2*t^8 + 2*t^9 + 2*t^10 + 2*t^11 + 2*t^12 + 2*t^13 + 2*t^14 +
2*t^15 + 2*t^16 + 2*t^17 + 2*t^18 + 2*t^19 + 2*t^20 + O(t^21)
> assert &and [NombreDePoints(p^r) eq 2 : r in [1..20]] ;
>
> for p in PrimesInInterval(3,30) do
for>
degrees := DegreeType(OK,p) ;
for>
assert &and [NombreDePoints(p^r) eq &+[deltaSymbol(fi,r) : fi in degrees] : r in [1..20]] ;
for>
pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
for>
assert pZeta eq EulerianFactor(OK, p) ;
for>
S := T*Derivative(pZeta) / pZeta ;
for>
assert &and [NombreDePoints(p^r) eq Coefficient(PSR!S,r) : r in [1..Ilog(p,precision)]] ;
for> end for ;
Le source OrderPresentationIdeal.magma
clear ;
load "FlipFlopZetaFunctionTools.magma" ;
SetColumns(120) ;
Q := RationalField() ;
ZX<X> := PolynomialRing(Z) ;
// QY = Q[Y] but magma-multivariate (to use AffineAlgebraMapKernel)
PolynomialLift := function(QY, y)
L := Parent(y) ;
assert IsSimple(L) ;
c := Eltseq(y) ;
R := &+[c[i]*Y^(i-1) : i in [1..#c]] where Y is QY.1 ;
assert y eq Evaluate(R,[x]) where x is L.1 ;
return R ;
end function ;
// S = sequence d’éléments entiers d’un corps de nombres
OrderPresentationEquations := function(S : PolRing := PolynomialRing(Z, #S))
L := Universe(S) ;
assert IsSimple(L) ;
assert &and [IsIntegral(y) : y in S] ;
P := MinimalPolynomial(L.1) ;
QY<Y> := PolynomialRing(Q,1) ;
QYquoP, pi := QY / Ideal(Evaluate(P,Y)) ;
S := [pi(PolynomialLift(QY,y)) : y in S] ;
QS := PolynomialRing(Q, #S) ;
Theta := hom < QS -> QYquoP | S > ;
I := AffineAlgebraMapKernel(Theta) ;
equations := Basis(I) ;
equations := ChangeUniverse(equations, PolRing) ;
return equations ;
end function ;
5
deltaSymbol := func <f, r | IsDivisibleBy(r,f) select f else 0 > ;
// DecompositionType : [<f_1,e_>, ... <f_g,e_g>]
DegreeType := func < OK, p | [fiei[1] : fiei in DecompositionType(OK,p)] > ;
EulerianFactor := func < OK, p | 1/&*[1 - T^fi : fi in DegreeType(OK,p)] > ;
SetEchoInput(true) ;
F := X^3 + X^2 - 2*X + 8 ;
assert Discriminant(F) eq -2^2 * 503 ;
K<x> := NumberField(F) ;
y := 4/x ;
OK := MaximalOrder(K) ;
assert Discriminant(OK) eq -503 ;
assert OK eq Order([x, y]) ;
DecompositionType(OK, 2) ;
DecompositionType(OK, 503) ;
[<p, LegendreSymbol(-503,p), DecompositionType(OK,p)> : p in PrimesInInterval(3,10^2)] ;
// si p non carré mod 503 : g=2 et f1=1, f2=2
assert &and [DegreeType(OK,p) eq [1,2] : p in PrimesInInterval(3,10^3) | LegendreSymbol(p,503) eq -1] ;
// Mais si p est en carré mod 503, on peut avoir g=1 (inerte) ou g=3 (totalement décomposé)
[p : p in PrimesInInterval(3,10^3) | LegendreSymbol(p,503) eq 1 and DegreeType(OK,p) eq [1,1,1]] ;
ZXY<X,Y> := PolynomialRing(Z,2) ;
equations := OrderPresentationEquations([x,y] : PolRing := ZXY) ;
IZ := Ideal(equations) ;
IZ ;
assert Evaluate(F,X) in IZ ;
assert IZ ne Ideal([Evaluate(F,X), X*Y - 4]) ;
IQ := ChangeRing(IZ,Q) ;
assert IsMaximal(IQ) ;
L<x,y> := Generic(IQ)/IQ ;
assert MinimalPolynomial(x) eq F and x*y eq 4 ;
A2 := AffineSpace(Generic(IZ)) ;
A2 ;
OKscheme := Scheme(A2, IZ) ;
OKscheme ;
NombreDePoints := func < q | #Points(BaseChange(OKscheme, GF(q))) > ;
p := RandomPrime(4) ;
degrees := DegreeType(OK, p) ;
assert &and [NombreDePoints(p^r) eq &+[deltaSymbol(fi,r) : fi in degrees] : r in [1..20]] ;
precision := 10^2 ;
DedekindZetaK := LSeries(K) ;
SK := FormalSeries(DedekindZetaK, precision) ;
SK ;
assert &and [NombreDePoints(p) eq Coefficient(SK,p)
:
p in PrimesInInterval(2,precision)] ;
p := 2 ;
pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
assert pZeta eq 1/(1-T)^3 ;
S := T*Derivative(pZeta) / pZeta ;
// S = 3*T/(1-T) = 3 * (T + T^2 + T^3 + ....)
assert S eq 3*T/(1-T) ;
PSR ! S ;
assert &and [NombreDePoints(p^r) eq 3 : r in [1..20]] ;
p := 503 ;
pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
assert pZeta eq 1/(1-T)^2 ;
S := T*Derivative(pZeta) / pZeta ;
S ;
// S = 2*T/(1-T) = 2 * (T + T^2 + T^3 + ....)
assert S eq 2*T/(1-T) ;
PSR ! S ;
assert &and [NombreDePoints(p^r) eq 2 : r in [1..20]] ;
for p in PrimesInInterval(3,30) do
degrees := DegreeType(OK,p) ;
assert &and [NombreDePoints(p^r) eq &+[deltaSymbol(fi,r) : fi in degrees] : r in [1..20]] ;
pZeta := 1/IntegralEulerFactor(DedekindZetaK,p) ;
assert pZeta eq EulerianFactor(OK, p) ;
S := T*Derivative(pZeta) / pZeta ;
assert &and [NombreDePoints(p^r) eq Coefficient(PSR!S,r) : r in [1..Ilog(p,precision)]] ;
end for ;
SetEchoInput(false) ;
6
Téléchargement