(svex-envs-check-ovtests-ok-rec keys x y overridekey-set) → *
Function:
(defun svex-envs-check-ovtests-ok-rec (keys x y overridekey-set) (declare (xargs :guard (and (svarlist-p keys) (svex-env-p x) (svex-env-p y)))) (let ((__function__ 'svex-envs-check-ovtests-ok-rec)) (declare (ignorable __function__)) (if (atom keys) t (and (b* ((k (car keys))) (or (not (svar-override-p k :test)) (if (hons-get (svar-fix k) overridekey-set) (4vec-muxtest-subsetp (svex-env-lookup k x) (svex-env-lookup k y)) (4vec-1mask-equiv (svex-env-lookup k x) (svex-env-lookup k y))))) (svex-envs-check-ovtests-ok-rec (cdr keys) x y overridekey-set)))))
Theorem:
(defthm svex-envs-ovtests-ok-of-nils (svex-envs-ovtests-ok nil nil keys))
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-correct (iff (svex-envs-check-ovtests-ok-rec keys x y (pairlis$ (svarlist-change-override overridekeys :test) nil)) (svex-envs-ovtests-ok (svex-env-extract keys x) (svex-env-extract keys y) overridekeys)))
Theorem:
(defthm svex-envs-ovtests-ok-of-extract-superset-1 (implies (subsetp-equal (alist-keys (svex-env-fix x)) (svarlist-fix keys)) (iff (svex-envs-ovtests-ok (svex-env-extract keys x) y overridekeys) (svex-envs-ovtests-ok x y overridekeys))))
Theorem:
(defthm svex-envs-ovtests-ok-of-extract-superset-2 (implies (subsetp-equal (alist-keys (svex-env-fix y)) (svarlist-fix keys)) (iff (svex-envs-ovtests-ok x (svex-env-extract keys y) overridekeys) (svex-envs-ovtests-ok x y overridekeys))))
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-of-svarlist-fix-keys (equal (svex-envs-check-ovtests-ok-rec (svarlist-fix keys) x y overridekey-set) (svex-envs-check-ovtests-ok-rec keys x y overridekey-set)))
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-svarlist-equiv-congruence-on-keys (implies (svarlist-equiv keys keys-equiv) (equal (svex-envs-check-ovtests-ok-rec keys x y overridekey-set) (svex-envs-check-ovtests-ok-rec keys-equiv x y overridekey-set))) :rule-classes :congruence)
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-of-svex-env-fix-x (equal (svex-envs-check-ovtests-ok-rec keys (svex-env-fix x) y overridekey-set) (svex-envs-check-ovtests-ok-rec keys x y overridekey-set)))
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-svex-env-equiv-congruence-on-x (implies (svex-env-equiv x x-equiv) (equal (svex-envs-check-ovtests-ok-rec keys x y overridekey-set) (svex-envs-check-ovtests-ok-rec keys x-equiv y overridekey-set))) :rule-classes :congruence)
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-of-svex-env-fix-y (equal (svex-envs-check-ovtests-ok-rec keys x (svex-env-fix y) overridekey-set) (svex-envs-check-ovtests-ok-rec keys x y overridekey-set)))
Theorem:
(defthm svex-envs-check-ovtests-ok-rec-svex-env-equiv-congruence-on-y (implies (svex-env-equiv y y-equiv) (equal (svex-envs-check-ovtests-ok-rec keys x y overridekey-set) (svex-envs-check-ovtests-ok-rec keys x y-equiv overridekey-set))) :rule-classes :congruence)