Function:
(defun svex-const-concat-args (x) (declare (xargs :guard (svex-p x))) (declare (xargs :guard (svex-is-const-concat x))) (let ((__function__ 'svex-const-concat-args)) (declare (ignorable __function__)) (b* (((svex-call x))) (mv (svex-quote->val (mbe :logic (svex-fix (nth 0 x.args)) :exec (first x.args))) (mbe :logic (svex-fix (nth 1 x.args)) :exec (second x.args)) (mbe :logic (svex-fix (nth 2 x.args)) :exec (third x.args))))))
Theorem:
(defthm 4vec-p-of-svex-const-concat-args.width (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (4vec-p width)) :rule-classes :rewrite)
Theorem:
(defthm svex-p-of-svex-const-concat-args.lsbs (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (svex-p lsbs)) :rule-classes :rewrite)
Theorem:
(defthm svex-p-of-svex-const-concat-args.msbs (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (svex-p msbs)) :rule-classes :rewrite)
Theorem:
(defthm svex-const-concat-args-correct-rw (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (implies (svex-is-const-concat x) (equal (svex-eval x env) (4vec-concat width (svex-eval lsbs env) (svex-eval msbs env))))))
Theorem:
(defthm svex-count-of-svex-const-concat-args-lsbs (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (implies (svex-is-const-concat x) (< (svex-count lsbs) (svex-count x)))) :rule-classes :linear)
Theorem:
(defthm svex-count-of-svex-const-concat-args-msbs (b* (((mv ?width ?lsbs ?msbs) (svex-const-concat-args x))) (implies (svex-is-const-concat x) (< (svex-count msbs) (svex-count x)))) :rule-classes :linear)
Theorem:
(defthm svex-const-concat-args-of-svex-fix-x (equal (svex-const-concat-args (svex-fix x)) (svex-const-concat-args x)))
Theorem:
(defthm svex-const-concat-args-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-const-concat-args x) (svex-const-concat-args x-equiv))) :rule-classes :congruence)