The Knuth-Bendix procedure is unusually sensitive to the settings of a number of parameters that control its operation. In some examples, a small change in one of these parameters can mean the difference between obtaining a confluent rewriting system fairly quickly on the one hand, and the procedure running on until it uses all available memory on the other hand.
Unfortunately, it is almost impossible to give even very general guidelines on these settings, although the ``wreathproduct" orderings appear to be more sensitive than the ``shortlex" and ``wtlex" orderings. The user can only acquire a feeling for the influence of these parameters by experimentation on a large number of examples.
The control parameters are defined by the user by setting values of certain fields of a rewriting system rws directly. These fields will now be listed.
rws.maxeqns
:KB
or Automata
will abort.
rws.tidyint
:rws.tidyint
rules since the last
tidying.
rws.confnum
:rws.confnum
overlaps are processed in the Knuth-Bendix procedure but no
new rules are found, then a fast test for confluence is
carried out. This saves a lot of time if the system really is
confluent, but usually wastes time if it is not.
rws.maxstoredlen
:KB
with the
limits removed. (To remove the limits, unbind the field.) It
is advisable to call AddOriginalEqnsRWS
on rws before
re-running KB
.
rws.maxoverlaplen
:rws.maxoverlaplen
are processed. Similar remarks apply to
those for maxstoredlen
.
rws.sorteqns
:
rws.maxoplen
:rws.sorteqns
were true), and only those rules having left hand sides of
length up to rws.maxoplen
are output at all. Again,
similar remarks apply to those for maxstoredlen
.
rws.maxreducelen
:
rws.silent
, rws.verbose
, rws.veryVerbose
:KB
and
Automata
. By default there is a small amount of such output.
rws.maxstates
, rws.maxwdiffs
:KB
, and the
maximum number of word-differences allowed when running
Automata
, respectively. These numbers are normally increased
automatically when required, so it unusual to want to set
these flags. They can be set when either it is desired to
limit these parameters (and prevent them being increased
automatically), or (as occasionally happens), the number of
word-differences increases too rapidly for the program to cope
- when this happens, the run is usually doomed to failure
anyway.
GAP 3.4.4