Validate a list of characters of a string literal.
(valid-s-char-list cchars prefix? ienv) → (mv erp codes)
Function:
(defun valid-s-char-list (cchars prefix? ienv) (declare (xargs :guard (and (s-char-listp cchars) (eprefix-optionp prefix?) (ienvp ienv)))) (b* (((reterr) nil) ((when (endp cchars)) (retok nil)) ((erp code) (valid-s-char (car cchars) prefix? ienv)) ((erp codes) (valid-s-char-list (cdr cchars) prefix? ienv))) (retok (cons code codes))))
Theorem:
(defthm maybe-msgp-of-valid-s-char-list.erp (b* (((mv acl2::?erp ?codes) (valid-s-char-list cchars prefix? ienv))) (maybe-msgp erp)) :rule-classes :rewrite)
Theorem:
(defthm nat-listp-of-valid-s-char-list.codes (b* (((mv acl2::?erp ?codes) (valid-s-char-list cchars prefix? ienv))) (nat-listp codes)) :rule-classes :rewrite)
Theorem:
(defthm valid-s-char-list-of-s-char-list-fix-cchars (equal (valid-s-char-list (s-char-list-fix cchars) prefix? ienv) (valid-s-char-list cchars prefix? ienv)))
Theorem:
(defthm valid-s-char-list-s-char-list-equiv-congruence-on-cchars (implies (s-char-list-equiv cchars cchars-equiv) (equal (valid-s-char-list cchars prefix? ienv) (valid-s-char-list cchars-equiv prefix? ienv))) :rule-classes :congruence)
Theorem:
(defthm valid-s-char-list-of-eprefix-option-fix-prefix? (equal (valid-s-char-list cchars (eprefix-option-fix prefix?) ienv) (valid-s-char-list cchars prefix? ienv)))
Theorem:
(defthm valid-s-char-list-eprefix-option-equiv-congruence-on-prefix? (implies (eprefix-option-equiv prefix? prefix?-equiv) (equal (valid-s-char-list cchars prefix? ienv) (valid-s-char-list cchars prefix?-equiv ienv))) :rule-classes :congruence)
Theorem:
(defthm valid-s-char-list-of-ienv-fix-ienv (equal (valid-s-char-list cchars prefix? (ienv-fix ienv)) (valid-s-char-list cchars prefix? ienv)))
Theorem:
(defthm valid-s-char-list-ienv-equiv-congruence-on-ienv (implies (ienv-equiv ienv ienv-equiv) (equal (valid-s-char-list cchars prefix? ienv) (valid-s-char-list cchars prefix? ienv-equiv))) :rule-classes :congruence)