### 6.31.1 Base de Gröbner : gbasis

gbasis a au moins deux arguments : une liste de polynômes de plusieurs variables et la liste du nom de ces variables.
gbasis renvoie une base de Gröbner de l’idéal polynomial engendré par les polynômes donnés dans le premier argument.
On choisit d’ordonner les monômes selon l’ordre lexicographique en accord avec la liste donnée par le dernier argument et selon les puissances décroissantes : par exemple on écrira x2*y4*z3 puis x2*y3*z4 si le deuxième argument est [x,y,z] car (2,4,3)>(2,3,4) mais on écrira x2*y3z4 puis x2*y4*z3 si le deuxième argument est [x,z,y].
Si I est un idéal et si (Gk)k ∈ K est une base de Gröbner de l’idéal I alors, si F est un polynôme non nul de I, le terme dominant de F est divisible par le terme dominant d’un Gk.
Propriété : Si on fait la division euclidienne de F par un des Gk puis, si on recommence avec le reste obtenu et le Gk suivant, on finit par obtenir un reste nul.
On tape :

gbasis([2*x*y-y`^`2,x`^`2-2*x*y],[x,y])

On obtient :

[y`^`3,x*y+(-1/2)*y`^`2,x`^`2-y`^`2]

On peut donner des arguments supplémentaires :

- plex (lexicographique pur utilisé par défaut)), tdeg (degré total puis ordre lexicographique), revlex (degré total puis ordre lexicographique inverse), pour spécifier un ordre sur les monômes différent de l’ordre par défaut (qui est plex),
- with_cocoa=true ou with_cocoa=false, si on veut utiliser la librairie CoCoA pour faire le calcul de la base de Gröbner.
- with_f5=true ou with_f5=false pour utiliser l’implémentation de l’algorithme F5 de la librairie CoCoA. L’ordre spécifié n’est alors pas utilisé, les polynômes étant homogénéisés.

On tape :

`gbasis([x1+x2+x3,x1*x2+x1*x3+x2*x3,x1*x2*x3-1],`
`[x1,x2,x3],tdeg,with_cocoa=false)`

On obtient

`[x3^3-1,-x2^2-x2*x3-x3^2,x1+x2+x3]`