Evaluate an X-monotonic approximation of an svex
(svex-mono-eval x env) → val
Theorem:
(defthm return-type-of-svex-mono-eval.val (b* ((?val (svex-mono-eval x env))) (4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svex-call-mono-eval.val (b* ((?val (svex-call-mono-eval x env))) (4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svex-fn/args-mono-eval.val (b* ((?val (svex-fn/args-mono-eval fn args env))) (4vec-p val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svexlist-mono-eval.val (b* ((?val (svexlist-mono-eval x env))) (4veclist-p val)) :rule-classes :rewrite)
Theorem:
(defthm svex-mono-eval-of-quote (implies (svex-case x :quote) (equal (svex-mono-eval x env) (svex-quote->val x))))
Theorem:
(defthm svex-mono-eval-of-svex-fix-x (equal (svex-mono-eval (svex-fix x) env) (svex-mono-eval x env)))
Theorem:
(defthm svex-mono-eval-of-svex-env-fix-env (equal (svex-mono-eval x (svex-env-fix env)) (svex-mono-eval x env)))
Theorem:
(defthm svex-call-mono-eval-of-svex-fix-x (equal (svex-call-mono-eval (svex-fix x) env) (svex-call-mono-eval x env)))
Theorem:
(defthm svex-call-mono-eval-of-svex-env-fix-env (equal (svex-call-mono-eval x (svex-env-fix env)) (svex-call-mono-eval x env)))
Theorem:
(defthm svex-fn/args-mono-eval-of-fnsym-fix-fn (equal (svex-fn/args-mono-eval (fnsym-fix fn) args env) (svex-fn/args-mono-eval fn args env)))
Theorem:
(defthm svex-fn/args-mono-eval-of-svexlist-fix-args (equal (svex-fn/args-mono-eval fn (svexlist-fix args) env) (svex-fn/args-mono-eval fn args env)))
Theorem:
(defthm svex-fn/args-mono-eval-of-svex-env-fix-env (equal (svex-fn/args-mono-eval fn args (svex-env-fix env)) (svex-fn/args-mono-eval fn args env)))
Theorem:
(defthm svexlist-mono-eval-of-svexlist-fix-x (equal (svexlist-mono-eval (svexlist-fix x) env) (svexlist-mono-eval x env)))
Theorem:
(defthm svexlist-mono-eval-of-svex-env-fix-env (equal (svexlist-mono-eval x (svex-env-fix env)) (svexlist-mono-eval x env)))
Theorem:
(defthm svex-mono-eval-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-mono-eval x env) (svex-mono-eval x-equiv env))) :rule-classes :congruence)
Theorem:
(defthm svex-mono-eval-svex-env-equiv-congruence-on-env (implies (svex-env-equiv env env-equiv) (equal (svex-mono-eval x env) (svex-mono-eval x env-equiv))) :rule-classes :congruence)
Theorem:
(defthm svex-call-mono-eval-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-call-mono-eval x env) (svex-call-mono-eval x-equiv env))) :rule-classes :congruence)
Theorem:
(defthm svex-call-mono-eval-svex-env-equiv-congruence-on-env (implies (svex-env-equiv env env-equiv) (equal (svex-call-mono-eval x env) (svex-call-mono-eval x env-equiv))) :rule-classes :congruence)
Theorem:
(defthm svex-fn/args-mono-eval-fnsym-equiv-congruence-on-fn (implies (fnsym-equiv fn fn-equiv) (equal (svex-fn/args-mono-eval fn args env) (svex-fn/args-mono-eval fn-equiv args env))) :rule-classes :congruence)
Theorem:
(defthm svex-fn/args-mono-eval-svexlist-equiv-congruence-on-args (implies (svexlist-equiv args args-equiv) (equal (svex-fn/args-mono-eval fn args env) (svex-fn/args-mono-eval fn args-equiv env))) :rule-classes :congruence)
Theorem:
(defthm svex-fn/args-mono-eval-svex-env-equiv-congruence-on-env (implies (svex-env-equiv env env-equiv) (equal (svex-fn/args-mono-eval fn args env) (svex-fn/args-mono-eval fn args env-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-mono-eval-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (svexlist-mono-eval x env) (svexlist-mono-eval x-equiv env))) :rule-classes :congruence)
Theorem:
(defthm svexlist-mono-eval-svex-env-equiv-congruence-on-env (implies (svex-env-equiv env env-equiv) (equal (svexlist-mono-eval x env) (svexlist-mono-eval x env-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-mono-eval-nil (equal (svexlist-mono-eval nil env) nil))
Theorem:
(defthm car-of-svexlist-mono-eval (4vec-equiv (car (svexlist-mono-eval x env)) (svex-mono-eval (car x) env)))
Theorem:
(defthm cdr-of-svexlist-mono-eval (4veclist-equiv (cdr (svexlist-mono-eval x env)) (svexlist-mono-eval (cdr x) env)))
Theorem:
(defthm len-of-svexlist-mono-eval (equal (len (svexlist-mono-eval x env)) (len x)))
Theorem:
(defthm svexlist-mono-eval-of-append (equal (svexlist-mono-eval (append a b) env) (append (svexlist-mono-eval a env) (svexlist-mono-eval b env))))