# Difference between revisions of "Category:ApCoCoA-1:Package ncpoly"

(New page: Package ncpoly is designed to enable us to do basic computations in non-commutative polynomial rings (or free associative algebras), over the field of rational numbers <tt>Q</tt> or over f...) |
|||

Line 1: | Line 1: | ||

− | Package ncpoly is designed to enable us to do basic | + | Package ncpoly is designed to enable us to do <em>basic calculations</em> with polynomials in <em>non-commutative polynomial rings</em> (or <em>free associative algebras</em>), over the field of rational numbers <tt>Q</tt> or over finite fields <tt>Z/(p)</tt> where <tt>p</tt> is a prime. For instance, in the package, there are functions for addition of two (non-commutative) polynomials (via Add(F1,F2)), subtraction (via Sub(F1,F2)), multiplication (via Mul(F1,F2)), getting the leading word (via Lw(F)) and leading coefficient (via Lc(F)) of a non-zero polynomial, computing the normal remainder (via NR(F,G)) of a polynomial w.r.t a LIST of polynomials, interreducing (via Interreduction(G)) a LIST of polynomials, etc. Moreover, the package also contains functions for <em>Groebner basis computations</em>. For example, there are functions to check if a LIST of polynomials is a Groebner basis (via IsGB(G)), enumerate (reduced) (partial) Groebner bases (via GB(G[,Optimize,OFlag,DB,LB]) and RedGB(G[,Optimize,OFlag,DB,LB])), and compute truncated Groebner bases (via TruncatedGB(G[,Optimize,OFlag,DB])) of finitely generated (two-sided) ideals. Consequently, we can apply the package to many algebraic applications, i.e. to compute Macaulay basis (via MB(Gb)) and the values of Hilbert function (via HF(Gb)), compute generating systems for leading term ideals, kernel of <tt>K</tt>-algebra homomorphism, intersection of ideals, etc. |

− | + | <strong>Important issues about this package:</strong> | |

+ | (a) Predefined alias for this package is as follows. | ||

− | + | Alias NC := $apcocoa/ncpoly; | |

− | |||

− | + | (b) The very first step to use functions in this package is to set non-commutative polynomial ring environment via the command | |

+ | Use | ||

− | + | For instance, the following command | |

− | | + | Use QQ[x[1..2],y[1..2]]; |

− | + | sets the ring to be the non-commutative polynomial ring generated by <tt>{x[1],x[2],y[1],y[2]}</tt> over the rational numbers. Note that, for the time being, the package only supports non-commutative polynomial rings over the rational field <tt>QQ</tt> and finite fields <tt>ZZ/(p)</tt> where <tt>p</tt> is a prime. | |

− | |||

+ | (c) The word ordering is set via the function | ||

− | ( | + | NC.SetOrdering(Ordering) |

− | + | where the parameter <tt>Ordering</tt> is a STRING indicating which ordering we are working with. Note that word orderings are induced by the order of indeterminates. And, for the time being, the package supports the following word orderings, and among which "LLEX" is the default ordering. | |

− | + | (b1) "LLEX": the <em>length-lexicographic ordering</em> | |

− | ( | + | (b2) "ELIM": an <em>elimination ordering</em> |

− | | + | (b3) "LRLEX": the <em>length-reverse-lexicographic ordering</em> |

+ | |||

+ | (b4) "DEGREVLEX": the <em>degree-reverse-lexicographic ordering</em> | ||

− | + | For instance, the following commands | |

− | ( | + | Use ZZ/(2)[a,b,c,d]; |

− | | + | NC.SetOrdering("LLEX"); |

− | + | define the non-commutative polynomial ring generated by <tt>{a,b,c,d}</tt> over the binary field <tt>{0,1}</tt>, and set the word ordering to be the length-lexicographic ordering induced by <tt>a>b>c>d</tt>. | |

− | |||

+ | (d) One can use the function | ||

− | + | NC.RingEnv(); | |

− | + | to get basic information on the working polynomial ring. | |

− | |||

− | + | <strong>Representation of non-commutative polynomials in this package</strong> | |

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

[[Category:ApCoCoA_Manual]] | [[Category:ApCoCoA_Manual]] |

## Revision as of 12:25, 25 April 2013

Package ncpoly is designed to enable us to do *basic calculations* with polynomials in *non-commutative polynomial rings* (or *free associative algebras*), over the field of rational numbers `Q` or over finite fields `Z/(p)` where `p` is a prime. For instance, in the package, there are functions for addition of two (non-commutative) polynomials (via Add(F1,F2)), subtraction (via Sub(F1,F2)), multiplication (via Mul(F1,F2)), getting the leading word (via Lw(F)) and leading coefficient (via Lc(F)) of a non-zero polynomial, computing the normal remainder (via NR(F,G)) of a polynomial w.r.t a LIST of polynomials, interreducing (via Interreduction(G)) a LIST of polynomials, etc. Moreover, the package also contains functions for *Groebner basis computations*. For example, there are functions to check if a LIST of polynomials is a Groebner basis (via IsGB(G)), enumerate (reduced) (partial) Groebner bases (via GB(G[,Optimize,OFlag,DB,LB]) and RedGB(G[,Optimize,OFlag,DB,LB])), and compute truncated Groebner bases (via TruncatedGB(G[,Optimize,OFlag,DB])) of finitely generated (two-sided) ideals. Consequently, we can apply the package to many algebraic applications, i.e. to compute Macaulay basis (via MB(Gb)) and the values of Hilbert function (via HF(Gb)), compute generating systems for leading term ideals, kernel of `K`-algebra homomorphism, intersection of ideals, etc.

**Important issues about this package:**

(a) Predefined alias for this package is as follows.

Alias NC := $apcocoa/ncpoly;

(b) The very first step to use functions in this package is to set non-commutative polynomial ring environment via the command

Use

For instance, the following command

Use QQ[x[1..2],y[1..2]];

sets the ring to be the non-commutative polynomial ring generated by `{x[1],x[2],y[1],y[2]}` over the rational numbers. Note that, for the time being, the package only supports non-commutative polynomial rings over the rational field `QQ` and finite fields `ZZ/(p)` where `p` is a prime.

(c) The word ordering is set via the function

NC.SetOrdering(Ordering)

where the parameter `Ordering` is a STRING indicating which ordering we are working with. Note that word orderings are induced by the order of indeterminates. And, for the time being, the package supports the following word orderings, and among which "LLEX" is the default ordering.

(b1) "LLEX": the *length-lexicographic ordering*

(b2) "ELIM": an *elimination ordering*

(b3) "LRLEX": the *length-reverse-lexicographic ordering*

(b4) "DEGREVLEX": the *degree-reverse-lexicographic ordering*

For instance, the following commands

Use ZZ/(2)[a,b,c,d];

NC.SetOrdering("LLEX");

define the non-commutative polynomial ring generated by `{a,b,c,d}` over the binary field `{0,1}`, and set the word ordering to be the length-lexicographic ordering induced by `a>b>c>d`.

(d) One can use the function

NC.RingEnv();

to get basic information on the working polynomial ring.

**Representation of non-commutative polynomials in this package**

## Pages in category "ApCoCoA-1:Package ncpoly"

The following 24 pages are in this category, out of 24 total.

### N

- ApCoCoA-1:NC.Add
- ApCoCoA-1:NC.AdMatrix
- ApCoCoA-1:NC.CoCoALToC
- ApCoCoA-1:NC.CToCoCoAL
- ApCoCoA-1:NC.Deg
- ApCoCoA-1:NC.FindPolys
- ApCoCoA-1:NC.GB
- ApCoCoA-1:NC.HF
- ApCoCoA-1:NC.Interreduction
- ApCoCoA-1:NC.Intersection
- ApCoCoA-1:NC.IsFinite
- ApCoCoA-1:NC.IsGB
- ApCoCoA-1:NC.IsHomog
- ApCoCoA-1:NC.KernelOfHomomorphism
- ApCoCoA-1:NC.LC
- ApCoCoA-1:NC.LW
- ApCoCoA-1:NC.LWIdeal
- ApCoCoA-1:NC.MB
- ApCoCoA-1:NC.Mul
- ApCoCoA-1:NC.NR
- ApCoCoA-1:NC.RedGB
- ApCoCoA-1:NC.SetOrdering
- ApCoCoA-1:NC.Sub
- ApCoCoA-1:NC.TruncatedGB