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