1860{
1861 int olddeg = 0;
1862 int reduc = 0;
1863 int red_result = 1;
1864 int hilbeledeg=1,hilbcount=0;
1868 {
1871 }
1872
1874
1880 else
1884
1885
1887 {
1889 }
1891 {
1895 }
1897 {
1903 }
1906
1907#ifdef HAVE_TAIL_RING
1911#endif
1912
1914 {
1916 }
1917
1918
1919
1920
1921 while (strat->
Ll >= 0)
1922 {
1923 #ifdef KDEBUG
1925 #endif
1927 {
1928 while (strat->
Ll >= 0)
1931 }
1933 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg))
1934 {
1935
1936
1937
1938
1939
1940 while ((strat->
Ll >= 0)
1941 && (strat->
L[strat->
Ll].p1!=
NULL) && (strat->
L[strat->
Ll].p2!=
NULL)
1942 && (strat->
L[strat->
Ll].ecart+strat->
L[strat->
Ll].GetpFDeg()>
Kstd1_deg)
1943 )
1944 {
1946
1947
1948
1949
1950 }
1951 if (strat->
Ll<0)
break;
1953 }
1954 strat->
P = strat->
L[strat->
Ll];
1957
1959 {
1960
1963 else
1967
1970 {
1972
1974 }
1975
1980 }
1981 else if (strat->
P.p1 ==
NULL)
1982 {
1983
1986 }
1987
1988
1989 if (!strat->
P.IsNull())
1990 {
1991
1993 message(strat->
P.ecart+strat->
P.GetpFDeg(),&olddeg,&reduc,strat, red_result);
1994
1995 red_result = strat->
red(&strat->
P,strat);
1996 }
1997
1998
1999 if (! strat->
P.IsNull())
2000 {
2002
2004
2006 strat->
P.pCleardenom();
2007 else
2009
2010 strat->
P.p =
redtail(&(strat->
P),strat->
sl,strat);
2011 if (strat->
P.p==
NULL)
2012 {
2013 WerrorS(
"expoent overflow - wrong ordering");
2015 }
2016
2019
2021
2022 if ((strat->
P.p->next==
NULL)
2024 strat->
P.pCleardenom();
2025
2027
2030 else
2032
2034 posInS(strat,strat->
sl,strat->
P.p, strat->
P.ecart),
2036
2038 {
2040 khCheck(
Q,
w,hilb,hilbeledeg,hilbcount,strat);
2041 else
2043 }
2044
2045
2047
2048#ifdef KDEBUG
2049
2051#endif
2052 }
2054 {
2057 {
2058
2059
2060
2061
2062
2063
2064
2065
2066
2068 }
2069 }
2071 }
2072
2075
2077
2079 {
2082 else
2084 }
2091
2092
2093
2094
2095
2096
2097
2098
2099
2105 return (strat->
Shdl);
2106}
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 firstUpdate(kStrategy strat)
void updateLHC(kStrategy strat)
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)