/grobner.texi/1.3/Sat Jun  2 00:13:21 2007//
@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /grobner.texi/1.3/Sat Jun  2 00:13:21 2007//
@menu
* Introdu@value{cedilha}@~{a}o a grobner::
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para grobner::
@end menu

@node Introdu@value{cedilha}@~{a}o a grobner, Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para grobner, Top, Top
@section Introdu@value{cedilha}@~{a}o a grobner

@code{grobner} @'{e} um pacote para trabalhos com bases de Groebner no Maxima.

@noindent
Um tutorial sobre @emph{Bases de Groebner} pode ser encontrado em 

@noindent
@url{http://www.geocities.com/CapeCanaveral/Hall/3131/}

@noindent
Para usar as seguintes fun@value{cedilha}@~{o}es voc@^{e} deve primeiramente tornar o pacote @file{grobner.lisp} dispon@'{i}vel para uso:

@example
load(grobner);
@end example

@noindent
Uma demonstra@value{cedilha}@~{a}o de uso pode ser iniciada com
@example
demo("grobner.demo");
@end example

@noindent
ou com
@example
batch("grobner.demo")
@end example

@noindent
Alguns dos c@'{a}lculos no arquivo de demonstra@value{cedilha}@~{a}o ir@~{a}o tomar um pouco de tempo 
portanto a sa@'{i}da @file{grobner-demo.output} do arquivo de demonstra@value{cedilha}@~{a}o pode
ser encontrada no mesmo diret@'{o}rio que o arquivo de demonstra@value{cedilha}@~{a}o.

@subsection Notas sobre o pacote grobner
O pacote foi escrito por 

@noindent
Marek Rychlik 

@noindent
@url{http://alamos.math.arizona.edu}

@noindent
e foi liberado em 24/05/2002 nos termos da Licen@value{cedilha}a P@'{u}blica Geral (GPL/GNU/FSF) (veja o arquivo @file{grobner.lisp}.
Essa documenta@value{cedilha}@~{a}o foi extra@'{i}da dos arquivos
@flushleft
@file{README}, @file{grobner.lisp}, @file{grobner.demo}, @file{grobner-demo.output}
@end flushleft

@noindent
por G@"unter Nowak. Sugest@~{o}es de melhorias da documenta@value{cedilha}@~{a}o podem 
ser discutidas em @emph{maxima}-mailing-list @email{maxima@@math.utexas.edu}.
O c@'{o}digo est@'{a} um pouco desatualizado atualmente. Implementa@value{cedilha}@~{o}es modernas utilizam o algor@'{i}tmo r@'{a}pido @emph{F4} descrito em
@smallformat
A new efficient algorithm for computing Gr@"obner bases (F4) 
Jean-Charles Faug@`ere
LIP6/CNRS Universit@'e Paris VI 
January 20, 1999
@end smallformat

@subsection Implementa@value{cedilha}@~{o}es de ordem monomial admiss@'{i}vel em grobner

@itemize @bullet
@item @code{lex}

puramente lexicogr@'{a}fica,
ordena@value{cedilha}@~{a}o padr@~{a}o para compara@value{cedilha}@~{o}es monomiais
@item @code{grlex}

ordena@value{cedilha}@~{a}o total de grau, quando houver empate @'{e} quebrada pela ordem lexicogr@'{a}fica

@item @code{grevlex}

grau total, quando houver empate @'{e} quebrada pela ordem lexicogr@'{a}fica reversa

@item @code{invlex}

ordena@value{cedilha}@~{a}o lexicogr@'{a}fica reversa

@end itemize

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para grobner, , Introdu@value{cedilha}@~{a}o a grobner, Top
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para grobner 

@subsection Comutadores globais para grobner

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_monomial_order
Valor padr@~{a}o: @code{lex}

Esse comutador globalcontrola qual a ordena@value{cedilha}@~{a}o monomial @'{e} usada em polinomio e em c@'{a}lculos com Bases de Groebner. Se n@~{a}o for escolhidat, @code{lex} ser@'{a} usada.
@end defvr


@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_coefficient_ring
Valor padr@~{a}o: @code{expression_ring}

Esse comutador indica o anel de coeficiente dos polin@^{o}mios que
ir@'{a} ser usado em c@'{a}lculos de grobner. Se n@~{a}o for escolhido, o anel de express@~{a}o
geral do @emph{maxima's} ir@'{a} ser usado. Essa vari@'{a}vel pode ser escolhida para
@code{ring_of_integers} se for desejado.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_primary_elimination_order
Valor padr@~{a}o: @code{false}

Nome da ordem padr@~{a}o de elimina@value{cedilha}@~{a}o de vari@'{a}veis em
fun@value{cedilha}@~{o}es de elimina@value{cedilha}@~{a}o. Se n@~{a}o for escolhida, @code{lex} ir@'{a} ser usada.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_secondary_elimination_order
Valor padr@~{a}o: @code{false}

Nome da ordem padr@~{a}o para manter vari@'{a}veis em fun@value{cedilha}@~{o}es de elimina@value{cedilha}@~{a}o. Se n@~{a}o for escolhida, @code{lex} ir@'{a} ser usada.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_elimination_order
Valor padr@~{a}o: @code{false}

Nome da ordem padr@~{a}o de fun@value{cedilha}@~{o}es de 
elimina@value{cedilha}@~{a}o. Se escolhida, ir@'{a} sobrescrever as escolhas nas vari@'{a}veis
@code{poly_primary_elimination_order} e @code{poly_secondary_elimination_order}.
O usu@'{a}rio deve garantir que essa @'{e} uma ordem de elimina@value{cedilha}@~{a}o verdadeira v@'{a}lida
para o n@'{u}mero de vari@'{a}veis eliminadas. 
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_return_term_list
Valor padr@~{a}o: @code{false}

Se escolhida para @code{true}, todas as fun@value{cedilha}@~{o}es no pacote @code{grobner} ir@~{a}o retornar cada
polin@^{o}mio como uma lista de termos na ordem monomial corrente em lugar de
retornar uma express@~{a}o geral do @emph{maxima}.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_grobner_debug
Valor padr@~{a}o: @code{false}

Se escolhida para @code{true}, produz sa@'{i}da de depura@value{cedilha}@~{a}o e rastros.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_grobner_algorithm
Valor padr@~{a}o: @code{buchberger}

Valores poss@'{i}veis: 
@itemize
@item @code{buchberger}
@item @code{parallel_buchberger}
@item @code{gebauer_moeller}
@end itemize

O nome do algor@'{i}tmo usado para encontrar as bases de Groebner.
@end defvr

@defvr {Vari@'{a}vel de op@value{cedilha}@~ao} poly_top_reduction_only
Valor padr@~{a}o: @code{false}

Se n@~{a}o for @code{false}, usa redu@value{cedilha}@~{a}o de topo somente se for poss@'{i}vel. Redu@value{cedilha}@~{a}o de
topo significa que o algor@'{i}tmo de divis@~{a}o para ap@'{o}s a primeira
redu@value{cedilha}@~{a}o.
@end defvr

@subsection Operadores simples em grobner
@code{poly_add}, @code{poly_subtract}, @code{poly_multiply} e @code{poly_expt}
s@~{a}o as opera@value{cedilha}@~{o}es aritm@'{e}ticas sobre polin@^{o}mios.
Elas s@~{a}o executadas usando representa@value{cedilha}@~{a}o interna, mas os resultados s@~{a}o convertidos de volta @`{a}
forma geral do @emph{maxima}.

@deffn {Fun@value{cedilha}@~ao} poly_add (@var{poli1}, @var{poli2}, @var{varlist})
Adiciona dois polin@^{o}mios @var{poli1} e @var{poli2}.
@example

(%i1) poly_add(z+x^2*y,x-z,[x,y,z]);
                                    2
(%o1)                              x  y + x
@end example

@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_subtract (@var{poli1}, @var{poli2}, @var{varlist})
Subtrai o polin@^{o}mio @var{poli2} do polin@^{o}mio @var{poli1}.
@example

(%i1) poly_subtract(z+x^2*y,x-z,[x,y,z]);
                                      2
(%o1)                          2 z + x  y - x
@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_multiply (@var{poli1}, @var{poli2}, @var{varlist})
Retorna o produto dos polin@^{o}mios @var{poli1} e @var{poli2}.
@example

(%i2) poly_multiply(z+x^2*y,x-z,[x,y,z])-(z+x^2*y)*(x-z),expand;
(%o1)                                  0
@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_s_polynomial (@var{poli1}, @var{poli2}, @var{varlist})
Retorna o @emph{polin@^{o}mio syzygy} (@emph{S-polinomial}) de dois polin@^{o}mios @var{poli1} e @var{poli2}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_primitive_part (@var{poli1}, @var{varlist})
Retorna o polin@^{o}mio @var{poli} dividido pelo MDC entre seus coeficientes. 

@example
(%i1) poly_primitive_part(35*y+21*x,[x,y]);
(%o1)                              5 y + 3 x
@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_normalize (@var{poli}, @var{varlist})
Retorna o polin@^{o}mio @var{poli} dividido pelo coeficiente lider.
@code{poly_normalize} assume que a divis@~{a}o @'{e} poss@'{i}vel, o que nem sempre ocorre
em an@'{e}is que n@~{a}o s@~{a}o corpos (fields).
@end deffn

@subsection Outras fun@value{cedilha}@~{o}es em grobner

@deffn {Fun@value{cedilha}@~ao} poly_expand (@var{poli}, @var{varlist})
Essa fun@value{cedilha}@~{a}o transforma polin@^{o}mios para a forma interna e da forma interna para a forma geral. @code{poly_expand}
@'{e} equivalente a @code{expand(poly)} se @var{poli} passa corretamente para
um polin@^{o}mio. Se a representa@value{cedilha}@~{a}o n@~{a}o for compat@'{i}vel com um
polin@^{o}mio nas vari@'{a}veis @var{varlist}, o resultado @'{e} um erro.
Esse resultado em erro pode ser usado para testar se uma express@~{a}o transforma-se corretamente para a
representa@value{cedilha}@~{a}o interna. Os seguintes exemplos ilustra que
vari@'{a}veis de fun@value{cedilha}@~{o}es indexadas e transcendentes s@~{a}o permitidas.
@example

(%i1) poly_expand((x-y)*(y+x),[x,y]);
                                     2    2
(%o1)                               x  - y
(%i2) poly_expand((y+x)^2,[x,y]);
                                2            2
(%o2)                          y  + 2 x y + x
(%i3) poly_expand((y+x)^5,[x,y]);
                  5      4         2  3       3  2      4      5
(%o3)            y  + 5 x y  + 10 x  y  + 10 x  y  + 5 x  y + x
(%i4) poly_expand(-1-x*exp(y)+x^2/sqrt(y),[x]);
                                          2
                                  y      x
(%o4)                       - x %e  + ------- - 1
                                       sqrt(y)

(%i5) poly_expand(-1-sin(x)^2+sin(x),[sin(x)]);
                                2
(%o5)                      - sin (x) + sin(x) - 1

@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_expt (@var{poli}, @var{n@'{u}mero}, @var{varlist})
eleva @var{poli} a um inteiro positivo @var{n@'{u}mero}. If @var{n@'{u}mero} n@~{a}o for um inteiro positivo um erro ir@'{a} ser mostrado.
@example

(%i1) poly_expt(x-y,3,[x,y])-(x-y)^3,expand;
(%o1)                                  0
@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_content (@var{poli}. @var{varlist})
@code{poly_content} extrai o MDC entre seus coeficientes
@example

(%i1) poly_content(35*y+21*x,[x,y]);
(%o1)                                  7
@end example
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_pseudo_divide (@var{poli}, @var{polilist}, @var{varlist})
Realiza a divis@~{a}o falsa do polin@^{o}mio @var{poli} pela lista de @math{n} polin@^{o}mios @var{polilist}. Retorna
multiplos valores. O primeiro valor @'{e} uma lista de quocientes @math{a}. O
segundo valor @'{e} o resto @math{r}. O terceiro argumento @'{e} um coeficiente
escalar @math{c}, tal que @math{c*poli} pode ser dividido por@var{polilist} dentro do anel
dos coeficientes, que n@~{a}o @'{e} necess@'{a}riamente corpo. Finalmente, o
quarto valor @'{e} um contador inteiro do n@'{u}mero de redu@value{cedilha}@~{o}es
realizadas. O objetos resultantes satisfazem @`{a} equa@value{cedilha}@~{a}o:

@iftex
@tex
$$c*poly=\sum_{i=1}^{n}({a}_{i}*{polylist}_{i})+r$$
@end tex
@end iftex
@ifnottex
@math{c*poly=sum(a[i]*polylist[i],i=1...n)+r}.
@end ifnottex
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_exact_divide (@var{poli1}, @var{poli2}, @var{varlist})
Divide um polin@^{o}mio @var{poli1} por outro polin@^{o}mio @var{poli2}. Assume que a divis@~{a}o
exata (sem resto) @'{e} poss@'{i}vel. Retorna o quociente.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_normal_form (@var{poli}, @var{polilist}, @var{varlist})
@code{poly_normal_form} encontra a forma normal de um polin@^{o}mio @var{poli} com rela@value{cedilha}@~{a}o a
um conjunto de polin@^{o}mios @var{polilist}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_buchberger_criterion (@var{polilist}, @var{varlist})
Returns @code{true} if @var{polilist} is a Groebner basis with respect to the current term
order, by using the Buchberger
criterion: for every two polynomials @math{h1} and @math{h2} in @var{polilist} the
S-polynomial @math{S(h1,h2)} reduces to 0 @math{modulo} @var{polilist}.

@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_buchberger (@var{polilist_fl} @var{varlist})
@code{poly_buchberger} realiza o algor@'{i}tmo de Buchberger sobre uma lista de
polin@^{o}mios e retorna a base de Grobner resultante.

@end deffn


@subsection P@'{o}sprocessamento pad@~{a}o de bases de Groebner

@iftex
@tex
O \emph{k-@'{e}simo ideal de elimina@value{cedilha}@~{a}o} $I_k$ de um ideal $I$ sobre
$K [ x_1, ...,x_1 ]$ @'{e} $I \cap K [ x_{k + 1}, ..., x_n ]$.

\noindent
O \emph{ideal quociente} $I : J$ @'{e} o ideal $\{ h|\forall w in J : wh \in
I \}$.@*

\noindent
O ideal $I : p^{\infty}$ @'{e} o ideal $\{ h|\exists n \in N : p^n h \in I \}$.@*

\noindent
O ideal $I : J^{\infty}$ @'{e} o ideal $\{ h|\exists n \in N, \exists p \in J: p^n h \in I \}$.@*

\noindent
O \emph{ideal radical} $\sqrt{I}$ @'{e} o ideal $\{ h| \exists n \in N :
h^n \in I \}$.@*

@end tex
@end iftex

@ifnottex
O @emph{k-@'{e}simo ideal de elimina@value{cedilha}@~{a}o} @math{I_k} de uma Ideal @math{I} sobre @math{K[ x[1],...,x[n] ]} @'{e} o ideal @math{intersec@value{cedilha}@~{a}o(I, K[ x[k+1],...,x[n] ])}.@*
@noindent
O @emph{ideal quociente} @math{I:J} @'{e} o ideal @math{@{h|for all w em J: w*h em I@}}.@*
@noindent
O ideal @math{I:p^inf} @'{e} o ideal @math{@{h| existe um n em N: p^n*h em I@}}.@*
@noindent
O ideal @math{I:J^inf} @'{e} o ideal @math{@{h| existe um n em N \and a p em J: p^n*h em I@}}.@*
@noindent
O @emph{ideal radical} @math{sqrt(I)} @'{e} o ideal 
@math{@{h| existe um n em N : h^n em I @}}.
@end ifnottex

@noindent
@deffn {Fun@value{cedilha}@~ao} poly_reduction (@var{polilist}, @var{varlist})
@code{poly_reduction} reduz uma lista de polin@^{o}mios @var{polilist}, de forma que
cada poin@^{o}mio @'{e} completametne reduzido com rela@value{cedilha}@~{a}o a outros polin@^{o}mios.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_minimization (@var{polilist}, @var{varlist})
Retorna uma sublista da lista de polin@^{o}mios @var{polilist} gerando o mesmo
ideal de mon@^{o}mio que @var{polilist} mas minimo, i.e. nenhum mon@^{o}mio l@'{i}der
de um polin@^{o}mio na sublista divide o mon@^{o}mio l@'{i}der
de outro polin@^{o}mio.

@end deffn


@deffn {Fun@value{cedilha}@~ao} poly_normalize_list (@var{polilist}, @var{varlist})
@code{poly_normalize_list} aplica @code{poly_normalize} a cada polin@^{o}mio na lista.
Que significa que @code{poly_normalize_list} divide todo polin@^{o}mio em uma lista @var{polilist} por seu coeficiente l@'{i}der.

@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_grobner (@var{polilist}, @var{varlist})
Retorna uma base de Groebner do ideal gerado pelos polin@^{o}mios @var{polilist}. Afetado pelos sinalizadores globais.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_reduced_grobner (@var{polilist}, @var{varlist})
Retorna uma base de Groebner reduzida do ideal gerado pelos polin@^{o}mios @var{polilist}. Afetado pelos sinalizadores globais.
@end deffn


@deffn {Fun@value{cedilha}@~ao} poly_depends_p (@var{poli}, @var{var}, @var{varlist})
@code{poly_depends} testa se um polin@^{o}mio depende da vari@'{a}vel @var{var}.
@end deffn


@deffn {Fun@value{cedilha}@~ao} poly_elimination_ideal (@var{polilist}, @var{num}, @var{varlist})


@code{poly_elimination_ideal} retorna a base de grobner do @math{num}-@'{e}simo ideal de elimina@value{cedilha}@~{a}o de um
ideal especificado como uma lista de polin@^{o}mios geradores (n@~{a}o necess@'{a}riamente base de Groebner)
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_colon_ideal (@var{polilist1}, @var{polilist2}, @var{varlist})

Retorna a base reduzida de Groebner do ideal quociente 

@math{I(polilist1):I(polilist2)}

@noindent
onde @math{polilist1} e @math{polilist2} s@~{a}o duas listas de polin@^{o}mios.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_ideal_intersection (@var{polilist1}, @var{polilist2}, @var{varlist})

@code{poly_ideal_intersection} retorna a intersec@value{cedilha}@~{a}o entre dois ideais.
@end deffn


@deffn {Fun@value{cedilha}@~ao} poly_lcm (@var{poli1}, @var{poli2}, @var{varlist})
Retorna o m@'{i}nimo m@'{u}ltiplo comum entre @var{poli1} e @var{poli2}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_gcd (@var{poli1}, @var{poli2}, @var{varlist})
Retorna m@'{a}ximo divisor comum de @var{poli1} e @var{poli2}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_grobner_equal (@var{polilist1}, @var{polilist2}, @var{varlist})
@code{poly_grobner_equal} testa se duas bases de Groebner geram o mesmo ideal.
Retorna @code{true} se as duas listas de polin@^{o}mios @var{polilist1} e @var{polilist2}, assumidas serem bases de Groebner,
geram o mesmo ideal, e @code{false} de outra forma.
Isso @'{e} equivalente a verificar que todo polin@^{o}mio da primeira base @'{e} reduzido a 0
m@'{o}dulo a segunda base e vice-versa. Note que no exemplo abaixo a
primeira lista n@~{a}o @'{e} uma base de Groebner, e dessa forma o resultado @'{e} @code{false}.

@example
(%i1) poly_grobner_equal([y+x,x-y],[x,y],[x,y]);
(%o1)                         false
@end example

@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_grobner_subsetp (@var{polilist1}, @var{polilist2}, @var{varlist})

@code{poly_grobner_subsetp} testa se um ideal gerado pela @var{polilist1}
est@'{a} contido em um ideal gerado pela @var{polilist2}. Para esse teste sempre tenha sucesso,
@var{polilist2} deve ser uma base de Groebner.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_grobner_member (@var{poli}, @var{polilist}, @var{varlist})

Retorna @code{true} se um polin@^{o}mio @var{poli} pertence ao ideal gerado pela
lista polinomial @var{polilist}, que @'{e} assumida como sendouma base de Groebner. Retorna @code{false} de outra forma.

@code{poly_grobner_member} testa se um polin@^{o}mio pertence a um ideal gerado por uma lista de polin@^{o}mios,
que @'{e} assumida ser uma base de Groebner. Equivale a @code{normal_form} sendo 0. 
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_ideal_saturation1 (@var{polilist}, @var{poli}, @var{varlist})
Retorna abase de Groebner reduzida da satura@value{cedilha}@~{a}o do ideal
@iftex
@tex
$$I(polylist):poly^\infty$$
@end tex
@end iftex

@ifnottex
I(polylist):poly^inf
@end ifnottex

@noindent
Geometricamente, sobre um corpo algebricamente fechado, esse @'{e} um conjunto
de polinmios no ideal gerado por @var{polilist} que n@~{a}o tende identicamente a
zero sobre a varia@value{cedilha}@~{a}o de @var{poli}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_ideal_saturation (@var{polilist1}, @var{polilist2}, @var{varlist})
Retorna a base de Groebner reduzida da satura@value{cedilha}@~{a}o do ideal
@iftex
@tex
$$I(polylist1):I(polylist2)^\infty$$
@end tex
@end iftex

@ifnottex
I(polylist1):I(polylist2)^inf
@end ifnottex

@noindent
Geometricamente, sobre um corpo algebricamente fechado, esse @'{e} um conjunto
de polinmios no ideal gerado por @var{polilist1} que n@~{a}o tende identicamente a
zero sobre a varia@value{cedilha}@~{a}o de @var{polilist2}.

@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_ideal_polysaturation1 (@var{polilist1}, @var{polilist2}, @var{varlist})
@var{polilist2} ist a list of n polynomials @code{[poly1,...,polyn]}.
Retorna a base de Groebner reduzida do ideal
@iftex
@tex
$$I(polylist):poly1^\infty:...:polyn^\infty$$
@end tex
@end iftex

@ifnottex
I(polylist):poly1^inf:...:polyn^inf
@end ifnottex

@noindent
obtido por uma
seq@"{u}@^{e}ncia de sucessivas satura@value{cedilha}@~{o}es nos polin@^{o}mios
da lista  polin@^{o}mial @var{polilist2} do ideal gerado pela
lista polinomial @var{polilist1}.
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_ideal_polysaturation (@var{polilist}, @var{polilistlist}, @var{varlist})
@var{polilistlist} is a list of n list of polynomials @code{[polylist1,...,polylistn]}.
Retorna a base reduzida de Groebner da satura@value{cedilha}@~{a}o do ideal
@iftex
@tex
$$I(polylist):I(polylist_1)^\infty:...:I(polylist_n)^\infty$$
@end tex
@end iftex

@ifnottex
I(polylist):I(polylist_1)^inf:...:I(polylist_n)^inf
@end ifnottex
@end deffn

@deffn {Fun@value{cedilha}@~ao} poly_saturation_extension (@var{poli}, @var{polilist}, @var{varlist1}, @var{varlist2})

@code{poly_saturation_extension} implementa o famoso artif@'{i}cio de Rabinowitz.
@end deffn

