Helper function for smtlink-hint-syntax-p.
(smtlink-hint-syntax-p-helper term used) → syntax-good?
Function:
(defun smtlink-hint-syntax-p-helper (term used) (declare (xargs :guard (smtlink-option-name-lst-p used))) (let ((acl2::__function__ 'smtlink-hint-syntax-p-helper)) (declare (ignorable acl2::__function__)) (b* (((unless (true-listp term)) nil) ((if (atom term)) (equal term nil)) ((unless (cdr term)) nil) ((list* first second rest) term) ((mv res new-used) (smtlink-option-syntax-p (list first second) used))) (and res (smtlink-hint-syntax-p-helper rest new-used)))))
Theorem:
(defthm booleanp-of-smtlink-hint-syntax-p-helper (b* ((syntax-good? (smtlink-hint-syntax-p-helper term used))) (booleanp syntax-good?)) :rule-classes :rewrite)
Theorem:
(defthm smtlink-hint-syntax-p-helper--monotonicity (implies (and (subsetp used-1 used :test 'equal) (smtlink-hint-syntax-p-helper term used)) (smtlink-hint-syntax-p-helper term used-1)))
Theorem:
(defthm smtlink-hint-syntax-p-helper--congruence (b* ((ok (smtlink-hint-syntax-p-helper term used))) (implies (acl2::set-equiv used-1 used) (equal (smtlink-hint-syntax-p-helper term used-1) ok))) :rule-classes (:congruence))
Theorem:
(defthm smtlink-hint-syntax-p-helper-preserve (implies (and (smtlink-hint-syntax-p-helper term nil) (consp term)) (smtlink-hint-syntax-p-helper (cddr term) nil)))