Difference between revisions of "ApCoCoA-1:NC.GB"

From ApCoCoAWiki
Line 2: Line 2:
 
<title>NC.GB</title>
 
<title>NC.GB</title>
 
<short_description>
 
<short_description>
Computes a (partial) two-sided Groebner basis of finitely generated ideal (using Buchberger's procedure) over a free associative <tt>K</tt>-algebra.
+
(Partial) Groebner basis of a finitely generated two-sided ideal over a free associative <tt>K</tt>-algebra.
 
</short_description>
 
</short_description>
 
<syntax>
 
<syntax>
NC.GB(Polynomials:LIST):LIST
+
NC.GB(G:LIST):LIST
NC.GB(Polynomials:LIST, DegreeBound:INT, LoopBound:INT, Flag:INT):LIST
+
NC.GB(G:LIST, DegreeBound:INT, LoopBound:INT, Flag:INT):LIST
 
</syntax>
 
</syntax>
 
<description>
 
<description>
 
<em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them.
 
<em>Please note:</em> The function(s) explained on this page is/are using the <em>ApCoCoAServer</em>. You will have to start the ApCoCoAServer in order to use it/them.
 
<par/>
 
<par/>
Before calling the function, please set ring environment coefficient field <tt>K</tt>, alphabet <tt>X</tt> and ordering through the functions <ref>NC.SetFp</ref>(Prime) (or <ref>NC.UnsetFp</ref>()), <ref>NC.SetX</ref>(X) and <ref>NC.SetOrdering</ref>(Ordering) respectively. Default coefficient field is <tt>Q</tt>. Default ordering is length-lexicographic ordering (<quotes>LLEX</quotes>). For more information, please check the relevant functions.
+
Please set ring environment coefficient field <tt>K</tt>, alphabet (or indeterminates) <tt>X</tt> and ordering through the functions <ref>NC.SetFp</ref>(Prime), <ref>NC.SetX</ref>(X) and <ref>NC.SetOrdering</ref>(Ordering), respectively, before calling the function. Default coefficient field is <tt>Q</tt>. Default ordering is length-lexicographic ordering (<quotes>LLEX</quotes>). For more information, please check the relevant functions.
 
<itemize>
 
<itemize>
<item>@param <em>Polynomials</em>: a list of polynomials generating a two-sided ideal in <tt>K&lt;X&gt;</tt>. Each polynomial in <tt>K&lt;X&gt;</tt> is represented as a LIST of LISTs, which are pairs of form <tt>[c, w]</tt> where c is in <tt>K</tt> and w is a word in <tt>X*</tt>.  Unit in <tt>X*</tt> is empty word represented as an empty string <quotes></quotes>. <tt>0</tt> polynomial is represented as an empty list. For example, polynomial <tt>F:=xy-y+1</tt> in <tt>K&lt;x,y&gt;</tt> is represented as F:=[[1,<quotes>xy</quotes>], [-1, <quotes>y</quotes>], [1,<quotes></quotes>]].</item>
+
<item>@param <em>G</em>: a LIST of non-zero polynomials generating a two-sided ideal. Each polynomial is represented as a LIST of LISTs, which are pairs of form [C, W] where C is a coefficient and W is a word (or term). Each term is represented as a STRING. For example, <tt>xy^2x</tt> is represented as <quotes>xyyx</quotes>, unit is represented as an empty string <quotes></quotes>. Then, polynomial <tt>F=xy-y+1</tt> is represented as F:=[[1,<quotes>xy</quotes>], [-1, <quotes>y</quotes>], [1,<quotes></quotes>]]. <tt>0</tt> polynomial is represented as an empty LIST [].</item>
<item>@return: a list of polynomials, which is a reduced Groebner basis if a finite Groebner basis exists or a interreduced partial Groebner basis.</item>
 
 
</itemize>
 
</itemize>
About the optional parameters: For most cases we do not know whether there exists a finite Groebner basis. Instead 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.
+
About the optional parameters: For most cases we do not know whether there exists a finite Groebner basis. Instead of forcing computer yelling and informing nothing valuable, the function has 3 optional parameters to control the computation. Note that at the moment <em>all</em> of the following 3 additional optional parameters must be used at the same time.
 
<itemize>
 
<itemize>
<item>@param <em>DegreeBound:</em> (optional) a positive integer which gives a limitation on the degree of polynomials during Buchberger's procedure. When the degree of normal remainder of some <tt>S-element</tt> reaches <tt>DegreeBound</tt>, the function finishes the loop and returns a interreduced partial Groebner basis.</item>
+
<item>@param <em>DegreeBound:</em> a positive integer which gives a degree bound during Groebner basis computation. When the degree of normal remainder of some <tt>S-element</tt> reaches DegreeBound, the function stops the loop and returns a partial Groebner basis.</item>
<item>@param <em>LoopBound:</em> (optional) a positive integer which gives a limitation on the loop of Buchberger's procedure. When it runs through the main loop <tt>LoopBound</tt> times, the function stops the loop and returns a interreduced partial Groebner basis.</item>
+
<item>@param <em>LoopBound:</em> a positive integer which gives a bound for the main loop of Groebner basis computation. When it runs through the main loop LoopBound times, the function stops the loop and returns a partial Groebner basis.</item>
<item>@param <em>Flag:</em> (optional) a positive integer 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 current partial Groebner basis before each loop as well. Note that the initial idea is to use <tt>Flag</tt> as a tool for debugging and tracing the computing process.</item>
+
<item>@param <em>Flag:</em> a non-negative integer 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 additionally prints current partial Groebner basis before each loop as well as the information when Flag=1. Note that the initial idea of Flag is to use it as a tool for debugging and tracing the computing process.</item>
 +
<item>@return: a LIST of polynomials, which is a Groebner basis if (1)finite Groebner basis exists and (2)the computation doesn't stop due to reach DegreeBound or LoopBound, and is a partial Groebner basis otherwise.</item>
 
</itemize>
 
</itemize>
 
<example>
 
<example>

Revision as of 19:59, 11 December 2010

NC.GB

(Partial) Groebner basis of a finitely generated two-sided ideal over a free associative K-algebra.

Syntax

NC.GB(G:LIST):LIST
NC.GB(G:LIST, DegreeBound:INT, LoopBound:INT, Flag:INT):LIST

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.

Please set ring environment coefficient field K, alphabet (or indeterminates) X and ordering through the functions NC.SetFp(Prime), NC.SetX(X) and NC.SetOrdering(Ordering), respectively, before calling the function. Default coefficient field is Q. Default ordering is length-lexicographic ordering ("LLEX"). For more information, please check the relevant functions.

  • @param G: a LIST of non-zero polynomials generating a two-sided ideal. Each polynomial is represented as a LIST of LISTs, which are pairs of form [C, W] where C is a coefficient and W is a word (or term). Each term is represented as a STRING. For example, xy^2x is represented as "xyyx", unit is represented as an empty string "". Then, polynomial F=xy-y+1 is represented as F:=[[1,"xy"], [-1, "y"], [1,""]]. 0 polynomial is represented as an empty LIST [].

About the optional parameters: For most cases we do not know whether there exists a finite Groebner basis. Instead 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: a positive integer which gives a degree bound during Groebner basis computation. When the degree of normal remainder of some S-element reaches DegreeBound, the function stops the loop and returns a partial Groebner basis.

  • @param LoopBound: a positive integer which gives a bound for the main loop of Groebner basis computation. When it runs through the main loop LoopBound times, the function stops the loop and returns a partial Groebner basis.

  • @param Flag: a non-negative integer 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 additionally prints current partial Groebner basis before each loop as well as the information when Flag=1. Note that the initial idea of Flag is to use it as a tool for debugging and tracing the computing process.

  • @return: a LIST of polynomials, which is a Groebner basis if (1)finite Groebner basis exists and (2)the computation doesn't stop due to reach DegreeBound or LoopBound, and is a partial Groebner basis otherwise.

Example

NC.SetX(<quotes>xyzt</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]; 
NC.GB(Generators); -- over Q (default field), LLEX ordering (default ordering)
[[[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>]], 
[[1, <quotes>ttyy</quotes>], [-1, <quotes>ttty</quotes>]], [[1, <quotes>tyyx</quotes>], [-1, <quotes>ttyx</quotes>]]]
-------------------------------
NC.SetFp(); -- set default Fp=F2
NC.GB(Generators); -- over F2, LLEX ordering
[[[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>]], 
[[1, <quotes>ttyy</quotes>], [1, <quotes>ttty</quotes>]], [[1, <quotes>tyyx</quotes>], [1, <quotes>ttyx</quotes>]]]
-------------------------------
NC.SetFp(3);
NC.GB(Generators); -- over F3, LLEX ordering
[[[1, <quotes>yt</quotes>], [2, <quotes>ty</quotes>]], [[1, <quotes>xt</quotes>], [2, <quotes>tx</quotes>]], [[1, <quotes>xy</quotes>], [2, <quotes>ty</quotes>]], 
[[1, <quotes>xx</quotes>], [2, <quotes>yx</quotes>]], [[1, <quotes>tyy</quotes>], [2, <quotes>tty</quotes>]], [[1, <quotes>yyx</quotes>], [2, <quotes>tyx</quotes>]], 
[[1, <quotes>ttyy</quotes>], [2, <quotes>ttty</quotes>]], [[1, <quotes>tyyx</quotes>], [2, <quotes>ttyx</quotes>]]]
-------------------------------

See also

NC.Add

NC.BP

NC.Deg

NC.FindPolynomials

NC.Intersection

NC.IsGB

NC.KernelOfHomomorphism

NC.LC

NC.LT

NC.LTIdeal

NC.MRAdd

NC.MRBP

NC.MRIntersection

NC.MRKernelOfHomomorphism

NC.MRMinimalPolynomials

NC.MRMultiply

NC.MRReducedBP

NC.MRSubtract

NC.MinimalPolynomial

NC.Multiply

NC.NR

NC.ReducedBP

NC.ReducedGB

NC.SetFp

NC.SetOrdering

NC.SetRelations

NC.SetRules

NC.SetX

NC.Subtract

NC.UnsetFp

NC.UnsetOrdering

NC.UnsetRelations

NC.UnsetRules

NC.UnsetX

Introduction to CoCoAServer