Major Section: SWITCHES-PARAMETERS-AND-MODES
ACL2 prints summaries at the conclusions of processing events (unless
summaries are inhibited; see set-inhibit-output-lst and also
see set-inhibited-summary-types). You may arrange for information to be
printed at the end of the summary, by defining a function of state that
returns an ordinary value (typically nil, but the value is irrelevant).
This function should normally be a guard-verified :logic mode
function with no explicit guard (hence, its guard is actually
(state-p state)), but later below we discuss how to avoid this
requirement. It is then attached (see defattach) to the function
print-summary-user. The following example illustrates how this all
works.
(defun print-summary-user-test (state)
(declare (xargs :stobjs state))
(and (f-boundp-global 'abbrev-evisc-tuple state)
(observation-cw
'my-test
"~|Value of abbrev-evisc-tuple: ~x0~|"
(f-get-global 'abbrev-evisc-tuple state))))
(defattach print-summary-user print-summary-user-test)
After admission of the two events above, every event summary will conclude with extra printout, for example:
ACL2 Observation in MY-TEST: Value of abbrev-evisc-tuple: :DEFAULT
If the attachment function (above, print-summary-user-test) does not meet
all the requirements stated above, then you can use the :skip-checks
argument of defattach to get around the requirement, as illustrated by
the following example.
(defun print-summary-user-test2 (state)
(declare (xargs :stobjs state
:mode :program))
(observation-cw
'my-test
"~|Value of term-evisc-tuple: ~x0~|"
(f-get-global 'term-evisc-tuple state)))
(defttag t) ; needed for :skip-checks t
(defattach (print-summary-user print-summary-user-test2)
:skip-checks t)