One single round of propagation.
(vl-propagation-round x limits) → new-x
Function:
(defun vl-propagation-round (x limits) (declare (xargs :guard (and (vl-module-p x) (propagate-limits-p limits)))) (let ((__function__ 'vl-propagation-round)) (declare (ignorable __function__)) (b* ((- (cw "Starting propagation round for ~s0~%" (vl-module->name x))) (sigma (propagation-sigma x limits)) ((unless sigma) x) ((with-fast sigma)) (propagate-names (alist-keys sigma)) (temp-assigns (remove-simple-assigns-to propagate-names (vl-module->assigns x))) (temp-mod (change-vl-module x :assigns temp-assigns))) (vl-module-subst temp-mod sigma))))
Theorem:
(defthm vl-module-p-of-vl-propagation-round (implies (force (vl-module-p x)) (b* ((new-x (vl-propagation-round x limits))) (vl-module-p new-x))) :rule-classes :rewrite)