(vl-lucid-resolved-slice->bits x ctx) → indices
Function:
(defun vl-lucid-resolved-slice->bits (x ctx) (declare (xargs :guard (and (vl-lucidocc-p x) (any-p ctx)))) (declare (xargs :guard (and (equal (vl-lucidocc-kind x) :slice) (vl-lucid-resolved-slice-p x)))) (let ((__function__ 'vl-lucid-resolved-slice->bits)) (declare (ignorable __function__)) (b* (((vl-lucidocc-slice x)) (msb (vl-resolved->val x.left)) (lsb (vl-resolved->val x.right)) (min (min msb lsb)) (max (max msb lsb)) ((unless (< max (+ min *vl-lucid-too-many-bits*))) (vl-cw-ps-seq (vl-cw "; ~a0: Whoops, range [~x1:~x2] has too many bits; fudging.~%" ctx msb lsb)) nil)) (ints-from min (+ 1 max)))))
Theorem:
(defthm return-type-of-vl-lucid-resolved-slice->bits (b* ((indices (vl-lucid-resolved-slice->bits x ctx))) (and (integer-listp indices) (setp indices))) :rule-classes :rewrite)
Theorem:
(defthm vl-lucid-resolved-slice->bits-of-vl-lucidocc-fix-x (equal (vl-lucid-resolved-slice->bits (vl-lucidocc-fix x) ctx) (vl-lucid-resolved-slice->bits x ctx)))
Theorem:
(defthm vl-lucid-resolved-slice->bits-vl-lucidocc-equiv-congruence-on-x (implies (vl-lucidocc-equiv x x-equiv) (equal (vl-lucid-resolved-slice->bits x ctx) (vl-lucid-resolved-slice->bits x-equiv ctx))) :rule-classes :congruence)
Theorem:
(defthm vl-lucid-resolved-slice->bits-of-identity-ctx (equal (vl-lucid-resolved-slice->bits x (identity ctx)) (vl-lucid-resolved-slice->bits x ctx)))
Theorem:
(defthm vl-lucid-resolved-slice->bits-equal-congruence-on-ctx (implies (equal ctx ctx-equiv) (equal (vl-lucid-resolved-slice->bits x ctx) (vl-lucid-resolved-slice->bits x ctx-equiv))) :rule-classes :congruence)