Major Section: PROGRAMMING
Examples:
(declare (ignore x y z))
(declare (ignorable x y z)
(type integer i j k)
(type (satisfies integerp) m1 m2))
(declare (xargs :guard (and (integerp i)
(<= 0 i))
:guard-hints (("Goal" :use (:instance lemma3
(x (+ i j)))))))
Some Related Topics
(optimize (safety 3)). This is allowed
only at the top level of defun forms. See any Common Lisp
documentation for more information.
Declarations in ACL2 may occur only where dcl occurs below:
(DEFUN name args doc-string dcl ... dcl body)
(DEFMACRO name args doc-string dcl ... dcl body)
(LET ((v1 t1) ...) dcl ... dcl body)
(MV-LET (v1 ...) term dcl ... dcl body)
(FLET ((name args dcl ... dcl body)
...))
Of course, if a form macroexpands into one of these (as let* expands
into nested lets and our er-let* expands into nested mv-lets)
then declarations are permitted as handled by the macros involved.Declare is defined in Common Lisp. See any Common Lisp documentation for
more information.