(vl-selfassign-bits name low high) → bits
Function:
(defun vl-selfassign-bits (name low high) (declare (xargs :guard (and (stringp name) (integerp low) (integerp high)))) (declare (xargs :guard (<= low high))) (let ((__function__ 'vl-selfassign-bits)) (declare (ignorable __function__)) (if (mbe :logic (zp (- (ifix high) (ifix low))) :exec (eql high low)) (list (vl-selfassign-bit name low)) (cons (vl-selfassign-bit name low) (vl-selfassign-bits name (+ (lifix low) 1) high)))))
Theorem:
(defthm string-listp-of-vl-selfassign-bits (b* ((bits (vl-selfassign-bits name low high))) (string-listp bits)) :rule-classes :rewrite)
Theorem:
(defthm vl-selfassign-bits-of-str-fix-name (equal (vl-selfassign-bits (str-fix name) low high) (vl-selfassign-bits name low high)))
Theorem:
(defthm vl-selfassign-bits-streqv-congruence-on-name (implies (streqv name name-equiv) (equal (vl-selfassign-bits name low high) (vl-selfassign-bits name-equiv low high))) :rule-classes :congruence)
Theorem:
(defthm vl-selfassign-bits-of-ifix-low (equal (vl-selfassign-bits name (ifix low) high) (vl-selfassign-bits name low high)))
Theorem:
(defthm vl-selfassign-bits-int-equiv-congruence-on-low (implies (acl2::int-equiv low low-equiv) (equal (vl-selfassign-bits name low high) (vl-selfassign-bits name low-equiv high))) :rule-classes :congruence)
Theorem:
(defthm vl-selfassign-bits-of-ifix-high (equal (vl-selfassign-bits name low (ifix high)) (vl-selfassign-bits name low high)))
Theorem:
(defthm vl-selfassign-bits-int-equiv-congruence-on-high (implies (acl2::int-equiv high high-equiv) (equal (vl-selfassign-bits name low high) (vl-selfassign-bits name low high-equiv))) :rule-classes :congruence)