(svex-concat-list-aux widths x acc) → concat
Function:
(defun svex-concat-list-aux (widths x acc) (declare (xargs :guard (and (nat-listp widths) (sv::svexlist-p x) (sv::svex-p acc)))) (declare (xargs :guard (eql (len widths) (len x)))) (let ((__function__ 'svex-concat-list-aux)) (declare (ignorable __function__)) (if (atom x) (sv::svex-fix acc) (svex-concat-list-aux (cdr widths) (cdr x) (sv::svex-concat (car widths) (car x) acc)))))
Theorem:
(defthm svex-p-of-svex-concat-list-aux (b* ((concat (svex-concat-list-aux widths x acc))) (sv::svex-p concat)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svex-concat-list-aux (implies (and (not (member v (sv::svexlist-vars x))) (not (member v (sv::svex-vars acc)))) (not (member v (sv::svex-vars (svex-concat-list-aux widths x acc))))))
Theorem:
(defthm svex-concat-list-aux-of-svexlist-fix-x (equal (svex-concat-list-aux widths (sv::svexlist-fix x) acc) (svex-concat-list-aux widths x acc)))
Theorem:
(defthm svex-concat-list-aux-svexlist-equiv-congruence-on-x (implies (sv::svexlist-equiv x x-equiv) (equal (svex-concat-list-aux widths x acc) (svex-concat-list-aux widths x-equiv acc))) :rule-classes :congruence)
Theorem:
(defthm svex-concat-list-aux-of-svex-fix-acc (equal (svex-concat-list-aux widths x (sv::svex-fix acc)) (svex-concat-list-aux widths x acc)))
Theorem:
(defthm svex-concat-list-aux-svex-equiv-congruence-on-acc (implies (sv::svex-equiv acc acc-equiv) (equal (svex-concat-list-aux widths x acc) (svex-concat-list-aux widths x acc-equiv))) :rule-classes :congruence)