=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/gb.c,v retrieving revision 1.6 retrieving revision 1.8 diff -u -p -r1.6 -r1.8 --- OpenXM/src/kan96xx/Kan/gb.c 2002/02/10 08:22:56 1.6 +++ OpenXM/src/kan96xx/Kan/gb.c 2003/08/19 08:02:09 1.8 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.5 2001/05/04 01:06:23 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.7 2003/07/30 09:00:52 takayama Exp $ */ /* untabify on May 4, 2001 */ #include #include "datatype.h" @@ -23,6 +23,8 @@ extern int UseCriterion2B; extern int Spairs; extern int Criterion2B, Criterion2F, Criterion2M; extern int AutoReduce; +extern int TraceLift; +extern struct ring *TraceLift_ringmod; static int MaxLength[DMAX]; static int SpNumber[DMAX]; @@ -192,6 +194,7 @@ struct gradedPolySet *groebner_gen(f,needBack,needSyz, extern struct ring *CurrentRingp; extern char *F_mpMult; struct ring *rp; + int first; int statisticsPL, statisticsCount; if (Statistics) { @@ -216,9 +219,15 @@ struct gradedPolySet *groebner_gen(f,needBack,needSyz, g->polys[i] = newPolySet(INITSIZE); } + first = 1; for (i=0; im->ringp; } + if (TraceLift && (!(gt ISZERO)) && first) { + TraceLift_ringmod = newRingOverFp(rp,getPrime(TraceLift)); first = 0; + if (KanGBmessage) printf("Prime number for the trace lift is %d.\n", + TraceLift_ringmod->p); + } grade = -1; whereInG(g,gt,&grade,&indx,Sugar); if (KanGBmessage == 2) { printf("init=%s, ",POLYToString(head(gt),'*',1)); @@ -236,7 +245,8 @@ struct gradedPolySet *groebner_gen(f,needBack,needSyz, g = putPolyInG(g,gt,grade,indx,syzp,1,serial); } - markRedundant0(g,grade,indx); + /* markRedundant0(g,grade,indx); ?*/ + markGeneratorInG(g,grade,indx); /*?*/ if (Debug) { outputGradedPairs(d); outputGradedPolySet(g,needSyz); } @@ -249,6 +259,12 @@ struct gradedPolySet *groebner_gen(f,needBack,needSyz, while ((top = getPair(d)) != (struct pair *)NULL) { ig = top->ig; ii = top->ii; /* [ig,ii] */ jg = top->jg; ji = top->ji; /* [jg,ji] */ + /* + if (g->polys[ig]->del[ii] || g->polys[jg]->del[ji]) { + if (KanGBmessage) printf("p"); + continue; + } Don't do this. + */ gi = g->polys[ig]->g[ii]; gj = g->polys[jg]->g[ji];