1889{
1890 int olddeg = 0;
1891 int reduc = 0;
1892 int red_result = 1;
1893 int hilbeledeg=1,hilbcount=0;
1897 {
1900 }
1901
1903
1909 else
1913
1914
1916 {
1922 }
1925
1926#ifdef HAVE_TAIL_RING
1930#endif
1931
1933 {
1935 }
1936
1937
1938
1939
1940 while (strat->
Ll >= 0)
1941 {
1942 #ifdef KDEBUG
1944 #endif
1946 {
1947 while (strat->
Ll >= 0)
1950 }
1952 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1953 {
1954
1955
1956
1957
1958
1959 while ((strat->
Ll >= 0)
1960 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1961 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1962 )
1963 {
1965
1966
1967
1968
1969 }
1970 if (strat->
Ll<0)
break;
1972 }
1973 strat->
P = strat->
L[strat->
Ll];
1976
1978 {
1979
1982 else
1986
1989 {
1991
1993 }
1994
1999 }
2000 else if (strat->
P.p1 ==
NULL)
2001 {
2002
2005 }
2006
2007
2008 if (!strat->
P.IsNull())
2009 {
2010
2012 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
2013
2014 red_result = strat->
red(&strat->
P,strat);
2015 }
2016
2017
2018 if (! strat->
P.IsNull())
2019 {
2021
2023
2025 strat->
P.pCleardenom();
2026 else
2028
2029 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
2030 if (strat->
P.p==
NULL)
2031 {
2032 WerrorS(
"exponent overflow - wrong ordering");
2034 }
2035
2038
2040
2041 if ((strat->
P.p->next==
NULL)
2043 strat->
P.pCleardenom();
2044
2045 strat->
P.SetShortExpVector();
2047
2050 else
2052
2054 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
2056
2058 {
2060 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
2061 else
2063 }
2064
2065
2067
2068#ifdef KDEBUG
2069
2071#endif
2072 }
2074 {
2077 {
2078
2079
2080
2081
2082
2083
2084
2085
2086
2088 }
2089 }
2091 }
2092
2095
2097
2099 {
2102 else
2104 }
2109
2110
2111
2112
2113
2114
2115
2116
2117
2123 return (strat->
Shdl);
2124}
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)