Collects up all the selection expressions (bit-selects, part-selects, array indexing, and unresolved indexing) and returns them as a flat list of expressions.
(vl-expr-selects x) → selects
Note: we assume there are no nested selects.
Theorem:
(defthm return-type-of-vl-expr-selects.selects (b* ((?selects (vl-expr-selects x))) (vl-exprlist-p selects)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-exprlist-selects.selects (b* ((?selects (vl-exprlist-selects x))) (vl-exprlist-p selects)) :rule-classes :rewrite)
Theorem:
(defthm vl-expr-selects-of-vl-expr-fix-x (equal (vl-expr-selects (vl-expr-fix x)) (vl-expr-selects x)))
Theorem:
(defthm vl-exprlist-selects-of-vl-exprlist-fix-x (equal (vl-exprlist-selects (vl-exprlist-fix x)) (vl-exprlist-selects x)))
Theorem:
(defthm vl-expr-selects-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-expr-selects x) (vl-expr-selects x-equiv))) :rule-classes :congruence)
Theorem:
(defthm vl-exprlist-selects-vl-exprlist-equiv-congruence-on-x (implies (vl-exprlist-equiv x x-equiv) (equal (vl-exprlist-selects x) (vl-exprlist-selects x-equiv))) :rule-classes :congruence)