(svex-repeat n width x) → concat
Function:
(defun svex-repeat (n width x) (declare (xargs :guard (and (natp n) (natp width) (sv::svex-p x)))) (let ((__function__ 'svex-repeat)) (declare (ignorable __function__)) (if (zp n) (svex-x) (svex-repeat-aux (1- n) width x x))))
Theorem:
(defthm svex-p-of-svex-repeat (b* ((concat (svex-repeat n width x))) (sv::svex-p concat)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-repeat (b* ((?concat (svex-repeat n width x))) (implies (not (member v (sv::svex-vars x))) (not (member v (sv::svex-vars concat))))))
Theorem:
(defthm svex-repeat-of-nfix-n (equal (svex-repeat (nfix n) width x) (svex-repeat n width x)))
Theorem:
(defthm svex-repeat-nat-equiv-congruence-on-n (implies (acl2::nat-equiv n n-equiv) (equal (svex-repeat n width x) (svex-repeat n-equiv width x))) :rule-classes :congruence)
Theorem:
(defthm svex-repeat-of-nfix-width (equal (svex-repeat n (nfix width) x) (svex-repeat n width x)))
Theorem:
(defthm svex-repeat-nat-equiv-congruence-on-width (implies (acl2::nat-equiv width width-equiv) (equal (svex-repeat n width x) (svex-repeat n width-equiv x))) :rule-classes :congruence)
Theorem:
(defthm svex-repeat-of-svex-fix-x (equal (svex-repeat n width (sv::svex-fix x)) (svex-repeat n width x)))
Theorem:
(defthm svex-repeat-svex-equiv-congruence-on-x (implies (sv::svex-equiv x x-equiv) (equal (svex-repeat n width x) (svex-repeat n width x-equiv))) :rule-classes :congruence)