Enhanced variant of no-stobjs-p.
(no-stobjs-p+ fn wrld) → yes/no
- fn — Guard (symbolp fn).
- wrld — Guard (plist-worldp wrld).
- yes/no — Type (booleanp yes/no).
This returns the same result as no-stobjs-p,
but it is guard-verified
and it causes an error (via stobjs-in+
if called on a symbol that does not name a function.
The function must not be in *stobjs-out-invalid*,
because in that case its output stobjs depend on how it is called.
This condition is part of the guard of this utility.
Definitions and Theorems
(defun no-stobjs-p+ (fn wrld)
(declare (xargs :guard (and (symbolp fn) (plist-worldp wrld))))
(declare (xargs :guard (not (member-eq fn *stobjs-out-invalid*))))
(let ((__function__ 'no-stobjs-p+))
(declare (ignorable __function__))
(and (all-nils (stobjs-in+ fn wrld))
(all-nils (stobjs-out+ fn wrld)))))
(b* ((yes/no (no-stobjs-p+ fn wrld)))