(svex-multiconcat n x widths) → concat
Function:
(defun svex-multiconcat (n x widths) (declare (xargs :guard (and (natp n) (sv::svexlist-p x) (nat-listp widths)))) (declare (xargs :guard (eql (len x) (len widths)))) (let ((__function__ 'svex-multiconcat)) (declare (ignorable __function__)) (svex-repeat n (sum-nats widths) (svex-concat-list widths x))))
Theorem:
(defthm svex-p-of-svex-multiconcat (b* ((concat (svex-multiconcat n x widths))) (sv::svex-p concat)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-multiconcat (b* ((?concat (svex-multiconcat n x widths))) (implies (not (member v (sv::svexlist-vars x))) (not (member v (sv::svex-vars concat))))))
Theorem:
(defthm svex-multiconcat-of-nfix-n (equal (svex-multiconcat (nfix n) x widths) (svex-multiconcat n x widths)))
Theorem:
(defthm svex-multiconcat-nat-equiv-congruence-on-n (implies (acl2::nat-equiv n n-equiv) (equal (svex-multiconcat n x widths) (svex-multiconcat n-equiv x widths))) :rule-classes :congruence)
Theorem:
(defthm svex-multiconcat-of-svexlist-fix-x (equal (svex-multiconcat n (sv::svexlist-fix x) widths) (svex-multiconcat n x widths)))
Theorem:
(defthm svex-multiconcat-svexlist-equiv-congruence-on-x (implies (sv::svexlist-equiv x x-equiv) (equal (svex-multiconcat n x widths) (svex-multiconcat n x-equiv widths))) :rule-classes :congruence)