Major Section: EVENTS
Example: (table user-defined-functions-table 'untranslate 'my-untranslate)This example associates the user-defined function symbol
my-untranslate
with the
build-in function symbol untranslate
. As a result, the code for my-untranslate
will be run whenever the function untranslate
is called. The formals of
the two functions must agree and must not contain any stobj names.
This feature should only be used by advanced users who have a thorough
understanding of the system functions being replaced. There are currently
two ways a user can affect the behavior of untranslate
.
First, one can associate untranslate
and untranslate-lst
with names
of functions in this table
, to be used in place of untranslate
and
untranslate-lst
(respectively). Note that these overrides fail to occur
upon guard violations and some other evaluation errors.
Next, suppose that neither untranslate
nor untranslate-lst
is
associated with a function in the table, but that untranslate-preprocess
is associated with a function symbol, fn
. Then when ACL2 applies
untranslate
to a term, the first thing it does is to call fn
on two
arguments: that term and the current ACL2 logical world. If the call
produces a non-nil result, then that result is passed to the untranslate
process.
See file books/misc/rtl-untranslate.lisp
for an example of user-defined
untranslate
.