Difference between revisions of "ApCoCoA-1:NC.GB"
Line 2: | Line 2: | ||
<title>NC.GB</title> | <title>NC.GB</title> | ||
<short_description> | <short_description> | ||
− | Compute two-sided (partial) Groebner basis of finitely generated ideal. | + | Compute two-sided (partial) Groebner basis of finitely generated ideal by Buchberger's procedure. |
</short_description> | </short_description> | ||
<syntax> | <syntax> | ||
− | NC.GB(Polynomials:LIST[, DegreeBound:INT, LoopBound:INT, | + | NC.GB(Polynomials:LIST[, DegreeBound:INT, LoopBound:INT, Flag:INT]):BOOL |
</syntax> | </syntax> | ||
<description> | <description> | ||
Line 16: | Line 16: | ||
About the optional parameters. | About the optional parameters. | ||
<itemize> | <itemize> | ||
− | <item> | + | <item>For most of cases we don't know whether there exists a finite Groebner basis. In stead of forcing computer yelling and informing nothing valuable, the function has 3 optional parameters to control the computation. Note that at the moment all of the following 3 additional optional parameters must be used at the same time.</item> |
− | <item>@param <em>DegreeBound:</em> (optional) a natural number | + | <item>@param <em>DegreeBound:</em> (optional) a INT (natural number) which gives a limitation on the degree of polynomials. When the degree of normal remainder of some S-element reaches <tt>DegreeBound</tt>, the function stops and returns a partial Groebner basis.</item> |
− | <item>@param <em>LoopBound:</em> (optional) a natural number | + | <item>@param <em>LoopBound:</em> (optional) a INT (natural number) which gives a a limitation on the main loop of Buchberger's procedure. When the main loop runs <tt>LoopBound</tt> times, the function stops and returns a partial Groebner basis.</item> |
− | <item>@param <em> | + | <item>@param <em>Flag:</em> (optional) a INT (natural number) which is a multi-switch for the output of ApCoCoAServer. If <tt>Flag=0</tt>, the server prints nothing on the screen. If <tt>Flag=1</tt>, the server prints basic information about computing procedure, such as number of S-elements has been checked and to be checked. If <tt>Flag=2</tt>, the server prints partial Groebner basis before each loop as well. Note that the initial idea of <tt>Flag</tt> is to use it for debugging and tracing the computing process.</item> |
</itemize> | </itemize> | ||
<example> | <example> | ||
− | NC.SetX(<quotes> | + | NC.SetX(<quotes>xyzt</quotes>); |
NC.SetOrdering(<quotes>LLEX</quotes>); | NC.SetOrdering(<quotes>LLEX</quotes>); | ||
F1 := [[1,<quotes>xx</quotes>], [-1,<quotes>yx</quotes>]]; | F1 := [[1,<quotes>xx</quotes>], [-1,<quotes>yx</quotes>]]; | ||
Line 28: | Line 28: | ||
F3 := [[1,<quotes>xt</quotes>], [-1, <quotes>tx</quotes>]]; | F3 := [[1,<quotes>xt</quotes>], [-1, <quotes>tx</quotes>]]; | ||
F4 := [[1,<quotes>yt</quotes>], [-1, <quotes>ty</quotes>]]; | F4 := [[1,<quotes>yt</quotes>], [-1, <quotes>ty</quotes>]]; | ||
− | + | Generators := [F1, F2,F3,F4]; -- compute over Q | |
− | NC. | + | NC.GB(Generators); |
− | + | [[[1, <quotes>yt</quotes>], [-1, <quotes>ty</quotes>]], [[1, <quotes>xt</quotes>], [-1, <quotes>tx</quotes>]], [[1, <quotes>xy</quotes>], [-1, <quotes>ty</quotes>]], [[1, <quotes>xx</quotes>], [-1, <quotes>yx</quotes>]], [[1, <quotes>tyy</quotes>], [-1, <quotes>tty</quotes>]], [[1, <quotes>yyx</quotes>], [-1, <quotes>tyx</quotes>]]] | |
− | ------ | ||
− | |||
− | |||
− | |||
------------------------------- | ------------------------------- | ||
</example> | </example> |
Revision as of 13:17, 14 July 2010
NC.GB
Compute two-sided (partial) Groebner basis of finitely generated ideal by Buchberger's procedure.
Syntax
NC.GB(Polynomials:LIST[, DegreeBound:INT, LoopBound:INT, Flag:INT]):BOOL
Description
Please note: The function(s) explained on this page is/are using the ApCoCoAServer. You will have to start the ApCoCoAServer in order to use it/them.
Before calling the function, please set ring environment coefficient field (K), alphabet (X) and ordering through the functions NC.SetFp(Prime) (or NC.UnsetFp()), NC.SetX(X) and NC.SetOrdering(Ordering) respectively. Default coefficient field is Q. Default ordering is length-lexicographic ordering ("LLEX"). For more information, please check the relevant functions.
@param Polynomials: a LIST of polynomials generating a two-sided ideal in K<X>. Each polynomial in K<X> is represented as a LIST of LISTs, which are pairs of form [c, w] where c is in K and w is a word in X*. Unit in X* is empty word represented as an empty STRING "". 0 polynomial is represented as an empty LIST []. For example, polynomial F:=xy-y+1 in K<x,y> is represented as F:=[[1,"xy"], [-1, "y"], [1,""]].
@return: a LIST of polynomials, which is a Groebner basis if a finite Groebner basis exists or a partial Groebner basis.
About the optional parameters.
For most of cases we don't know whether there exists a finite Groebner basis. In stead of forcing computer yelling and informing nothing valuable, the function has 3 optional parameters to control the computation. Note that at the moment all of the following 3 additional optional parameters must be used at the same time.
@param DegreeBound: (optional) a INT (natural number) which gives a limitation on the degree of polynomials. When the degree of normal remainder of some S-element reaches DegreeBound, the function stops and returns a partial Groebner basis.
@param LoopBound: (optional) a INT (natural number) which gives a a limitation on the main loop of Buchberger's procedure. When the main loop runs LoopBound times, the function stops and returns a partial Groebner basis.
@param Flag: (optional) a INT (natural number) which is a multi-switch for the output of ApCoCoAServer. If Flag=0, the server prints nothing on the screen. If Flag=1, the server prints basic information about computing procedure, such as number of S-elements has been checked and to be checked. If Flag=2, the server prints partial Groebner basis before each loop as well. Note that the initial idea of Flag is to use it for debugging and tracing the computing process.
Example
NC.SetX(<quotes>xyzt</quotes>); NC.SetOrdering(<quotes>LLEX</quotes>); F1 := [[1,<quotes>xx</quotes>], [-1,<quotes>yx</quotes>]]; F2 := [[1,<quotes>xy</quotes>], [-1,<quotes>ty</quotes>]]; F3 := [[1,<quotes>xt</quotes>], [-1, <quotes>tx</quotes>]]; F4 := [[1,<quotes>yt</quotes>], [-1, <quotes>ty</quotes>]]; Generators := [F1, F2,F3,F4]; -- compute over Q NC.GB(Generators); [[[1, <quotes>yt</quotes>], [-1, <quotes>ty</quotes>]], [[1, <quotes>xt</quotes>], [-1, <quotes>tx</quotes>]], [[1, <quotes>xy</quotes>], [-1, <quotes>ty</quotes>]], [[1, <quotes>xx</quotes>], [-1, <quotes>yx</quotes>]], [[1, <quotes>tyy</quotes>], [-1, <quotes>tty</quotes>]], [[1, <quotes>yyx</quotes>], [-1, <quotes>tyx</quotes>]]] -------------------------------
See also