Recognizer for alists whose values are string lists.
Function:
(defun vl-string-list-values-p (x) (declare (xargs :guard t)) (if (consp x) (and (consp (car x)) (string-listp (cdar x)) (vl-string-list-values-p (cdr x))) (not x)))
Theorem:
(defthm vl-string-list-values-p-when-not-consp (implies (not (consp x)) (equal (vl-string-list-values-p x) (not x))))
Theorem:
(defthm vl-string-list-values-p-of-cons (equal (vl-string-list-values-p (cons a x)) (and (consp a) (string-listp (cdr a)) (vl-string-list-values-p x))))
Theorem:
(defthm vl-string-list-values-p-of-hons-shrink-alist (implies (and (vl-string-list-values-p x) (vl-string-list-values-p ans)) (vl-string-list-values-p (hons-shrink-alist x ans))))
Theorem:
(defthm string-listp-of-cdr-of-hons-assoc-equal-when-vl-string-list-values-p (implies (vl-string-list-values-p x) (string-listp (cdr (hons-assoc-equal a x)))))