Evaluate an svex using s4vecs in an all-X environment.
Theorem:
(defthm return-type-of-svex-s4xeval.val (b* ((?val (svex-s4xeval x))) (s4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svex-call-s4xeval.val (b* ((?val (svex-call-s4xeval x))) (s4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svex-fn/args-s4xeval.val (b* ((?val (svex-fn/args-s4xeval fn args))) (s4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svexlist-s4xeval.val (b* ((?val (svexlist-s4xeval x))) (s4veclist-p val)) :rule-classes :rewrite)
Function:
(defun svex-s4xeval-memoize-condition (x) (declare (ignorable x) (xargs :guard (svex-p x))) (eq (svex-kind x) :call))
Theorem:
(defthm svex-s4xeval-of-svex-fix-x (equal (svex-s4xeval (svex-fix x)) (svex-s4xeval x)))
Theorem:
(defthm svex-call-s4xeval-of-svex-fix-x (equal (svex-call-s4xeval (svex-fix x)) (svex-call-s4xeval x)))
Theorem:
(defthm svex-fn/args-s4xeval-of-fnsym-fix-fn (equal (svex-fn/args-s4xeval (fnsym-fix fn) args) (svex-fn/args-s4xeval fn args)))
Theorem:
(defthm svex-fn/args-s4xeval-of-svexlist-fix-args (equal (svex-fn/args-s4xeval fn (svexlist-fix args)) (svex-fn/args-s4xeval fn args)))
Theorem:
(defthm svexlist-s4xeval-of-svexlist-fix-x (equal (svexlist-s4xeval (svexlist-fix x)) (svexlist-s4xeval x)))
Theorem:
(defthm svex-s4xeval-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-s4xeval x) (svex-s4xeval x-equiv))) :rule-classes :congruence)
Theorem:
(defthm svex-call-s4xeval-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-call-s4xeval x) (svex-call-s4xeval x-equiv))) :rule-classes :congruence)
Theorem:
(defthm svex-fn/args-s4xeval-fnsym-equiv-congruence-on-fn (implies (fnsym-equiv fn fn-equiv) (equal (svex-fn/args-s4xeval fn args) (svex-fn/args-s4xeval fn-equiv args))) :rule-classes :congruence)
Theorem:
(defthm svex-fn/args-s4xeval-svexlist-equiv-congruence-on-args (implies (svexlist-equiv args args-equiv) (equal (svex-fn/args-s4xeval fn args) (svex-fn/args-s4xeval fn args-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-s4xeval-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (svexlist-s4xeval x) (svexlist-s4xeval x-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-s4xeval-nil (equal (svexlist-s4xeval nil) nil))
Theorem:
(defthm car-of-svexlist-s4xeval (s4vec-equiv (car (svexlist-s4xeval x)) (svex-s4xeval (car x))))
Theorem:
(defthm cdr-of-svexlist-s4xeval (s4veclist-equiv (cdr (svexlist-s4xeval x)) (svexlist-s4xeval (cdr x))))
Theorem:
(defthm len-of-svexlist-s4xeval (equal (len (svexlist-s4xeval x)) (len x)))
Theorem:
(defthm svexlist-s4xeval-of-append (equal (svexlist-s4xeval (append a b)) (append (svexlist-s4xeval a) (svexlist-s4xeval b))))
Theorem:
(defthm svex-s4xeval-is-svex-xeval (b* ((?val (svex-s4xeval x))) (equal (s4vec->4vec val) (svex-xeval x))))
Theorem:
(defthm svex-call-s4xeval-is-svex-call-xeval (b* ((?val (svex-call-s4xeval x))) (equal (s4vec->4vec val) (svex-call-xeval x))))
Theorem:
(defthm svex-fn/args-s4xeval-is-svex-fn/args-xeval (b* ((?val (svex-fn/args-s4xeval fn args))) (equal (s4vec->4vec val) (svex-fn/args-xeval fn args))))
Theorem:
(defthm svexlist-s4xeval-is-svexlist-xeval (b* ((?val (svexlist-s4xeval x))) (equal (s4veclist->4veclist val) (svexlist-xeval x))))