Explode a
(vl-constint->msb-bits x) → bits
We require that
Function:
(defun vl-constint->msb-bits (x) (declare (xargs :guard (vl-expr-p x))) (declare (xargs :guard (and (vl-atom-p x) (vl-atom-welltyped-p x) (vl-fast-constint-p (vl-atom->guts x))))) (let ((__function__ 'vl-constint->msb-bits)) (declare (ignorable __function__)) (vl-constint-msb-bits-aux (vl-atom->finalwidth x) (vl-constint->value (vl-atom->guts x)) nil)))
Theorem:
(defthm vl-bitlist-p-of-vl-constint->msb-bits (b* ((bits (vl-constint->msb-bits x))) (vl-bitlist-p bits)) :rule-classes :rewrite)
Theorem:
(defthm true-listp-of-vl-constint->msb-bits (true-listp (vl-constint->msb-bits x)) :rule-classes :type-prescription)
Theorem:
(defthm len-of-vl-constint->msb-bits (equal (len (vl-constint->msb-bits x)) (nfix (vl-atom->finalwidth x))))
Theorem:
(defthm vl-constint->msb-bits-of-vl-expr-fix-x (equal (vl-constint->msb-bits (vl-expr-fix x)) (vl-constint->msb-bits x)))
Theorem:
(defthm vl-constint->msb-bits-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-constint->msb-bits x) (vl-constint->msb-bits x-equiv))) :rule-classes :congruence)