(svex-apply-overrides x assigns) → assigns1
Function:
(defun svex-apply-overrides (x assigns) (declare (xargs :guard (and (lhs-overridelist-p x) (svex-alist-p assigns)))) (let ((__function__ 'svex-apply-overrides)) (declare (ignorable __function__)) (b* (((when (atom x)) (svex-alist-fix assigns)) (assigns (svex-apply-overrides (cdr x) assigns)) ((lhs-override xf) (car x))) (svex-override-lhs xf.lhs xf.test 0 xf.val assigns))))
Theorem:
(defthm svex-alist-p-of-svex-apply-overrides (b* ((assigns1 (svex-apply-overrides x assigns))) (svex-alist-p assigns1)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-apply-overrides (b* ((assigns1 (svex-apply-overrides x assigns))) (implies (and (not (member v (lhs-overridelist-vars x))) (not (member v (svex-alist-vars assigns)))) (not (member v (svex-alist-vars assigns1))))) :rule-classes :rewrite)
Theorem:
(defthm lookup-of-svex-apply-overrides (b* ((assigns1 (svex-apply-overrides x assigns))) (implies (and (not (member v (lhs-overridelist-keys x))) (not (svex-lookup v assigns)) (svar-p v)) (not (svex-lookup v assigns1)))) :rule-classes :rewrite)
Theorem:
(defthm svex-apply-overrides-of-lhs-overridelist-fix-x (equal (svex-apply-overrides (lhs-overridelist-fix x) assigns) (svex-apply-overrides x assigns)))
Theorem:
(defthm svex-apply-overrides-lhs-overridelist-equiv-congruence-on-x (implies (lhs-overridelist-equiv x x-equiv) (equal (svex-apply-overrides x assigns) (svex-apply-overrides x-equiv assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-apply-overrides-of-svex-alist-fix-assigns (equal (svex-apply-overrides x (svex-alist-fix assigns)) (svex-apply-overrides x assigns)))
Theorem:
(defthm svex-apply-overrides-svex-alist-equiv-congruence-on-assigns (implies (svex-alist-equiv assigns assigns-equiv) (equal (svex-apply-overrides x assigns) (svex-apply-overrides x assigns-equiv))) :rule-classes :congruence)