Top-level function for propagating-errors. We identify any
faulty design elements in a
(vl-design-propagate-errors good bad suppress-fatals) → (mv good-- bad++)
Function:
(defun vl-design-propagate-errors (good bad suppress-fatals) (declare (xargs :guard (and (vl-design-p good) (vl-design-p bad) (symbol-listp suppress-fatals)))) (let ((__function__ 'vl-design-propagate-errors)) (declare (ignorable __function__)) (b* ((zombies (vl-design-zombies good suppress-fatals)) ((unless zombies) (mv (vl-design-fix good) (vl-design-fix bad))) (blame-alist (vl-blame-alist zombies good)) (reportcard (vl-blame-alist-to-reportcard blame-alist nil)) (good (vl-apply-reportcard good reportcard))) (vl-hierarchy-free) (vl-design-filter-zombies good bad suppress-fatals))))
Theorem:
(defthm vl-design-p-of-vl-design-propagate-errors.good-- (b* (((mv ?good-- ?bad++) (vl-design-propagate-errors good bad suppress-fatals))) (vl-design-p good--)) :rule-classes :rewrite)
Theorem:
(defthm vl-design-p-of-vl-design-propagate-errors.bad++ (b* (((mv ?good-- ?bad++) (vl-design-propagate-errors good bad suppress-fatals))) (vl-design-p bad++)) :rule-classes :rewrite)
Theorem:
(defthm vl-design-propagate-errors-of-vl-design-fix-good (equal (vl-design-propagate-errors (vl-design-fix good) bad suppress-fatals) (vl-design-propagate-errors good bad suppress-fatals)))
Theorem:
(defthm vl-design-propagate-errors-vl-design-equiv-congruence-on-good (implies (vl-design-equiv good good-equiv) (equal (vl-design-propagate-errors good bad suppress-fatals) (vl-design-propagate-errors good-equiv bad suppress-fatals))) :rule-classes :congruence)
Theorem:
(defthm vl-design-propagate-errors-of-vl-design-fix-bad (equal (vl-design-propagate-errors good (vl-design-fix bad) suppress-fatals) (vl-design-propagate-errors good bad suppress-fatals)))
Theorem:
(defthm vl-design-propagate-errors-vl-design-equiv-congruence-on-bad (implies (vl-design-equiv bad bad-equiv) (equal (vl-design-propagate-errors good bad suppress-fatals) (vl-design-propagate-errors good bad-equiv suppress-fatals))) :rule-classes :congruence)
Theorem:
(defthm vl-design-propagate-errors-of-symbol-list-fix-suppress-fatals (equal (vl-design-propagate-errors good bad (acl2::symbol-list-fix suppress-fatals)) (vl-design-propagate-errors good bad suppress-fatals)))
Theorem:
(defthm vl-design-propagate-errors-symbol-list-equiv-congruence-on-suppress-fatals (implies (acl2::symbol-list-equiv suppress-fatals suppress-fatals-equiv) (equal (vl-design-propagate-errors good bad suppress-fatals) (vl-design-propagate-errors good bad suppress-fatals-equiv))) :rule-classes :congruence)