Brief summary of guard checking and guard verification
For a careful introduction to guards, see guard.
I. GUARD CHECKING DURING EXECUTION
Effect
Guards on definitions are checked at execution time (except for guards on subsidiary calls of recursive or mutually recursive functions).
When does it happen
By default, guards are checked for all forms submitted at the top level.
To disable
To (re-)enable
See set-guard-checking for more options.
II. GUARD VERIFICATION
Effect
A proof is attempted of the obligations arising from the guards of
subsidiary functions in a defun, defthm, or defaxiom
event. In the case of a
When does it happen
Only names of defined functions, defthms, and defaxioms are subject to guard verification. Guard verification may occur when functions are defined (using defun), but it requires an explicit call of verify-guards in order to verify guards for defthms and defaxioms. Constrained functions (see encapsulate) may not have their guards verified.
causes guard verification for the defun, defthm, or defaxiom named by
causes guard verification of
1. The xargs declaration specifies a
: guard.2. There is at least one
type declaration (see declare).3. The xargs declaration specifies
: stobjs .4. The xargs declaration specifies
: verify-guardst .
causes guard verification of