### 6.30.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]`