1885{
1886 int olddeg = 0;
1887 int reduc = 0;
1888 int red_result = 1;
1889 int hilbeledeg=1,hilbcount=0;
1893 {
1896 }
1897
1899
1905 else
1909
1910
1912 {
1918 }
1921
1922#ifdef HAVE_TAIL_RING
1926#endif
1927
1929 {
1931 }
1932
1933
1934
1935
1936 while (strat->
Ll >= 0)
1937 {
1938 #ifdef KDEBUG
1940 #endif
1942 {
1943 while (strat->
Ll >= 0)
1946 }
1948 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1949 {
1950
1951
1952
1953
1954
1955 while ((strat->
Ll >= 0)
1956 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1957 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1958 )
1959 {
1961
1962
1963
1964
1965 }
1966 if (strat->
Ll<0)
break;
1968 }
1969 strat->
P = strat->
L[strat->
Ll];
1972
1974 {
1975
1978 else
1982
1985 {
1987
1989 }
1990
1995 }
1996 else if (strat->
P.p1 ==
NULL)
1997 {
1998
2001 }
2002
2003
2004 if (!strat->
P.IsNull())
2005 {
2006
2008 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
2009
2010 red_result = strat->
red(&strat->
P,strat);
2011 }
2012
2013
2014 if (! strat->
P.IsNull())
2015 {
2017
2019
2021 strat->
P.pCleardenom();
2022 else
2024
2025 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
2026 if (strat->
P.p==
NULL)
2027 {
2028 WerrorS(
"exponent overflow - wrong ordering");
2030 }
2031
2034
2036
2037 if ((strat->
P.p->next==
NULL)
2039 strat->
P.pCleardenom();
2040
2041 strat->
P.SetShortExpVector();
2043
2046 else
2048
2050 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
2052
2054 {
2056 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
2057 else
2059 }
2060
2061
2063
2064#ifdef KDEBUG
2065
2067#endif
2068 }
2070 {
2073 {
2074
2075
2076
2077
2078
2079
2080
2081
2082
2084 }
2085 }
2087 }
2088
2091
2093
2095 {
2098 else
2100 }
2105
2106
2107
2108
2109
2110
2111
2112
2113
2119 return (strat->
Shdl);
2120}
KINLINE poly kNoetherTail()
long scMult0Int(ideal S, ideal Q)
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)