x
2,
−1
2 , 1
.
On en déduitque modulo l'idéal
A= (p)
on a1
x =
x
2·
On retrouvela relationbien onnue :
1
√
2 =
√
2
2 ·
5.2 Systèmes triangulaires unitaires omportant autant
d'équations que d'in onnues
Il s'agit du as où
R = K[x1, . . . , xn]
etA = {f1, . . . , fn}
est un système triangulaire unitaire tel queld pi = xi
. Par unitaire on entend que les éléments deA
ont tous1
pour oe ientinitial. I i,l'idéal
A= (A)
. Unsystème triangulaire etunitaireest une base de Gröbner de l'idéal qu'il engendre. La notion de forme normale que nous allons établiroïn ide ave elle des bases de Gröbner.
5.2.1 Dénition de la forme normale
Dénition 4 Onappelleformenormaled'unpolynme
f
parun systèmeA
tout polynmep
équivalent à
f
moduloA
et tel quedeg(p, xi) < deg(fi, xi)
pour tous1≤ i ≤ n
. Le lemme lefest lesuivant.Lemme 2 Si
p
est un polynme de l'idéalA
tel quedeg(p, xi) < deg(fi, xi)
pour tousPreuve Notons
dk = deg(fk, xk)
. On supposep ∈ A
etdeg(p, xk) < dk
pour1≤ k ≤ n
et on her he à on lure quep = 0
. Commep∈ A
on aune formulep = λ1f1+· · · + λkfk
.Sik = 0
alorsp = 0
et le lemme est prouvé. Supposons don qu'on ait aaire à une formule de longueurk > 0
aveλk 6= 0
, notonsfk = xdk
k + gk
et substituonsxdk
k → fk − gk
dansλ1, . . . , λk−1
.On obtientune nouvelleformulep = µ1f1+· · · + µkfk
qu'on peut réarranger detellesortequedeg(µi, xk) < dk
pour1≤ i < k
.Commedeg(p, xk) < dk
etdeg(fi, xk) = 0
pour
1 ≤ i < k
on on lut queµk = 0
. On a don obtenu pourp
, une nouvelle formulede longueurstri tementinférieureàk
.En ontinuantdepro he enpro he, ondéduitquep = 0
.Proposition 12 La forme normale d'un polynme
f
par un systèmeA
est unique. Deux polynmes équivalents moduloA
ont même forme normale.Preuve Il sut de montrer que deux polynmes
f
etf′
équivalents modulo
A
ont même formenormale.Soientg
une formenormaledef
etg′
uneformenormalede
f′
.Lepolynme
g− g′
est une formenormaleet appartient à l'idéal.Il doit don être nul.
Proposition 13 La dénition de la forme normale est algorithmique.
Preuve Le polynme suivant onstitue une formenormaledu polynme
f
.NF(f, A) = rem(f, A) = rem(. . . rem(rem(f, fn, xn), fn−1, xn−1) . . . , f1, x1).
5.2.2 Dé ider de la nullité et de l'inversibilité
Proposition 14 Dé ider si
f = 0
dansR/A
revient à dé ider sirem(f, A) = 0
. Plus généralement, dé ider sif ∈ K
dansR/A
revient à dé ider sirem(f, A)∈ K
.Intéressonsnous maintenant autest d'inversibilitédans
R/A
.On dispose d'une généralisationnaturellede l'algorithme d'Eu lide étendu. Soient
a
etb
deux polynmes d'indéterminée prin ipale
xk
. NotonsRk−1 = K[x1, . . . , xk−1]
. On voit les polynmesa
etb
omme polynmes enxk
et à oe ients pris moduloA
'estàdire ommedesélémentsde(Rk−1/(A∩Rk−1))[xk]
eton her he à al uleruneidentitéde Bézoutu1a + u2b = u3
dans et anneau.On her he don àgénéraliserEu lide_étenduen unalgorithmed'entêteEu lide_étendu
(a, b, xk, A)
.Lesdeuxpremièresinstru tionsd'Eu lide_étendun'ontpasbesoind'être han-gées. On peut dé ider de l'égalité àzéro moduloA
( f. les propositions idessus). On peut don déterminerle degré d'un polynme à oe ients moduloA
et en parti ulier réaliserle testv3 6= 0
.Le al uldel'inversed'unélémentdeRk−1/(A∩Rk−1)
resteladernièreopération non évidente à réaliser : on la trouve expli itement à la n de la bou le et impli itementfon tion inverse_algébrique
(a, A)
début sia ∈ K
alors sia6= 0
alors 1/a sinonle al uld'inverse é houe (division par zéro)
n si
sinon
soit
xi
l'indéterminéeprin ipale dea
(u1, u2, u3)
:=Eu lide_étendu(a, fi, xi, A)
si
u3 6= 1
alorsle al uld'inverse é houe (inversion d'un diviseur de zéro)
sinon
u1
n si
n si
n
Voi il'algorithme Eu lide_étendu généralisé.
fon tion Eu lide_étendu
(a, b, xi, A)
début
U
:=(1, 0, a)
V
:=(0, 1, b)
tant que
v3 6= 0
faireq
:=le quotient de la division eu lidiennedeu3
parv3
T
:=V
V
:=U − q V
U
:=T
faitc
:= le oe ient dexdeg u3
i
dansu3
retourner inverse_algébrique(c, A) U
nTerminaison. Les fon tions inverse_algébrique et Eu lide_étendu s'appellent
ré ursive-mentl'unel'autre.Les al ulsterminentdanstousles aspar equel'indéterminéeprin ipale
xi
dé roîtstri tement à haque appelà Eu lide_étendu.Corre tion.Point lef:lesinvariantsdebou ledelaversiongénéraliséedeEu lide_étendu
sont lesmêmes que eux de la versiontraditionnelle.Pré isément,
2. dans
(Rk−1/(A∩ Rk−1))[xk]
, l'ensemble des diviseurs ommuns dea
etdeb
est égal à l'ensembledes diviseurs ommuns deu3
etdev3
.Noter quelapreuvedu deuxièmeinvariantne faitintervenirquedes opérationsd'anneau. Il
n'est pas né essaire de supposer l'anneau fa toriel. Ces invariantsont deux orollaires.
1. si la fon tion inverse_algébrique termine normalement son exé ution, l'élément
re-tourné
u1
est un inverse dea
dansRk−1/(A∩ Rk−1)
eta fortiori dansR/A
, 2. siu3 6= 1
alorsu3
est un fa teur non trivialdefi
dans(Rk−1/(A∩ Rk−1))[xk]
.Il est normal que le al ul puisse é houer puisque
R/A
n'est pas né essairement intègre. Cela n'implique pas d'ailleursquea
soitun diviseur de zéro puisque la fon tion est amenée à tester l'inversibilité d'éléments autres quea
. En as d'é he , une fa torisation d'unfi ∈
A
est exhibée. Cette fa torisationfi = g h
(les fa teurs s'obtiennent par simple division eu lidienne)permetdes inderlesystèmeA
endeuxsystèmestriangulairesunitaires,obtenus en remplaçantfi
par l'un oul'autrede ses fa teurs. Pour résumer,Proposition 15 La fon tion inverse_algébrique, appliquée à un polynme
f
et àA
, soit prouve quef
est inversible dansR/A
soit permet de s inder lesystèmeA
en deux systèmes plus simples.Sionne s'intéressequ'autest d'inversibilitéetnon au al ulde l'inverse, onpeututiliser
une version non étendue de l'algorithme d'Eu lide. La version non étendue est nettement
moins oûteuse :lepg dde deux polynmesestpetit(ilvaut souvent
1
)maisles oe ients desidentitésdeBézoutsontgros.Lafon tioninverse_algébriquenefournitqu'unalgorithmede semidé ision.On peut la ompléterpourobtenir un algorithmede dé isionmais 'estlà
àmon avis un problème peu intéressanten pratique. Considéronspar exemple lesystème
A
formédes deux équations suivantes :
x22+ x1− 2 = 0, x2
1− 1 = 0.
La fon tion inverse_algébrique, appliquée au polynme
3 x2
, retourne son inverse(x2x1 +
2 x2)/9
. Lafon tion inverse_algébrique,appliquée aupolynmex1+ x2
é houe. Elleexhibe lafa torisationx2
1−1 = (x1−1)(x1+1)
quipermetde s inderlesystèmeA
en deuxsystèmes plus simples :x22− 1 = 0, x1− 1 = 0
oux22 − 3 = 0, x1+ 1 = 0.
Pour paraphraserMi helDemazure [26, page 42℄, les idéaux dé rits par des systèmes
trian-gulaires admettant autant d'équations que d'in onnues sont des idéaux premiers à usage
ommer ial : e sont des idéaux qui se omportent omme des idéaux premiers jusqu'à
e qu'on dé ouvre qu'ils ne le sont pas. Dans le domaine du al ul formel, ette idée est
onnue souslenom de prin ipe
D5
du nomdes auteursde [35℄:Jean DellaDora,Claire
Di res enzo et Dominique Duval.
Le programme C suivant montre omment e mé anisme est implanté dans les
sont lus et ae tés au tableau de polynmes
T
. Une bou le al ule leur inverse algébrique et imprime soit l'inverse soit le diviseur de zéro exhibé. En BLAD, les tableaux sont desstru tures à trois hamps : un hamp allo ontenant le nombre d'éléments alloués au
ta-bleau, un hamp size ontenant le nombre d'éléments utilisés dans le tableau et un hamp
tab qui pointesur les éléments. Comme il est normalement rarissimequ'un al ul d'inverse
algébriqueé houe, lafon tionbad_invert_polynom_mod_reg hainestprogramméepour
le-ver une ex eption lorsque et événement se produit. Il s'agit d'une variante du mé anisme
présenté au hapitrepré édent quipermet àla fon tionqui lèvel'ex eption de retourner un
objet (i i lediviseur de zéro exhibé)à la fon tion quitraite l'ex eption. Lediviseur de zéro
est retourné viala variable ddz.
/* File inverse_algebrique. */ #in lude "bad.h" int main () { bav_Iordering r; stru t bad_reg hain C; stru t bap_produ t_mpz U, G; stru t bap_tableof_polynom_mpz T; bap_polynom_mpz ddz;
stru t ba0_ex eption_ ode ode;
stru t ba0_mark M;
int i;
bad_restart (0, 0);
ba0_re ord (&M);
ba0_ss anf2 ("ordering (derivations = [℄, blo ks = [x2, x1℄)",
"%ordering", &r);
bav_R_push_ordering (r);
bad_init_reg hain (&C);
ba0_ss anf2 ("reg hain ([x2^2 + x1 - 2, x1^2 - 1℄, [℄)", "%reg hain", &C);
ba0_init_table ((ba0_table)&T);
bap_init_produ t_mpz (&U);
bap_init_produ t_mpz (&G);
ba0_ss anf2 ("[3*x2, x1 + x2℄", "%t[%Az℄", &T);
for (i = 0; i < T.size; i++)
{ BA0_PUSH_EXCEPTION ( ode);
if (ba0_ex eption_is_raised ( ode))
{ ba0_printf ("Inversion of %Az failed. ", T.tab [i℄);
ba0_printf ("Zero divisor found : %Az\n", ddz);
} else
{ bad_invert_polynom_mod_reg hain (&U, &G, T.tab [i℄, &C, &ddz);
ba0_pull_ex eption ( ode);
("%Pz * %Az = %Pz modulo %reg hain\n", &U, T.tab [i℄, &G, &C); } } ba0_restore (&M); bad_terminate (ba0_init_level); return 0; }
Voi il'a hage obtenuà l'exé ution.
Inversion of 3*x2 su eeded
x2*(x1 + 2) * 3*x2 = 9 modulo reg hain ([x1^2 - 1, x2^2 + x1 - 2℄, [℄)
Inversion of x2 + x1 failed. Zero divisor found : x1 - 1
Les bibliothèques BLAD orent aussi une fon tion nommée
bad_ he k_regularity_poly-nom_mod_reg hain quivérie qu'unpolynme passéen paramètreestinversible(mais sans
al ulerl'inverse) etqui lèveune ex eptionsinon.