Several dimensions characterize the activity of the FUF unifier:
It is possible to tailor the tracing behavior of FUF according to each of these dimensions. In general, FUF can output a tracing message whenever it takes an action, such as adding a feature to the total FD, selecting a branch in the grammar, backtracking because of a failure, expanding a cset and moving in the constituent tree traversal, freezing and unfreezing goals etc. Outputting all the possible trace messages is always overwhelming, and provides too much text to be useful. So the challenge of the FUF debugger is to fine-tune the tracing system to produce just enough information to locate the bugs in the grammar and/or in the input FD.
The grammar developper indicates what portions of the grammar must be traced: the grammar is traced, not the unifier. Therefore, to trigger tracing, one must put directives into the grammar. At the Lisp level, and for a given grammar including tracing directives, traces can be switched on or off by the following functions:
I GENERAL TRACING CONTROL
|