(svtv-override-triple-relevant-vars triple spec) → vars
Function:
(defun svtv-override-triple-relevant-vars (triple spec) (declare (xargs :guard (and (svtv-override-triple-p triple) (svex-env-p spec)))) (let ((__function__ 'svtv-override-triple-relevant-vars)) (declare (ignorable __function__)) (b* (((svtv-override-triple triple))) (if (equal (svex-eval triple.val spec) (4vec-x)) (svex-vars triple.test) (append (svex-vars triple.test) (svex-vars triple.val))))))
Theorem:
(defthm svarlist-p-of-svtv-override-triple-relevant-vars (b* ((vars (svtv-override-triple-relevant-vars triple spec))) (svarlist-p vars)) :rule-classes :rewrite)
Theorem:
(defthm svtv-override-triple-relevant-vars-correct (implies (subsetp-equal (svtv-override-triple-relevant-vars triple spec) (svarlist-fix vars)) (equal (svtv-override-triple-envs-match triple (svex-env-reduce vars env) spec) (svtv-override-triple-envs-match triple env spec))))
Theorem:
(defthm svtv-override-triple-relevant-vars-of-svtv-override-triple-fix-triple (equal (svtv-override-triple-relevant-vars (svtv-override-triple-fix triple) spec) (svtv-override-triple-relevant-vars triple spec)))
Theorem:
(defthm svtv-override-triple-relevant-vars-svtv-override-triple-equiv-congruence-on-triple (implies (svtv-override-triple-equiv triple triple-equiv) (equal (svtv-override-triple-relevant-vars triple spec) (svtv-override-triple-relevant-vars triple-equiv spec))) :rule-classes :congruence)
Theorem:
(defthm svtv-override-triple-relevant-vars-of-svex-env-fix-spec (equal (svtv-override-triple-relevant-vars triple (svex-env-fix spec)) (svtv-override-triple-relevant-vars triple spec)))
Theorem:
(defthm svtv-override-triple-relevant-vars-svex-env-equiv-congruence-on-spec (implies (svex-env-equiv spec spec-equiv) (equal (svtv-override-triple-relevant-vars triple spec) (svtv-override-triple-relevant-vars triple spec-equiv))) :rule-classes :congruence)