1 #ifndef KSTD1_H 2 #define KSTD1_H 3 /**************************************** 4 * Computer Algebra System SINGULAR * 5 ****************************************/ 6 /* 7 * ABSTRACT 8 */ 9 #include "kernel/structs.h" 10 #include "polys/monomials/ring.h" 11 12 ideal mora (ideal F, ideal Q,intvec *w,intvec *hilb,kStrategy strat); 13 14 typedef BOOLEAN (*s_poly_proc_t)(kStrategy strat); 15 16 // lazy_reduce flags: can be combined by | 17 #define KSTD_NF_LAZY 1 18 // do only a reduction of the leading term 19 #define KSTD_NF_ECART 2 20 // only local: recude even with bad ecart 21 #define KSTD_NF_NONORM 4 22 // only global: avoid normalization, return a multiply of NF 23 24 poly kNF1(ideal F, ideal Q, poly q, kStrategy strat, int lazyReduce); 25 ideal kNF1 (ideal F,ideal Q,ideal q, kStrategy strat, int lazyReduce); 26 27 poly kNF (ideal F, ideal Q, poly p,int syzComp=0, int lazyReduce=0); 28 ideal kNF(ideal F, ideal Q, ideal p,int syzComp=0, int lazyReduce=0); 29 30 poly kNFBound (ideal F, ideal Q, poly p,int bound,int syzComp=0, int lazyReduce=0); 31 ideal kNFBound (ideal F, ideal Q, ideal p,int bound,int syzComp=0, int lazyReduce=0); 32 33 /// NOTE: this is just a wrapper which sets currRing for the actual kNF call 34 poly k_NF (ideal F, ideal Q, poly p,int syzComp, int lazyReduce, const ring _currRing); 35 ideal kSba(ideal F,ideal Q, tHomog h, intvec ** mw, int incremental=0, int arri=0, intvec *hilb=NULL, 36 int syzComp=0,int newIdeal=0, intvec *vw=NULL); 37 38 ideal kStd(ideal F, ideal Q, tHomog h, intvec ** mw,intvec *hilb=NULL, 39 int syzComp=0,int newIdeal=0, intvec *vw=NULL, s_poly_proc_t sp=NULL); 40 41 ideal kStdShift(ideal F, ideal Q, tHomog h,intvec ** mw, intvec *hilb=NULL, 42 int syzComp=0, int newIdeal=0, intvec *vw=NULL, BOOLEAN rightGB=FALSE); 43 44 ideal rightgb(ideal F, ideal Q); 45 46 /* the following global data are defined in kutil.cc */ 47 //extern int syzComp; 48 /*stop building pairs after that component --> ideals.cc, syz.cc */ 49 EXTERN_VAR int LazyPass,LazyDegree,Kstd1_mu,Kstd1_deg; 50 /*parameters for Lazy or global stops --> ipshell.cc, grammar.y*/ 51 EXTERN_VAR BITSET kOptions; 52 /*the known test options (a constant)*/ 53 EXTERN_VAR BITSET validOpts; 54 55 void initMora(ideal F,kStrategy strat); 56 57 ideal kInterRed (ideal F, ideal Q=NULL); 58 ideal kInterRedOld (ideal F, ideal Q=NULL); 59 long kModDeg(poly p, ring r = currRing); 60 long kHomModDeg(poly p, ring r = currRing); 61 62 ideal stdred(ideal F, ideal Q, tHomog h,intvec ** w); 63 64 ideal kMin_std(ideal F, ideal Q, tHomog h,intvec ** w, ideal &M, 65 intvec *hilb=NULL, int syzComp=0,int reduced=0); 66 67 BOOLEAN kVerify(ideal F,ideal Q); 68 69 EXTERN_VAR intvec * kModW; 70 EXTERN_VAR intvec * kHomW; 71 72 73 /* options: 74 0 prot 75 1 redSB 76 2 notBucket 77 3 notSugar 78 4 interrupt 79 5 sugarCrit 80 6 teach 81 7 cancel unit: obachman 11/00 tossed 82 8 morepairs: obachman 11/00: tossed 83 9 return SB (syz,quotient,intersect) 84 10 fastHC 85 11-19 sort in L/T 86 20 redBest: obachman 11/00 tossed 87 88 22 staircaseBound: in NF create a HC x1^degBound+1 89 23 multBound 90 24 degBound 91 25 no redTail(p)/redTail(s) 92 26 integer strategy 93 27 stop at HC (finiteDeterminacyTest) 94 28 infRedTail: ignore ecart in local redTail-calls 95 29 kStd + 1 new element 96 30 noRedSyz 97 31 weight 98 verbose:31 stop at certain weights 99 */ 100 101 #endif 102 103