2005-01-10: A list of the variables and settings that
may be used in order to get various statistics out of an
ordinary bergman run. The "user available procedures" are
intended to be programmed by the advanced user, for
whatever purpose (s)he may have.

For the setting of the CUSTDISPLAY submode of the
OUTPUTFORMAT modes, and the CUSTSTRATEGY submode of
the STRATEGY modes, see the mode handler. (But, what
about CUSTOMISED?)


A user available procedure may be called if a certain
customising submode is on, and it is defined. In this
case, it often is called from or instead of an `ordinary
internal procedure', supplanting its action. Below
follows brief descriptions, first noting submode
dependance(s) and supplanted procedure, then describing
the supplanted action, and finally giving intended use.
In the rare case where the procedures have arguments,
this is indicated with an argument list.

CUSTCLEARCDEGDISPLAY: CUSTDEGREE be set. Called
from, but not supplanting, CLEARCDEGREEGKINPUT.
May be used e.g. for calculating the numbers of discarded
input polynomials and obstructions.

CUSTCLEARCDEGOBSTRDISPLAY: CUSTDEGREE be set. Called
from, but not supplanting, CLEARCDEGREEOBSTRUCTIONS.
May be used e.g. for calculating the number of discarded
obstructions.

CUSTCRITPAIRTONEWGBE: CUSTSTRATEGY be set. Called from
and supplanting FindCritPairNGbe, which sets NGroeb to
the reduction of the S-polynomial formed from the
critical pair corresponding to the next obstruction, and
removes that critical pair, and returns NGroeb.

CUSTDISPLAYINIT: CUSTDISPLAY be set. Called from and
supplanting DisplayInit, which initiates the counters
NOOFSPOLCALCS and NOOFNILREDUCTIONS.
Intended to be used for initiating e.g. statistics.

CUSTENDDEGREECRITPAIRFIND: CUSTSTRATEGY be set. Called
from and supplanting DEnSPairs ("Degree-End new S-Pairs"),
which is called at the end of the search for new
Groebner basis elements at the current degree, searches
for obstructions involving these elements, and places
the corresponding critical pairs on the SPairs structure.

CUSTNEWCDEGFIX (binno): CUSTSTRATEGY be set. Called from
and supplanting FixNcDeg (binno). The argument is 1, 2,
or 3, interpreted as a 2-bit binary number, yielding
information on which of the current degree critical pair
list and the current degree input polynomial lists that
are empty. There are numerous possible return values;
the most important being:
<the current degree>, indicating "proceed as usual";
NIL, indicating "immediately return from GROEBNERKERNEL".

CUSTNEWINPUTGBEFIND: CUSTSTRATEGY be set. Called from
and supplanting FindInputNGbe, which sets NGroeb to
the reduction of the next input polynomial, and
removes that polynomial, and returns NGroeb.

DEGREEENDDISPLAY: CUSTDISPLAY be set. Called from
GROEBNERKERNEL at the end of calculations for the
current degree. Inhibits (mode setting conditional)
calls to TDEGREECALCULATEPBSERIES or DEGREEOUTPUT.
Intended to be used for customised degree-wise output;
including for deciding what kind of statistics the
user might want to have displayed at the end of a
degree calculations, or for just printing the
leading monomials of the new Groebner basis elements
(cf. DEGREELMOUTPUT).
WARNING: Re-defined by a few top-of-the-top procedures.

HSERIESMINCRITDISPLAY: CUSTDISPLAY and the interruption
strategy MINHILBLIMITS be set; called from, but not
supplanting, FixNGbe, when an actual suppression of
critical pair calculation could ensue from the numerical
limit being reached. Called before CLEARCDEGREEGKINPUT,
and therefore may be used e.g. in order to enumerate
the numbers of input polynomials and obstructions
discarded by the application of the minimal Hilbert series
coefficient condition.


There are a few `counter variables' accessible for the user
for statistical purposes:

NOOFSPOLCALCS: A counter, telling how many s-polynomials
have been calculated until now.

NOOFNILREDUCTIONS: A counter, telling how many times an
s-polynomial has ben reduced to 0 until now.

anBETTITIME, anDIFFTIME: Used internally in the anick
module for some statistical purposes. (Sanya might know
what and why ...)

---------------------------------------------------------

main.sl: CUSTDISPLAY, !*CUSTSHOW (call DEGREEENDDISPLAY, CUSTDISPLAYINIT);
    !*CUSTSTRATEGY (call CUSTNEWINPUTGBEFIND, CUSTCRITPAIRTONEWGBE,
	CUSTENDDEGREECRITPAIRFIND);
    CUSTDISPLAYINIT (supplants DisplayInit);
    CUSTNEWCDEGFIX, CUSTNEWINPUTGBEFIND, CUSTCRITPAIRTONEWGBE,
    CUSTENDDEGREECRITPAIRFIND.

modes.sl: CUSTNEWCDEGFIX, CUSTNEWINPUTGBEFIND, CUSTCRITPAIRTONEWGBE,
    CUSTENDDEGREECRITPAIRFIND, CUSTDISPLAYINIT, DEGREEENDDISPLAY,
    CUSTCLEARCDEGDISPLAY, CUSTCLEARCDEGOBSTRDISPLAY, HSERIESMINCRITDISPLAY;
    (S/G)ETCUSTDISPLAY, (S/G)ETCUSTSTRATEGY; CUSTOMISED.

strategy.sl: !*CUSTSHOW (call CUSTCLEARCDEGOBSTRDISPLAY, CUSTCLEARCDEGDISPLAY,
	HSERIESMINCRITDISPLAY);
    !*CUSTSTRATEGY (call CUSTNEWCDEGFIX);
    (CUSTNEWCDEGFIX binno), HSERIESMINCRITDISPLAY.

stg.sl: !*CUSTSHOW (call DEGREEENDDISPLAY).
