(a4veclist/svex-env-list-eval x envs svexes svars boolmasks) → 4vecs
Function:
(defun a4veclist/svex-env-list-eval (x envs svexes svars boolmasks) (declare (xargs :guard (and (a4veclistlist-p x) (svex-envlist-p envs) (svexlist-p svexes) (svarlist-p svars) (svar-boolmasks-p boolmasks)))) (declare (xargs :guard (and (equal (len envs) (len x)) (svex-maskbits-ok svars (svexlist-mask-alist svexes))))) (let ((__function__ 'a4veclist/svex-env-list-eval)) (declare (ignorable __function__)) (if (atom x) nil (cons (a4vec/svex-env-eval (car x) (car envs) svexes svars boolmasks) (a4veclist/svex-env-list-eval (cdr x) (cdr envs) svexes svars boolmasks)))))
Theorem:
(defthm 4veclistlist-p-of-a4veclist/svex-env-list-eval (b* ((4vecs (a4veclist/svex-env-list-eval x envs svexes svars boolmasks))) (4veclistlist-p 4vecs)) :rule-classes :rewrite)
Theorem:
(defthm a4veclist/svex-env-list-eval-correct (b* ((masks (svexlist-mask-alist svexes)) ((mv ?err a4env) (svex-varmasks->a4env svars masks boolmasks1)) (x (svexlistlist->a4vec some-svexes a4env masks)) (?4vecs (a4veclist/svex-env-list-eval x envs svexes svars boolmasks))) (implies (and (svex-maskbits-ok svars masks) (equal (len envs) (len some-svexes)) (subsetp (append-lists some-svexes) svexes) (equal boolmasks (svar-boolmasks-fix boolmasks1)) (svex-envlist-check-boolmasks boolmasks envs) (subsetp (intersection-equal (svexlist-vars (append-lists some-svexes)) (svex-envlist-keyset envs)) (svarlist-fix svars))) (equal 4vecs (svexlist/env-list-eval some-svexes envs)))))
Theorem:
(defthm a4veclist/svex-env-list-eval-of-a4veclistlist-fix-x (equal (a4veclist/svex-env-list-eval (a4veclistlist-fix x) envs svexes svars boolmasks) (a4veclist/svex-env-list-eval x envs svexes svars boolmasks)))
Theorem:
(defthm a4veclist/svex-env-list-eval-a4veclistlist-equiv-congruence-on-x (implies (a4veclistlist-equiv x x-equiv) (equal (a4veclist/svex-env-list-eval x envs svexes svars boolmasks) (a4veclist/svex-env-list-eval x-equiv envs svexes svars boolmasks))) :rule-classes :congruence)
Theorem:
(defthm a4veclist/svex-env-list-eval-of-svexlist-fix-svexes (equal (a4veclist/svex-env-list-eval x envs (svexlist-fix svexes) svars boolmasks) (a4veclist/svex-env-list-eval x envs svexes svars boolmasks)))
Theorem:
(defthm a4veclist/svex-env-list-eval-svexlist-equiv-congruence-on-svexes (implies (svexlist-equiv svexes svexes-equiv) (equal (a4veclist/svex-env-list-eval x envs svexes svars boolmasks) (a4veclist/svex-env-list-eval x envs svexes-equiv svars boolmasks))) :rule-classes :congruence)
Theorem:
(defthm a4veclist/svex-env-list-eval-of-svarlist-fix-svars (equal (a4veclist/svex-env-list-eval x envs svexes (svarlist-fix svars) boolmasks) (a4veclist/svex-env-list-eval x envs svexes svars boolmasks)))
Theorem:
(defthm a4veclist/svex-env-list-eval-svarlist-equiv-congruence-on-svars (implies (svarlist-equiv svars svars-equiv) (equal (a4veclist/svex-env-list-eval x envs svexes svars boolmasks) (a4veclist/svex-env-list-eval x envs svexes svars-equiv boolmasks))) :rule-classes :congruence)