Recognize true lists of logical names.
(logical-name-listp names wrld) → yes/no
See
While
We cannot use std::deflist to define this function
because that macro attempts to prove that
Function:
(defun logical-name-listp (names wrld) (declare (xargs :guard (plist-worldp wrld))) (let ((__function__ 'logical-name-listp)) (declare (ignorable __function__)) (cond ((atom names) (null names)) (t (and (logical-namep (car names) wrld) (logical-name-listp (cdr names) wrld))))))
Theorem:
(defthm booleanp-of-logical-name-listp (b* ((yes/no (logical-name-listp names wrld))) (booleanp yes/no)) :rule-classes :rewrite)