(svex-select-staticify-assignment x rhs lhs-var-value) → (mv static-lhs static-rhs)
Function:
(defun svex-select-staticify-assignment (x rhs lhs-var-value) (declare (xargs :guard (and (svex-select-p x) (svex-p rhs) (svex-p lhs-var-value)))) (let ((__function__ 'svex-select-staticify-assignment)) (declare (ignorable __function__)) (b* (((when (svex-select-staticp x)) (mv (svex-select-fix x) (svex-fix rhs))) ((svex-select-part x))) (svex-select-staticify-assignment x.subexp (svcall partinst x.lsb (svex-int x.width) (svex-select-to-svex-with-substitution x.subexp lhs-var-value) rhs) lhs-var-value))))
Theorem:
(defthm svex-select-p-of-svex-select-staticify-assignment.static-lhs (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (svex-select-p static-lhs)) :rule-classes :rewrite)
Theorem:
(defthm svex-p-of-svex-select-staticify-assignment.static-rhs (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (svex-p static-rhs)) :rule-classes :rewrite)
Theorem:
(defthm svex-select-staticify-assignment-lhs-staticp (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (svex-select-staticp static-lhs)))
Theorem:
(defthm svex-vars-of-svex-select-staticify-assignmane (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (implies (and (not (member v (svex-select-vars x))) (not (member v (svex-vars rhs))) (not (member v (svex-vars lhs-var-value)))) (not (member v (svex-vars static-rhs))))))
Theorem:
(defthm svex-select-vars-of-svex-select-staticify-assignment-lhs (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (implies (not (equal v (svex-select-inner-var x))) (not (member v (svex-select-vars static-lhs))))))
Theorem:
(defthm svex-select-inner-var-of-svex-select-staticify-assignment (b* (((mv ?static-lhs ?static-rhs) (svex-select-staticify-assignment x rhs lhs-var-value))) (equal (svex-select-inner-var static-lhs) (svex-select-inner-var x))))
Theorem:
(defthm svex-select-staticify-assignment-of-svex-select-fix-x (equal (svex-select-staticify-assignment (svex-select-fix x) rhs lhs-var-value) (svex-select-staticify-assignment x rhs lhs-var-value)))
Theorem:
(defthm svex-select-staticify-assignment-svex-select-equiv-congruence-on-x (implies (svex-select-equiv x x-equiv) (equal (svex-select-staticify-assignment x rhs lhs-var-value) (svex-select-staticify-assignment x-equiv rhs lhs-var-value))) :rule-classes :congruence)
Theorem:
(defthm svex-select-staticify-assignment-of-svex-fix-rhs (equal (svex-select-staticify-assignment x (svex-fix rhs) lhs-var-value) (svex-select-staticify-assignment x rhs lhs-var-value)))
Theorem:
(defthm svex-select-staticify-assignment-svex-equiv-congruence-on-rhs (implies (svex-equiv rhs rhs-equiv) (equal (svex-select-staticify-assignment x rhs lhs-var-value) (svex-select-staticify-assignment x rhs-equiv lhs-var-value))) :rule-classes :congruence)
Theorem:
(defthm svex-select-staticify-assignment-of-svex-fix-lhs-var-value (equal (svex-select-staticify-assignment x rhs (svex-fix lhs-var-value)) (svex-select-staticify-assignment x rhs lhs-var-value)))
Theorem:
(defthm svex-select-staticify-assignment-svex-equiv-congruence-on-lhs-var-value (implies (svex-equiv lhs-var-value lhs-var-value-equiv) (equal (svex-select-staticify-assignment x rhs lhs-var-value) (svex-select-staticify-assignment x rhs lhs-var-value-equiv))) :rule-classes :congruence)