(vl-design-bindelim-pass2 x delta) → new-x
Function:
(defun vl-design-bindelim-pass2 (x delta) (declare (xargs :guard (and (vl-design-p x) (vl-binddelta-p delta)))) (let ((__function__ 'vl-design-bindelim-pass2)) (declare (ignorable __function__)) (b* (((vl-design x) (vl-design-fix x)) (delta (vl-binddelta-fix delta)) (new-mods (vl-modulelist-apply-binddelta x.mods delta)) (new-ifs (vl-interfacelist-apply-binddelta x.interfaces delta)) (ok-names (union (mergesort (vl-interfacelist->names x.interfaces)) (mergesort (vl-modulelist->names x.mods)))) (actual-names (mergesort (alist-keys delta))) (bad-names (difference actual-names ok-names)) (bad-delta (acl2::fal-extract bad-names delta)) (warnings (vl-warn-binddelta-undefined bad-delta x.warnings))) (fast-alist-free bad-delta) (change-vl-design x :mods new-mods :interfaces new-ifs :warnings warnings))))
Theorem:
(defthm vl-design-p-of-vl-design-bindelim-pass2 (b* ((new-x (vl-design-bindelim-pass2 x delta))) (vl-design-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm vl-design-bindelim-pass2-of-vl-design-fix-x (equal (vl-design-bindelim-pass2 (vl-design-fix x) delta) (vl-design-bindelim-pass2 x delta)))
Theorem:
(defthm vl-design-bindelim-pass2-vl-design-equiv-congruence-on-x (implies (vl-design-equiv x x-equiv) (equal (vl-design-bindelim-pass2 x delta) (vl-design-bindelim-pass2 x-equiv delta))) :rule-classes :congruence)
Theorem:
(defthm vl-design-bindelim-pass2-of-vl-binddelta-fix-delta (equal (vl-design-bindelim-pass2 x (vl-binddelta-fix delta)) (vl-design-bindelim-pass2 x delta)))
Theorem:
(defthm vl-design-bindelim-pass2-vl-binddelta-equiv-congruence-on-delta (implies (vl-binddelta-equiv delta delta-equiv) (equal (vl-design-bindelim-pass2 x delta) (vl-design-bindelim-pass2 x delta-equiv))) :rule-classes :congruence)