(svex-override-lhrange x override-test offset override-val assigns) → assigns1
Function:
(defun svex-override-lhrange (x override-test offset override-val assigns) (declare (xargs :guard (and (lhrange-p x) (svex-p override-test) (natp offset) (svex-p override-val) (svex-alist-p assigns)))) (let ((__function__ 'svex-override-lhrange)) (declare (ignorable __function__)) (b* (((lhrange x) x) ((when (eq (lhatom-kind x.atom) :z)) (svex-alist-fix assigns)) ((lhatom-var x.atom) x.atom) (expr (or (svex-fastlookup x.atom.name assigns) (svex-quote (4vec-z)))) (last (svex-rsh (+ x.atom.rsh x.w) expr)) (mid (svex-call '?* (list (svex-zerox 1 override-test) (svex-rsh offset override-val) (svex-rsh x.atom.rsh expr)))) (newexpr (svex-concat x.atom.rsh expr (svex-concat x.w mid last)))) (hons-acons x.atom.name newexpr (svex-alist-fix assigns)))))
Theorem:
(defthm svex-alist-p-of-svex-override-lhrange (b* ((assigns1 (svex-override-lhrange x override-test offset override-val assigns))) (svex-alist-p assigns1)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-override-lhrange (b* ((assigns1 (svex-override-lhrange 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-lhrange (b* ((assigns1 (svex-override-lhrange x override-test offset override-val assigns))) (implies (and (not (member v (lhatom-vars (lhrange->atom x)))) (not (svex-lookup v assigns)) (svar-p v)) (not (svex-lookup v assigns1)))) :rule-classes :rewrite)
Theorem:
(defthm svex-override-lhrange-of-lhrange-fix-x (equal (svex-override-lhrange (lhrange-fix x) override-test offset override-val assigns) (svex-override-lhrange x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhrange-lhrange-equiv-congruence-on-x (implies (lhrange-equiv x x-equiv) (equal (svex-override-lhrange x override-test offset override-val assigns) (svex-override-lhrange x-equiv override-test offset override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhrange-of-svex-fix-override-test (equal (svex-override-lhrange x (svex-fix override-test) offset override-val assigns) (svex-override-lhrange x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhrange-svex-equiv-congruence-on-override-test (implies (svex-equiv override-test override-test-equiv) (equal (svex-override-lhrange x override-test offset override-val assigns) (svex-override-lhrange x override-test-equiv offset override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhrange-of-nfix-offset (equal (svex-override-lhrange x override-test (nfix offset) override-val assigns) (svex-override-lhrange x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhrange-nat-equiv-congruence-on-offset (implies (nat-equiv offset offset-equiv) (equal (svex-override-lhrange x override-test offset override-val assigns) (svex-override-lhrange x override-test offset-equiv override-val assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhrange-of-svex-fix-override-val (equal (svex-override-lhrange x override-test offset (svex-fix override-val) assigns) (svex-override-lhrange x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhrange-svex-equiv-congruence-on-override-val (implies (svex-equiv override-val override-val-equiv) (equal (svex-override-lhrange x override-test offset override-val assigns) (svex-override-lhrange x override-test offset override-val-equiv assigns))) :rule-classes :congruence)
Theorem:
(defthm svex-override-lhrange-of-svex-alist-fix-assigns (equal (svex-override-lhrange x override-test offset override-val (svex-alist-fix assigns)) (svex-override-lhrange x override-test offset override-val assigns)))
Theorem:
(defthm svex-override-lhrange-svex-alist-equiv-congruence-on-assigns (implies (svex-alist-equiv assigns assigns-equiv) (equal (svex-override-lhrange x override-test offset override-val assigns) (svex-override-lhrange x override-test offset override-val assigns-equiv))) :rule-classes :congruence)