Check whether an expression is simple enough to propagate.
(propagate-expr-limits-okp x limits) → okp
Function:
(defun propagate-expr-limits-okp (x limits) (declare (xargs :guard (and (vl-expr-p x) (propagate-limits-p limits)))) (let ((__function__ 'propagate-expr-limits-okp)) (declare (ignorable __function__)) (b* (((propagate-limits limits) limits) ((unless limits.max-ops) t) (ops (vl-expr-ops x)) (ops (set-difference-eq ops '(:vl-bitselect :vl-partselect-colon)))) (< (len ops) limits.max-ops))))
Theorem:
(defthm booleanp-of-propagate-expr-limits-okp (b* ((okp (propagate-expr-limits-okp x limits))) (booleanp okp)) :rule-classes :type-prescription)