1881{
1882 int olddeg = 0;
1883 int reduc = 0;
1884 int red_result = 1;
1885 int hilbeledeg=1,hilbcount=0;
1889 {
1892 }
1893
1895
1901 else
1905
1906
1908 {
1914 }
1917
1918#ifdef HAVE_TAIL_RING
1922#endif
1923
1925 {
1927 }
1928
1929
1930
1931
1932 while (strat->
Ll >= 0)
1933 {
1934 #ifdef KDEBUG
1936 #endif
1938 {
1939 while (strat->
Ll >= 0)
1942 }
1944 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1945 {
1946
1947
1948
1949
1950
1951 while ((strat->
Ll >= 0)
1952 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1953 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1954 )
1955 {
1957
1958
1959
1960
1961 }
1962 if (strat->
Ll<0)
break;
1964 }
1965 strat->
P = strat->
L[strat->
Ll];
1968
1970 {
1971
1974 else
1978
1981 {
1983
1985 }
1986
1992 }
1993 else if (strat->
P.p1 ==
NULL)
1994 {
1995
1998 }
1999
2000
2001 if (!strat->
P.IsNull())
2002 {
2003
2005 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
2006
2007 red_result = strat->
red(&strat->
P,strat);
2008 }
2009
2010
2011 if (! strat->
P.IsNull())
2012 {
2014
2016
2018 strat->
P.pCleardenom();
2019 else
2021
2022 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
2023 if (strat->
P.p==
NULL)
2024 {
2025 WerrorS(
"exponent overflow - wrong ordering");
2027 }
2028
2031
2033
2034 if ((strat->
P.p->next==
NULL)
2036 strat->
P.pCleardenom();
2037
2038 strat->
P.SetShortExpVector();
2040
2043 else
2045
2047 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
2049
2051 {
2053 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
2054 else
2056 }
2057
2058
2060
2061#ifdef KDEBUG
2062
2064#endif
2065 }
2067 {
2070 {
2071
2072
2073
2074
2075
2076
2077
2078
2079
2081 }
2082 }
2084 }
2085
2088
2090
2092 {
2095 else
2097 }
2100
2101
2102
2103
2104
2105
2106
2107
2108
2114 return (strat->
Shdl);
2115}
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)