\section{References}


This section contains more formal, but more complete
description of the available procedures,
variables and flags.  Some of them were not mentioned above, so
the user is recommended to look through the this section even
if part of the information looks not so clear from the first
reading.

      \subsection {Sustained operating mode alternatives}\label{refm}

 In the right column, appropriate procedures or flags are named. The
procedures are described (in alphabetical orders) after the overview.
 

\index{polynomial ring} Polynomial ring set-up:

\vspace*{0.4cm}
  \begin{tabular}{|l|c|l|}
  \hline
  Modes & Default & Procedures\\
  \hline
          Commutative DEGREVLEX &+& \index{commify} \index{revlexify} COMMIFY()\\
                                 &+ & REVLEXIFY()  \\ \hline
        Commutative DEGLEX & &      \index{deglexify}      COMMIFY()\\
                              & & DEGLEXIFY()  \\ \hline
        Non-commutative & &         \index{noncommify}               NONCOMMIFY()\\
        \hline
  \end{tabular}
%\index{commify} \index{noncommify} \index{revlexify} \index{deglexify}
  \vspace*{0.5cm}

  Fundamental strategy: \index{strategy} \index{immediatefullreduction}

  \vspace*{0.3cm}

\begin{tabular}{|l|c|}
  \hline
  Strategy &  Procedures and Flags ON\\
  \hline      \hline
        Ordinary (Buchberger, Bergman) &  IMMEDIATEFULLREDUCTION\\
            with immediate              &   (by default)\\
            full   autoreduction       &  \\
  \hline
        Ordinary (Buchberger, Bergman) &    \\
            without immediate              &  \\
            full   autoreduction       &  \\
 % \hline
      %  Staggered with  &                 Various.\\
       %  substance (SAWS).   &  \\
 \hline
 \end{tabular}
 \vspace*{0.4cm}
  
  Coefficient arithmetic: \index{coefficients} \index{setmodulus}
  \index{nobignums} \index{modlogarithms} \index{setreducescoefficients} 

  \vspace*{0.4cm}
\begin{tabular}{|l|c|l|c|}
  \hline
  Modes & Df & Procedures& Flags ON\\
  \hline      \hline
         Characteristic 0,  & + & SETMODULUS(0) & \\
        arbitrary integers & & &\\
        \hline
        Characteristic 0,  & &    SETMODULUS(0)  &   NOBIGNUMS\\
        only inums & & &\\
        \hline
             Characteristic 2 &  &                       SETMODULUS(2)&\\
        \hline
        Odd characteristic & &  SETMODULUS(pr)  &\\
          ordinary inum  & & &           \\
        \hline
        Odd characteristic & &  SETMODULUS(pr) &\\
        ordinary bignum & & &\\
        \hline
        Odd characteristic & & SETMODULUS(pr) &  MODLOGARITHMS  \\
         logarithm table & & &\\
         inum arithmetic & & & \\
         \hline
        Arbitrary Reduce & &        SETREDUCES-&\\
Standard Forms & &FCOEFFS() &\\         only available & & &\\
 under REDUCE) & & &\\
 \hline
 \end{tabular}

  \vspace*{0.4cm}


 Minor mode modifications:
 \vspace*{0.3cm}

\begin{tabular}{|l|c|l|c|}
  \hline
  Mode & Df & Procedures \\
  \hline      \hline
        Densely  & + &
                         \index{densecontents}  DENSECONTENTS() \\
\hline
 sparsely performed & &    \index{sparsecontents} SPARSECONTENTS()\\
 factoring out      & & \\
  of contents       & & \\
   \hline
 \end{tabular}

 \vspace*{0.4cm}             
 Ordinary or Hilbert series limit interruption
  strategy:

 \vspace*{0.3cm}
\begin{tabular}{|l|c|l|c|}
  \hline
  Mode & Df & Procedures \\
        \hline
  Ordinary & + &   \index{ordngbestrategy}  ORDNGBESTRATEGY()\\
  Hilbert series & &  \index{minhilblimitstrategy}   MINHILBLIMITSTRATEGY()\\
                \hline
 \end{tabular}

 (or use SETINTERRUPTSTRATEGY)  \index{interrupt strategy} \index{setinterruptstrategy}

 \vspace*{0.4cm}

Output mode:

 \vspace*{0.3cm}
\begin{tabular}{|l|c|l|c|}
  \hline
  Mode & Df & ALGOUTMODE set \\
  \hline      \hline
        Lisp form     & + &    \index{Lisp form}              LISP\\
        Ordinary algebraic form & &  \index{algebraic form}        ALG \\
        Macaulay-like  form & &   \index{Macaulay form}         MACAULAY\\
               \hline
 \end{tabular}
 \vspace*{0.4cm}
%}%end of \center

    (The algebraic modes are depending on output variables being set.
     Variable settings act as mode settings. See above!)


 In general, modes should not be changed while a set up is in progress.
Therefore, mode changing procedure calls are only recommended early in
a {\bf bergman} run, or (almost) immediately after a call to the procedure
{\bf clearideal}. If the latter does not work well, restart {\bf bergman} and try the
former.

 The {\bf saws} mode is achieved by calling {\bf saws} alternative procedures (such
as {\bf stagsimple} instead of {\bf simple}).

 \subsection {The mode changing procedures}

{\bf \large Objects  handling:}

 \begin{description}

 \index{setobjecttype} \item [(SETOBJECTTYPE objecttype) : EXPR]

Sets the current object type ( e.g., RING, MODULE, TWOMODULES).

\index{getobjecttype} \item [(GETOBJECTTYPE) : EXPR]

Gets the current object type ( e.g., RING, MODULE, TWOMODULES).

\index{setringobject} \item [(SETRINGOBJECT) : EXPR]

Sets the current object type to RING.

\index{setmoduleobject} \item [(SETMODULEOBJECT) : EXPR]

Sets the current object type to MO\-DULE.

\index{settwomodulesobject} \item [(SETTWOMODULESOBJECT) : EXPR]

Sets the current object type to TWOMODULES.

\index{moduleobject} \item [(MODULEOBJECT) : EXPR]

A boolean procedure cheking if the current type is MODULE.


 \end{description}

{\bf \large Switching commutativity:}

 \begin{description}

 \index{setringtype} \item [(SETRINGTYPE ringtype) : FEXPR]

Sets the current ring type to the parameter {\it ringtype} value
(COMMUTATIVE or NONCOMMUTATIVE).

 \index{getringtype} \item [(GETRINGTYPE) : EXPR]

Gets the current ring type (COMMUTATIVE or NONCOMMUTATIVE).

 \index{commify} \item [(COMMIFY) : EXPR]
Turns on commutative mode.

 \index{noncommify} \item [(NONCOMMIFY) : EXPR]

Turns on non-commutative \\ mode. (It is automatically
performed by {\bf ncpbhgroebner,} {\bf rabbit} and a number of other 
procedures dealing with the Anick resolution. The procedures inter alia 
changes some flags, which should NOT be changed directly.)

 \end{description}

{\bf \large Orderings:}

\begin{description}

\index{deglexify} \item [(DEGLEXIFY) : EXPR]

Should only be used in the commutative mode. Sets the monoid order to
the TOTAL DEGREE -- LEXICOGRAPHICAL one. (In LISP form input, the
variable in first position is first used in order comparisons. In ALG
form input, the first "vars" listed variable is first used.)

\index{revlexify} \item [(DEGREVLEXIFY) : EXPR]

Should only be used in the commutative mode. Sets the monoid order to
the TOTAL DEGREE -- REVERSE LEXICOGRAPHICAL one. (In LISP form input, the
variable in last position is first used in order comparisons. In ALG
form input, the last "vars" listed variable is first used.)

\index{degleftlexify} \item [(DEGLEFTLEXIFY) : EXPR]

Should only be used in the non-commutative mode. Sets the monoid order to
the TOTAL DEGREE -- LEFT LEXICOGRAPHICAL one.

\index{purelexify} \item [(PURELEXIFY) : EXPR]

ONLY interesting in conjunction with homogenisation. Not to be used
in ordinary manner.

\index{elimorder} \item [(ELIMORDER) : EXPR]

Should only be used in the non-commutative mode.

\index{invelimorder} \item [(INVELIMORDER) : EXPR]

\index{homogelimorder} \item [(HOMOGELIMORDER) : EXPR]

\index{noelim} \item [(NOELIM) : EXPR]

\index{getorder} \item [(GETORDER) : EXPR]

\index{setcommorder} \item [(SETCOMMORDER order)  : FEXPR]

\index{getcommorder} \item [(GETCOMMORDER)  : EXPR]

\index{setnoncommorder} \item [(SETNONCOMMORDER order)  : FEXPR]

\index{getnoncommorder} \item [(GETNONCOMMORDER)  : EXPR]
 \end{description}


{\bf \large Coefficient domain and handling:}

\begin{description}


\index{setmodulus} \item [(SETMODULUS pr) : EXPR]
pr should be a prime, 0, or NIL. (NIL is interpreted as 0.) The new
coefficient field is set to the prime field of characteristic pr.
For  $pr > 2$, some recompilations (which may take several seconds) are
performed. If furthermore the flag MODLOGARITHMS is ON, a file with a
certain kind of "modular logarithm tables" is sought for. The (full)
name of the file is supposed to be a preamble followed by the number
pr (in decimal notation). The preamble is the value of (the expansion
of) the variable P!r!i!m!eF!i!l!eP!r!eA!m!b!l!e (which in severe need
may be reset by means of SETQ). If the file is not found, a new one
is created; but if you don't have write permission on the relevant
directory, you may get into troubles. (The creation of the table file
also requires some time, depending on the size of pr.)

\index{restorechar0} \item [(RESTORECHAR0) : EXPR]
Has the same effects as\\ (SETMODULUS 0).

\index{setmodulus2} \item [(SETMODULUS2) : EXPR]
Has the same effects as\\ (SETMODULUS 2).

\index{setreducesfcoeffs} \item [(SETREDUCESFCOEFFS) : EXPR]
(Only in bergman-under-reduce.)
The coefficients are set to be Reduce 'standard forms'. (Any previous
SETMODULUS call is cancelled). In this mode, coefficient arithmetics
is performed by ordinary Reduce standard form procedures, whence any
Reduce flags or standard forms simplifications are in force. In this
way very general domains may be set up.

{\bf \large  Strategy modes:}

\index{setinterruptstrategy} \item [(SETINTERRUPTSTRATEGY 
strategy name)] : 
  FEXPR
(Interruption) strategy name should be one of ORDINARY, NONE, NIL, or
MINHILBLIMITS. The first three cause the ordinary (default) strategy,
with no interruptions. The argument MINHILBLIMITS turns on the minimal
limit interruption strategy submode. In this, at any new current degree
cDeg the value v of (GETHSERIESMINIMUM cDeg) is investigated.
If v is NIL, no interruption is made at this degree.
If v is SKIPCDEG, the degree is skipped but calculations continue for
higher degrees.
If v is T, all further Gr\"{o}bner basis calculations are skipped.
If v is an integer, then this is interpreted as the minimal possible
Hilbert function value of cDeg for the quotient (i.e., residue class)
ring. Calculations at this degree are interrupted as soon as the
found preliminary Gr\"{o}bner basis elements are enough to make the
corresponding monomial ideal quotient ring not to have a higher
Hilbert series value of cDeg.
(The check is performed by FixNcDeg, whence by defining CUSTNEWCDEGFIX
and turning on CUSTSTRATEGY you could modify the action; see this flag.)

\index{ordngbestrategy} \item [(ORDNGBESTRATEGY) : EXPR]

\index{minhilblimitstrategy} \item [(MINHILBLIMITSTRATEGY) : EXPR]

  or (MINHILBNGBESTRATEGY) : EXPR 
have the same effects as (SETINTERRUPTSTRATEGY ORDINARY) and
(SETINTERRUPTSTRATEGY MINHILBLIMITS), respectively.

\index{getinterruptstrategy} \item [(GETINTERRUPTSTRATEGY) : EXPR]
returns the present interruption strategy (ORDINARY or MINHILBLIMITS).


\index{densecontents} \item [(DENSECONTENTS) : EXPR]

\index{sparsecontents} \item [(SPARSECONTENTS) : EXPR]
In the (integer of characteristic 0) and the (Reduce standard form)
coefficient major modes, the 'coefficient domain' does not coincide
with the 'base field'. Then the polynomials under reduction and the
preliminary Gr\"{o}bner basis elements will in general not be monic. As
a consequence, we now and then get non-unit contents of polynomials
under reduction (i.e., non-trivial greatest common divisors of all
coefficients). There are different possible strategies for how often
such contents should be calculated and factored out. The bergman
default is 'densely', i.e., more or less at each reduction steps.
A 'sparsely' variant is also available, where we postpone this until
we have normal forms. DENSECONTENTS/SPARSECONTENTS switches between
them.

(COMMENT: In the M\"{o}ller et al. Reduce GROEBNER package, an
intermediate strategy of some interest has been tested: Factor out
the content once for each (say) tenth step.)


%EXPTSPRINTMODE, NOEXPTSPRINTMODE: <Insert explanations here>

 The use of the flags NOBIGNUMS, MODLOGARITHMS, and
IMMEDIATEFULLREDUCTION is explained in the User Available Flags list. 





\end{description}




