1873{
1874 int olddeg = 0;
1875 int reduc = 0;
1876 int red_result = 1;
1877 int hilbeledeg=1,hilbcount=0;
1881 {
1884 }
1885
1887
1893 else
1897
1898
1900 {
1906 }
1909
1910#ifdef HAVE_TAIL_RING
1914#endif
1915
1917 {
1919 }
1920
1921
1922
1923
1924 while (strat->
Ll >= 0)
1925 {
1926 #ifdef KDEBUG
1928 #endif
1930 {
1931 while (strat->
Ll >= 0)
1934 }
1936 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1937 {
1938
1939
1940
1941
1942
1943 while ((strat->
Ll >= 0)
1944 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1945 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1946 )
1947 {
1949
1950
1951
1952
1953 }
1954 if (strat->
Ll<0)
break;
1956 }
1957 strat->
P = strat->
L[strat->
Ll];
1960
1962 {
1963
1966 else
1970
1973 {
1975
1977 }
1978
1983 }
1984 else if (strat->
P.p1 ==
NULL)
1985 {
1986
1989 }
1990
1991
1992 if (!strat->
P.IsNull())
1993 {
1994
1996 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1997
1998 red_result = strat->
red(&strat->
P,strat);
1999 }
2000
2001
2002 if (! strat->
P.IsNull())
2003 {
2005
2007
2009 strat->
P.pCleardenom();
2010 else
2012
2013 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
2014 if (strat->
P.p==
NULL)
2015 {
2016 WerrorS(
"exponent overflow - wrong ordering");
2018 }
2019
2022
2024
2025 if ((strat->
P.p->next==
NULL)
2027 strat->
P.pCleardenom();
2028
2029 strat->
P.SetShortExpVector();
2031
2034 else
2036
2038 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
2040
2042 {
2044 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
2045 else
2047 }
2048
2049
2051
2052#ifdef KDEBUG
2053
2055#endif
2056 }
2058 {
2061 {
2062
2063
2064
2065
2066
2067
2068
2069
2070
2072 }
2073 }
2075 }
2076
2079
2081
2083 {
2086 else
2088 }
2093
2094
2095
2096
2097
2098
2099
2100
2101
2107 return (strat->
Shdl);
2108}
KINLINE poly kNoetherTail()
int scMult0Int(ideal S, ideal Q, const ring tailRing)
void khCheckLocInhom(ideal Q, intvec *w, intvec *hilb, int &count, kStrategy strat)
void khCheck(ideal Q, intvec *w, intvec *hilb, int &eledeg, int &count, kStrategy strat)
void ksCreateSpoly(LObject *Pair, poly spNoether, int use_buckets, ring tailRing, poly m1, poly m2, TObject **R)
void missingAxis(int *last, kStrategy strat)
void reorderL(kStrategy strat)
int posInL10(const LSet set, const int length, LObject *p, const kStrategy strat)
static BOOLEAN kMoraUseBucket(kStrategy strat)
void updateL(kStrategy strat)
void message(int i, int *reduc, int *olddeg, kStrategy strat, int red_result)
void initBuchMora(ideal F, ideal Q, kStrategy strat)
BOOLEAN kTest_TS(kStrategy strat)
void enterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
void initHilbCrit(ideal, ideal, intvec **hilb, kStrategy strat)
BOOLEAN kStratChangeTailRing(kStrategy strat, LObject *L, TObject *T, unsigned long expbound)
void exitBuchMora(kStrategy strat)
int posInS(const kStrategy strat, const int length, const poly p, const int ecart_p)
BOOLEAN kCheckSpolyCreation(LObject *L, kStrategy strat, poly &m1, poly &m2)
void updateResult(ideal r, ideal Q, kStrategy strat)
void superenterpairs(poly h, int k, int ecart, int pos, kStrategy strat, int atR)
void deleteInL(LSet set, int *length, int j, kStrategy strat)
void kStratInitChangeTailRing(kStrategy strat)
void messageSets(kStrategy strat)
void messageStat(int hilbcount, kStrategy strat)
void finalReduceByMon(kStrategy strat)
used for GB over ZZ: final reduction by constant elements background: any known constant element of i...
void cancelunit(LObject *L, BOOLEAN inNF)
static void kDeleteLcm(LObject *P)
#define TEST_OPT_MULTBOUND
BOOLEAN rHasMixedOrdering(const ring r)