Difference between revisions of "Category:ApCoCoA-1:Package gbmr"

From ApCoCoAWiki
Line 1: Line 1:
Package gbmr is designed to enable us to do basic operations (addition, subtraction, multiplication, normal remainder, leading term, etc.) over Non-Commutative algebra, i.e. finitely presented monoid rings, compute (partial) Groebner bases of finitely generated (one-sided/two-sided) ideals, and experiment on applications of Groebner bases.
+
Package gbmr is designed to enable us to do basic operations (for instance addition, subtraction, multiplication, normal remainder, leading term, etc.) over Non-Commutative algebra, i.e. finitely presented monoid rings, compute (partial) Groebner bases of finitely generated (one-sided/two-sided) ideals, and experiment on applications of Groebner bases.
  
Generally, a finitely presented monoid ring is defined by <tt>P=K<X|R>=K<X>/<R></tt>, where <tt>K</tt> is a field, <tt>X</tt> is an alphabet or a finite set of letters, and <tt>R</tt> is a finite set of relations. If <tt>R</tt> is empty, then <tt>P</tt> becomes a free associative <tt>K</tt>-algebra.
+
Generally, a finitely presented monoid ring is defined by <tt>P=K<X|R>=K<X>/<R></tt>, where <tt>K</tt> is a field, <tt>X</tt> is a finite alphabet or a finite set of letters, and <tt>R</tt> is a finite set of relations. If <tt>R</tt> is empty, then <tt>P</tt> becomes a free associative <tt>K</tt>-algebra.
  
  
Line 15: Line 15:
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.SetFp(); and NC.SetFp(Prime);
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.SetFp(); and NC.SetFp(Prime);
  
where <tt>Prime</tt> should be a prime number, the prevouse one sets finite field to <tt>F(2)</tt> and the later to <tt>F(Prime)</tt>. And <tt>K</tt> can be reset to field of rational number through the function
+
where <tt>Prime</tt>is a prime number. The prevouse one sets finite field to <tt>F_{2}=Z/(2)</tt> and the later to <tt>F_{Prime}=Z/(Prime)</tt>. And <tt>K</tt> can be reset to field of rational number through the function
  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetFp();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetFp();
  
  
(c) <tt>X</tt> (or Alphabet) is represented as a STRING of letters. Every letter in <tt>X</tt> should occurrence only once. And the order of letters in <tt>X</tt> is important since it induces an admissible ordering indicated later. <tt>X</tt> can be set through the function
+
(c) <tt>X</tt> (or Alphabet) is represented as a STRING of letters. Every letter in <tt>X</tt> should have a unique occurrence. The order of letters in <tt>X</tt> is important since it induces an admissible ordering specified by Ordering. <tt>X</tt> can be set through the function
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.SetX(X)
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.SetX(X);
  
 
where <tt>X</tt> is a STRING of letters. And <tt>X</tt> can be reset to empty through the function
 
where <tt>X</tt> is a STRING of letters. And <tt>X</tt> can be reset to empty through the function
Line 28: Line 28:
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetX();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetX();
  
however, for the time being, I fail to find a proper situation to use it.
+
However I fail to find a proper situation to use it currently.
  
  
Line 46: Line 46:
 
(e) Relations, which is a finite generating set, is represented as a LIST of relations. Each relation of Relations is represented as a LIST (pair) composting of two words in <tt>X*</tt>.  
 
(e) Relations, which is a finite generating set, is represented as a LIST of relations. Each relation of Relations is represented as a LIST (pair) composting of two words in <tt>X*</tt>.  
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(d0) Each word in <tt>X*</tt> is represented as a STRING with all letters coming from <tt>X</tt>.   
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(e0) Each word (term) in <tt>X*</tt> is represented as a STRING with all letters coming from <tt>X</tt>.   
  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For example, X := "abc"; W := "ba"; means <tt>W=ba</tt>.  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For example, X := "abc"; W := "ba"; means <tt>W=ba</tt>.  
Line 62: Line 62:
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetRelations();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.UnsetRelations();
  
which might be very useful for forcing a ring to be a free associative <tt>K</tt>-algebra.
+
which might be a tricky way to change a monoid ring to a free associative <tt>K</tt>-algebra.
  
  
 
(f) Rules, which is also a finite generating set, is represented as a LIST of (rewriting) rules. Each rule of Rules is represented as a LIST (pair) consisting of one word in <tt>X*</tt> and one polynomial in <tt>K<X|R></tt>.
 
(f) Rules, which is also a finite generating set, is represented as a LIST of (rewriting) rules. Each rule of Rules is represented as a LIST (pair) consisting of one word in <tt>X*</tt> and one polynomial in <tt>K<X|R></tt>.
  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(e0) Each polynomial in <tt>K<X|R></tt> is represented as a LIST of monomials. Each monomial of polynomial is represented as a LIST (pair) consisting of one coefficient in <tt>K</tt> and one word (term) in <tt>X*</tt>.  
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(f0) Each polynomial in <tt>K<X|R></tt> is represented as a LIST of monomials, and each monomial is represented as a LIST (pair) consisting of one coefficient in <tt>K</tt> and one word (term) in <tt>X*</tt>.  
  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For example, X := "abc"; P := [[1,"ab"], [1,""]]; means <tt>P=ab+1</tt>.  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For example, X := "abc"; P := [[1,"ab"], [1,""]]; means <tt>P=ab+1</tt>.  
Line 84: Line 84:
  
  
(g) There is a function to get general information about ring.
+
(g) There is a function to get general information about ring environment.
  
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.RingEnv();
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NC.RingEnv();

Revision as of 12:42, 17 July 2010

Package gbmr is designed to enable us to do basic operations (for instance addition, subtraction, multiplication, normal remainder, leading term, etc.) over Non-Commutative algebra, i.e. finitely presented monoid rings, compute (partial) Groebner bases of finitely generated (one-sided/two-sided) ideals, and experiment on applications of Groebner bases.

Generally, a finitely presented monoid ring is defined by P=K<X|R>=K<X>/<R>, where K is a field, X is a finite alphabet or a finite set of letters, and R is a finite set of relations. If R is empty, then P becomes a free associative K-algebra.


Things to know about this package.

(a) Predefined alias for this package is

             Alias NC := $apcocoa/gbmr;


(b) K is field of rational number Q by default. It can be set to a finite field Fp through the functions

             NC.SetFp(); and NC.SetFp(Prime);

where Primeis a prime number. The prevouse one sets finite field to F_{2}=Z/(2) and the later to F_{Prime}=Z/(Prime). And K can be reset to field of rational number through the function

             NC.UnsetFp();


(c) X (or Alphabet) is represented as a STRING of letters. Every letter in X should have a unique occurrence. The order of letters in X is important since it induces an admissible ordering specified by Ordering. X can be set through the function

             NC.SetX(X);

where X is a STRING of letters. And X can be reset to empty through the function

             NC.UnsetX();

However I fail to find a proper situation to use it currently.


(d) Ordering is a STRING indicating which ordering we are working with. In the package we use admissible orderings. Currently, the package only supports length-lexicographic ordering ("LLEX") and elimination ordering ("ELIM") induced from the order of letters in X. The default ordering is "LLEX".

For example, X:="abc"; Ordering:="ELIM"; means elimination ordering induced from a>b>c.

Ordering can be set through the function

             NC.SetOrdering(Ordering);

where Ordering is the ordering supported by the package. And Ordering can be reset to "LLEX" through the function

             NC.UnsetOrdering();


(e) Relations, which is a finite generating set, is represented as a LIST of relations. Each relation of Relations is represented as a LIST (pair) composting of two words in X*.

      (e0) Each word (term) in X* is represented as a STRING with all letters coming from X.

      For example, X := "abc"; W := "ba"; means W=ba.

      Note that unit in X* is empty word represented as an empty STRING "".

For example, X := "abc"; Relations := [["ba","ab"], ["ca","ac"], ["cb","bc"]]; means Relations generated by {ba=ab, ca=ac, cb=bc}.

Relations can be set through the function

             NC.SetRelations(Relations);

where Relations is a properly represented Relations. And Relations can be reset to empty through the function

             NC.UnsetRelations();

which might be a tricky way to change a monoid ring to a free associative K-algebra.


(f) Rules, which is also a finite generating set, is represented as a LIST of (rewriting) rules. Each rule of Rules is represented as a LIST (pair) consisting of one word in X* and one polynomial in K<X|R>.

      (f0) Each polynomial in K<X|R> is represented as a LIST of monomials, and each monomial is represented as a LIST (pair) consisting of one coefficient in K and one word (term) in X*.

      For example, X := "abc"; P := [[1,"ab"], [1,""]]; means P=ab+1.

      Note that 0 polynomial is represented as an empty LIST [].

For example, X := "ab"; Rules := [["ba", [[1,"ab"], [1,""]]]]; means Rules generated by {ba=ab+1}.

Rules can be set through the function

             NC.SetRules(Rules);

where Rules is a properly represented Rules. And Rules can be reset to empty through the function

             NC.UnsetRules();


(g) There is a function to get general information about ring environment.

             NC.RingEnv();


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.