(vl-expr->subexprs x) → subexprs
Function:
(defun vl-expr->subexprs (x) (declare (xargs :guard (vl-expr-p x))) (let ((__function__ 'vl-expr->subexprs)) (declare (ignorable __function__)) (vl-expr-case x :vl-special nil :vl-literal nil :vl-index (append-without-guard (vl-scopeexpr->subexprs x.scope) x.indices (vl-partselect->subexprs x.part)) :vl-unary (list x.arg) :vl-binary (list x.left x.right) :vl-qmark (list x.test x.then x.else) :vl-mintypmax (list x.min x.typ x.max) :vl-concat x.parts :vl-multiconcat (cons x.reps x.parts) :vl-bitselect-expr (list x.subexp x.index) :vl-partselect-expr (cons x.subexp (vl-partselect->subexprs x.part)) :vl-stream (append (vl-slicesize->subexprs x.size) (vl-streamexprlist->subexprs x.parts)) :vl-call (append (vl-scopeexpr->subexprs x.name) (vl-maybe-exprlist->subexprs x.plainargs) (vl-call-namedargs->subexprs x.namedargs)) :vl-cast (vl-casttype-case x.to :size (list x.to.size x.expr) :otherwise (list x.expr)) :vl-inside (cons x.elem (vl-valuerangelist->subexprs x.set)) :vl-tagged (and x.expr (list x.expr)) :vl-pattern (vl-assignpat->subexprs x.pat) :vl-eventexpr (vl-evatomlist->subexprs x.atoms))))
Theorem:
(defthm vl-exprlist-p-of-vl-expr->subexprs (b* ((subexprs (vl-expr->subexprs x))) (vl-exprlist-p subexprs)) :rule-classes :rewrite)
Theorem:
(defthm vl-exprlist-count-of-vl-expr->subexprs (b* ((?subexprs (vl-expr->subexprs x))) (< (vl-exprlist-count subexprs) (vl-expr-count x))) :rule-classes :linear)
Theorem:
(defthm vl-expr->subexprs-of-vl-expr-update-atts (equal (vl-expr->subexprs (vl-expr-update-atts x atts)) (vl-expr->subexprs x)))
Theorem:
(defthm vl-expr->subexprs-of-vl-expr-fix-x (equal (vl-expr->subexprs (vl-expr-fix x)) (vl-expr->subexprs x)))
Theorem:
(defthm vl-expr->subexprs-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-expr->subexprs x) (vl-expr->subexprs x-equiv))) :rule-classes :congruence)