evaluate the given form in Lisp
Major Section: PROOF-CHECKER-COMMANDS
Example: (lisp (assign xxx 3)) General Form: (lisp form)Evaluate
form
. The lisp
command is mainly of interest for side
effects. See also print
, skip
, and fail
.The rest of the documentation for lisp
is of interest only to those who
use it in macro commands. If the Lisp evaluation (by trans-eval
) of form
returns an error triple (see error-triples) of the form
(mv erp ((NIL NIL STATE) . (erp-1 val-1 &)) state)
, then the lisp
command returns the appropriate error triple
(mv (or erp erp-1) val-1 state) .Otherwise, the
trans-eval
of form must return an error triple of the form
(mv erp (cons stobjs-out val) &)
, and the lisp
command returns the
appropriate error triple
(mv erp val state).
Note that the output signature of the form has been lost. The user
must know the signature in order to use the output of the lisp
command. Trans-eval, which is undocumented except by comments in
the ACL2 source code, has replaced, in val
, any occurrence of
the current state or the current values of stobjs by simple symbols
such as REPLACED-STATE
. The actual values of these objects may
be recovered, in principle, from the state
returned and the
user-stobj-alist
within that state. However, in practice, the
stobjs cannot be recovered because the user is denied access to
user-stobj-alist
. The moral is: do not try to write macro
commands that manipulate stobjs. Should the returned val
contain REPLACED-STATE
the value may simply be ignored and
state
used, since that is what REPLACED-STATE
denotes.