Collect all assignsment statements from an edgesynth statement.
(vl-edgesynth-stmt-assigns x) → assigns
Theorem:
(defthm return-type-of-vl-edgesynth-stmt-assigns.assigns (implies (and (force (vl-stmt-p x)) (force (vl-edgesynth-stmt-p x))) (b* ((?assigns (vl-edgesynth-stmt-assigns x))) (and (vl-stmtlist-p assigns) (vl-assignstmtlist-p assigns) (let ((lhses (vl-assignstmtlist->lhses assigns))) (and (vl-idexprlist-p lhses) (pos-listp (vl-exprlist->finalwidths lhses)) (not (member nil (vl-exprlist->finaltypes lhses)))))))) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-edgesynth-stmtlist-assigns.assigns (implies (and (force (vl-stmtlist-p x)) (force (vl-edgesynth-stmtlist-p x))) (b* ((?assigns (vl-edgesynth-stmtlist-assigns x))) (and (vl-stmtlist-p assigns) (vl-assignstmtlist-p assigns) (let ((lhses (vl-assignstmtlist->lhses assigns))) (and (vl-idexprlist-p lhses) (pos-listp (vl-exprlist->finalwidths lhses)) (not (member nil (vl-exprlist->finaltypes lhses)))))))) :rule-classes :rewrite)