Major Section: EVENTS
Use defund
instead of defun
when you want to disable a function
immediately after its definition in :
logic
mode. This macro has
been provided for users who prefer working in a mode where functions are only
enabled when explicitly directed by :
in-theory
. Specifically, the
form
(defund NAME FORMALS ...)expands to:
(progn (defun NAME FORMALS ...) (with-output :off summary (in-theory (disable NAME))) (value-triple '(:defund NAME))).Only the
:
definition
rule (and, for recursively defined functions,
the :
induction
rule) for the function are disabled. In particular,
defund
does not disable either the :
type-prescription
or the
:
executable-counterpart
rule. Also, the summary for the
in-theory
event is suppressed.If the function is defined in :
program
mode, either because the
default-defun-mode is :
program
or because :mode :program
has been specified in an xargs
form of a declare
form, then no
in-theory
event is executed. (More precisely, in-theory
events
are ignored when the default-defun-mode is :
program
, and if
:mode :program
is specified then defund
does not generate an
in-theory
event.)
Note that defund
commands are never redundant (see redundant-events)
when the default-defun-mode is :
logic
, because the
in-theory
event will always be executed.
See defun for documentation of defun
.