(index-listp x numvars) → *
Function:
(defun index-listp (x numvars) (declare (xargs :guard (natp numvars))) (let ((__function__ 'index-listp)) (declare (ignorable __function__)) (if (atom x) (eq x nil) (and (natp (car x)) (< (car x) (lnfix numvars)) (index-listp (cdr x) numvars)))))
Theorem:
(defthm natp-nth-of-index-listp (implies (and (index-listp x numvars) (< (nfix n) (len x))) (natp (nth n x))))
Theorem:
(defthm nfix-nth-in-index-list-bound (implies (and (index-listp x numvars) (posp numvars)) (< (nfix (nth n x)) numvars)) :rule-classes (:rewrite :linear))
Theorem:
(defthm nth-in-index-list-bound (implies (and (index-listp x numvars) (natp numvars) (natp (nth n x))) (< (nth n x) numvars)) :rule-classes (:rewrite :linear))
Theorem:
(defthm nat-listp-when-index-listp (implies (index-listp x numvars) (nat-listp x)))
Theorem:
(defthm true-listp-when-index-listp (implies (index-listp x numvars) (true-listp x)) :rule-classes :forward-chaining)
Theorem:
(defthm index-listp-of-nfix-numvars (equal (index-listp x (nfix numvars)) (index-listp x numvars)))
Theorem:
(defthm index-listp-nat-equiv-congruence-on-numvars (implies (nat-equiv numvars numvars-equiv) (equal (index-listp x numvars) (index-listp x numvars-equiv))) :rule-classes :congruence)