(svex-override-lhs x override-test offset override-val assigns) → assigns1
Function:
(defun svex-override-lhs (x override-test offset override-val assigns) (declare (xargs :guard (and (lhs-p x) (svex-p override-test) (natp offset) (svex-p override-val) (svex-alist-p assigns)))) (let ((__function__ 'svex-override-lhs)) (declare (ignorable __function__)) (b* (((mv first rest) (lhs-decomp x)) ((unless first) (svex-alist-fix assigns)) ((lhrange first) first) (assigns (svex-override-lhs rest override-test (+ (lnfix offset) first.w) override-val assigns))) (svex-override-lhrange first override-test offset override-val assigns))))
Theorem:
(defthm svex-alist-p-of-svex-override-lhs (b* ((assigns1 (svex-override-lhs x override-test offset override-val assigns))) (svex-alist-p assigns1)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-override-lhs (b* ((assigns1 (svex-override-lhs x override-test offset override-val assigns))) (implies (and (not (member v (svex-alist-vars assigns))) (not (member v (svex-vars override-test))) (not (member v (svex-vars override-val)))) (not (member v (svex-alist-vars assigns1))))) :rule-classes :rewrite)
Theorem:
(defthm lookup-of-svex-override-lhs (b* ((assigns1 (svex-override-lhs x override-test offset override-val assigns))) (implies (and (not (member v (lhs-vars x))) (not (svex-lookup v assigns)) (svar-p v)) (not (svex-lookup v assigns1)))) :rule-classes :rewrite)
Theorem:
(defthm svex-override-lhs-of-lhs-fix-x (equal (svex-override-lhs (lhs-fix x) override-test offset override-val assigns) (svex-override-lhs x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhs-lhs-equiv-congruence-on-x (implies (lhs-equiv x x-equiv) (equal (svex-override-lhs x override-test offset override-val assigns) (svex-override-lhs x-equiv override-test offset override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhs-of-svex-fix-override-test (equal (svex-override-lhs x (svex-fix override-test) offset override-val assigns) (svex-override-lhs x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhs-svex-equiv-congruence-on-override-test (implies (svex-equiv override-test override-test-equiv) (equal (svex-override-lhs x override-test offset override-val assigns) (svex-override-lhs x override-test-equiv offset override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhs-of-nfix-offset (equal (svex-override-lhs x override-test (nfix offset) override-val assigns) (svex-override-lhs x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhs-nat-equiv-congruence-on-offset (implies (nat-equiv offset offset-equiv) (equal (svex-override-lhs x override-test offset override-val assigns) (svex-override-lhs x override-test offset-equiv override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhs-of-svex-fix-override-val (equal (svex-override-lhs x override-test offset (svex-fix override-val) assigns) (svex-override-lhs x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhs-svex-equiv-congruence-on-override-val (implies (svex-equiv override-val override-val-equiv) (equal (svex-override-lhs x override-test offset override-val assigns) (svex-override-lhs x override-test offset override-val-equiv assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhs-of-svex-alist-fix-assigns (equal (svex-override-lhs x override-test offset override-val (svex-alist-fix assigns)) (svex-override-lhs x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhs-svex-alist-equiv-congruence-on-assigns (implies (svex-alist-equiv assigns assigns-equiv) (equal (svex-override-lhs x override-test offset override-val assigns) (svex-override-lhs x override-test offset override-val assigns-equiv))) :rule-classes :congruence)