Home Online Manual
Top
Back: lpVarBlockSize
Forward: lpGBPres2Poly
FastBack:
FastForward:
Up: freegb_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

7.10.4.4 lpDivision

Procedure from library freegb.lib (see freegb_lib).

Usage:
lpDivision(p,G); poly p, ideal G

Purpose:
compute a two-sided division with remainder of p wrt G; two-sided noncommutative analogue of the procedure division

Assume:
G = {g1,...,gN} is a Groebner basis, the original ring of the Letterplace ring has the name 'r' and no variable is called 'tag_i' for i in 1...N

Return:
list L

Note:
- L[1] is NF(p,I)
- L[2] is the list of expressions [i,l_(ij),r_(ij)] with \sum_(i,j) l_(ij) g_i r_(ij) = p - NF(p,I) - procedure lpGBPres2Poly, applied to L, reconstructs p

Example:
 
LIB "freegb.lib";
ring r = 0,(x,y),dp;
def R = freeAlgebra(r, 4); setring R;
ideal I = x*x + y*y - 1; // 2D sphere
ideal J = letplaceGBasis(I); // compute a Letterplace Groebner basis
J; // it is finite and nice
==> J[1]=x*x+y*y-1
==> J[2]=y*y*x-x*y*y
poly h = x*x*y-y*x*x+x*y;
lpDivision(h,J); // what means that the NF of h wrt J is x*y
==> [1]:
==>    x*y
==> [2]:
==>    [1]:
==>       [1]:
==>          1
==>       [2]:
==> 1
==>       [3]:
==>          y
==>    [2]:
==>       [1]:
==>          1
==>       [2]:
==>          -y
==>       [3]:
==>          1
h - lpNF(h,J); // and this poly has the folowing two-sided Groebner presentation:
==> -y*x*x+x*x*y
-y*J[1] + J[1]*y;
==> -y*x*x+x*x*y