FTY version of check-mv-let-call.
(fty-check-mv-let-call term) → (mv yes/no mv-var vars indices hides mv-term body-term)
Function:
(defun fty-check-mv-let-call (term) (declare (xargs :guard (pseudo-termp term))) (let ((__function__ 'fty-check-mv-let-call)) (declare (ignorable __function__)) (check-mv-let-call (pseudo-term-fix term))))
Theorem:
(defthm booleanp-of-fty-check-mv-let-call.yes/no (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm symbolp-of-fty-check-mv-let-call.mv-var (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (symbolp mv-var)) :rule-classes :rewrite)
Theorem:
(defthm symbol-listp-of-fty-check-mv-let-call.vars (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (symbol-listp vars)) :rule-classes :rewrite)
Theorem:
(defthm nat-listp-of-fty-check-mv-let-call.indices (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (nat-listp indices)) :rule-classes :rewrite)
Theorem:
(defthm boolean-listp-of-fty-check-mv-let-call.hides (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (boolean-listp hides)) :rule-classes :rewrite)
Theorem:
(defthm pseudo-termp-of-fty-check-mv-let-call.mv-term (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (pseudo-termp mv-term)) :rule-classes :rewrite)
Theorem:
(defthm pseudo-termp-of-fty-check-mv-let-call.body-term (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (pseudo-termp body-term)) :rule-classes :rewrite)
Theorem:
(defthm len-of-fty-check-mv-let-call.indices/vars (implies (and (pseudo-termp term)) (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (implies yes/no (equal (len indices) (len vars))))))
Theorem:
(defthm len-of-fty-check-mv-let-call.hides/vars (implies (and (pseudo-termp term)) (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (implies yes/no (equal (len hides) (len vars))))))
Theorem:
(defthm pseudo-term-count-of-check-mv-let-call.mv-term (implies (pseudo-termp term) (b* (((mv yes/no & & & & mv-term &) (check-mv-let-call term))) (implies yes/no (< (pseudo-term-count mv-term) (pseudo-term-count term))))) :rule-classes :linear)
Theorem:
(defthm pseudo-term-count-of-fty-check-mv-let-call.mv-term (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (implies yes/no (< (pseudo-term-count mv-term) (pseudo-term-count term)))) :rule-classes :linear)
Theorem:
(defthm pseudo-term-count-of-check-mv-let-call.body-term (implies (pseudo-termp term) (b* (((mv yes/no & & & & & body-term) (check-mv-let-call term))) (implies yes/no (< (pseudo-term-count body-term) (pseudo-term-count term))))) :rule-classes :linear)
Theorem:
(defthm pseudo-term-count-of-fty-check-mv-let-call.body-term (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (implies yes/no (< (pseudo-term-count body-term) (pseudo-term-count term)))) :rule-classes :linear)
Theorem:
(defthm pseudo-term-count-of-check-mv-let-call (implies (pseudo-termp term) (b* (((mv yes/no & & & & mv-term body-term) (check-mv-let-call term))) (implies yes/no (< (+ (pseudo-term-count mv-term) (pseudo-term-count body-term)) (pseudo-term-count term))))) :rule-classes :linear)
Theorem:
(defthm pseudo-term-count-if-fty-check-mv-let-call (b* (((mv ?yes/no ?mv-var ?vars ?indices ?hides ?mv-term ?body-term) (fty-check-mv-let-call term))) (implies yes/no (b* (((mv yes/no & & & & mv-term body-term) (fty-check-mv-let-call term))) (implies yes/no (< (+ (pseudo-term-count mv-term) (pseudo-term-count body-term)) (pseudo-term-count term)))))) :rule-classes :linear)