Build an alist describing which modules are really to blame for their dependents being thrown away.
(vl-blame-alist bads design) → blame-alist
Function:
(defun vl-blame-alist (bads design) (declare (xargs :guard (and (string-listp bads) (vl-design-p design)))) (let ((__function__ 'vl-blame-alist)) (declare (ignorable __function__)) (b* ((bads (mergesort (string-list-fix bads))) (design (vl-design-fix design))) (fast-alist-clean (vl-blame-alist-aux2 bads design nil)))))
Theorem:
(defthm vl-blamealist-p-of-vl-blame-alist (b* ((blame-alist (vl-blame-alist bads design))) (vl-blamealist-p blame-alist)) :rule-classes :rewrite)
Theorem:
(defthm vl-blame-alist-of-string-list-fix-bads (equal (vl-blame-alist (string-list-fix bads) design) (vl-blame-alist bads design)))
Theorem:
(defthm vl-blame-alist-string-list-equiv-congruence-on-bads (implies (str::string-list-equiv bads bads-equiv) (equal (vl-blame-alist bads design) (vl-blame-alist bads-equiv design))) :rule-classes :congruence)
Theorem:
(defthm vl-blame-alist-of-vl-design-fix-design (equal (vl-blame-alist bads (vl-design-fix design)) (vl-blame-alist bads design)))
Theorem:
(defthm vl-blame-alist-vl-design-equiv-congruence-on-design (implies (vl-design-equiv design design-equiv) (equal (vl-blame-alist bads design) (vl-blame-alist bads design-equiv))) :rule-classes :congruence)