(svex-select-to-svex-with-substitution x subst) → svex-x
Function:
(defun svex-select-to-svex-with-substitution (x subst) (declare (xargs :guard (and (svex-select-p x) (svex-p subst)))) (let ((__function__ 'svex-select-to-svex-with-substitution)) (declare (ignorable __function__)) (svex-select-case x :var (svex-fix subst) :part (svcall partsel x.lsb (svex-int x.width) (svex-concat (svex-select->width x.subexp) (svex-select-to-svex-with-substitution x.subexp subst) (svex-x))))))
Theorem:
(defthm svex-p-of-svex-select-to-svex-with-substitution (b* ((svex-x (svex-select-to-svex-with-substitution x subst))) (svex-p svex-x)) :rule-classes :rewrite)
Theorem:
(defthm svex-select-to-svex-with-substitution-of-svex-select-fix-x (equal (svex-select-to-svex-with-substitution (svex-select-fix x) subst) (svex-select-to-svex-with-substitution x subst)))
Theorem:
(defthm svex-select-to-svex-with-substitution-svex-select-equiv-congruence-on-x (implies (svex-select-equiv x x-equiv) (equal (svex-select-to-svex-with-substitution x subst) (svex-select-to-svex-with-substitution x-equiv subst))) :rule-classes :congruence)
Theorem:
(defthm svex-select-to-svex-with-substitution-of-svex-fix-subst (equal (svex-select-to-svex-with-substitution x (svex-fix subst)) (svex-select-to-svex-with-substitution x subst)))
Theorem:
(defthm svex-select-to-svex-with-substitution-svex-equiv-congruence-on-subst (implies (svex-equiv subst subst-equiv) (equal (svex-select-to-svex-with-substitution x subst) (svex-select-to-svex-with-substitution x subst-equiv))) :rule-classes :congruence)