searches for reducers of temp similar to the symbolic preprocessing of F4 and divides them into a "good" and "bad" part:
the "good" ones are the reducers which do not corrupt the label of temp, with these the normal form of temp is computed
the "bad" ones are the reducers which corrupt the label of temp, they are tested
searches for reducers of temp similar to the symbolic preprocessing of F4 and divides them into a "good" and "bad" part:
the "good" ones are the reducers which do not corrupt the label of temp, with these the normal form of temp is computed
the "bad" ones are the reducers which corrupt the label of temp, they are tested
1203 int canonicalize = 0;
1211 number nOne =
nInit(1);
1214 poly tempPoly =
pInit();
1215 poly redPoly =
NULL;
1216 int idx =
l->getIndex();
1219 tempPoly =
pCopy(
l->getPoly());
1230 while(
NULL != tempPoly) {
1233 while(
NULL != tempRed) {
1237 u = pMDivideM(tempPoly,tempRed->
getPoly());
1244 poly tempRedPoly = tempRed->
getPoly();
1248 int lTempRedPoly =
pLength(tempRedPoly);
1253 if(!(canonicalize % 50)) {
1259 if(
NULL != tempPoly) {
1283 if(
NULL == redPoly) {
1291 poly tempRedPoly = tempRed->
getPoly();
1295 int lTempRedPoly =
pLength(tempRedPoly);
1303 if(!(canonicalize % 50)) {
1311 if(
NULL != tempPoly) {
1354 poly tempRedPoly = tempRed->
getPoly();
1358 int lTempRedPoly =
pLength(tempRedPoly);
1363 if(!(canonicalize % 50)) {
1369 if(
NULL != tempPoly) {
1382 if(
NULL != tempPoly) {
1385 while(
NULL != tempRed) {
1391 u = pMDivideM(tempPoly,tempRed->
getPoly());
1397 poly tempRedPoly = tempRed->
getPoly();
1401 int lTempRedPoly =
pLength(tempRedPoly);
1406 if(!(canonicalize % 50)) {
1412 if(
NULL != tempPoly) {
1436 if(
NULL == redPoly) {
1444 poly tempRedPoly = tempRed->
getPoly();
1448 int lTempRedPoly =
pLength(tempRedPoly);
1456 if(!(canonicalize % 50)) {
1464 if(
NULL != tempPoly) {
1510 if(
NULL != tempPoly) {
1511 if(
NULL == redPoly) {
1525 if(
NULL == redPoly) {
1531 PrintS(
"\nELEMENT ADDED TO GPREV: ");
1540 l->setPoly(redPoly);
1544 Print(
"redundant? %d\n\n",
l->getDel());
1545 if(addToG == 0 && termination == 1) {
1546 reducers->
insert(
l->getLPolyOld());
1549 gPrev->
insert(
l->getLPolyOld());
1552 if(termination == 1) {
1555 criticalPair(gPrev,critPairs,lTag,rTag,rules, rejectedGBList,plus);
1569 criticalPair(gPrev,critPairs,lTag,rTag,rules,rejectedGBList,plus);
1572 criticalPair2(gPrev,critPairs,lTag,rTag,rules, rejectedGBList);
1584 while(
NULL != tempBad) {
void criticalPair2(LList *gPrev, CListOld *critPairs, LTagList *lTag, RTagList *rTag, RList *rules, PList *rejectedGBList)
void kBucketClear(kBucket_pt bucket, poly *p, int *length)
void kBucket_Minus_m_Mult_p(kBucket_pt bucket, poly m, poly p, int *l, poly spNoether)
Bpoly == Bpoly - m*p; where m is a monom Does not destroy p and m assume (*l <= 0 || pLength(p) == *l...
void kBucketInit(kBucket_pt bucket, poly lm, int length)
poly kBucketExtractLm(kBucket_pt bucket)
kBucket_pt kBucketCreate(const ring bucket_ring)
Creation/Destruction of buckets.
const poly kBucketGetLm(kBucket_pt bucket)
int kBucketCanonicalize(kBucket_pt bucket)
Canonicalizes Bpoly, i.e. converts polys of buckets into one poly in one bucket: Returns number of bu...
static int pLength(poly a)
static poly p_Merge_q(poly p, poly q, const ring r)
#define pCopy(p)
return a copy of the poly