Input and output of data is not part of GRÖBNER, but we will provide an additional I/O library for reading and printing of all data types available in GRÖBNER, see also Section 1.4. We will report on this in a subsequent paper, see .
However, the code of GRÖBNER contains commands for a trace of the computation of a Gröbner basis, which is on the one hand desirable, when one intends to use GRÖBNER for studying the Gröbner bases algorithm, but on the other hand annoying, when the computation of a Gröbner basis is only a subtask within another program. Since GRÖBNER is intended to serve for both purposes, it supplies several groups of trace statements, which can be activated or deactivated independently from each other.
The suffix .trace in a filename indicates that this file contains trace statements. Before compilation, these files are piped through a filter that removes deactivated trace statements. In order to decide about activation of trace statements we provide a trace code for each group of trace statements and a mask. The trace code must be an integer of the form and the mask is an arbitrary non-negative integer. A group of trace statements is defined to be active if and only if the bitwise conjunction of its trace code with the mask is non-zero. We will illustrate this in the following example.
Trace statements have to match the following pattern so that they can be recognized and processed correctly. They have to be one-line comments starting in column one, beginning with the marker ``TRACE'' followed by the trace code (separated by at least one blank) followed by the actual command.
Hence, a typical trace statement looks as follows:
/* TRACE 4 print_pp( leading_power_product_lp( h));*/
The filter activate-trace takes a list of files to be filtered. If parameters are omitted, all files ending in .trace are filtered. First the program filter-trace is called, that deletes all deactivated trace statements. By a simple sed program the marker ``TRACE'', the trace code, and the comment characters are stripped from the remaining activated trace statements.
Furthermore, we provide a program compute-mask that computes the desired mask from the entries in the file trace.setup , which contains the description of the available groups of trace statements (one per line). If a group should be activated the corresponding line has to contain one of the characters ``Y'', ``y'', ``X'', or ``x'' at the end of the line, any other character is interpreted as deactivation of the respective group. The group description in line n of the file trace.setup corresponds to the trace statements with code , i.e. the characters ``Y'', ``y'', ``X'', and ``x'' at the end of line n correspond to a ``1'' in the n-th bit in the binary representation of the mask.