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