(netassigns->resolves x) → assigns
Function:
(defun netassigns->resolves (x) (declare (xargs :guard (netassigns-p x))) (let ((__function__ 'netassigns->resolves)) (declare (ignorable __function__)) (mbe :logic (b* ((x (netassigns-fix x)) ((when (atom x)) nil) ((cons name drivers) (car x)) (value (driverlist->svex (drivestrength-sort (driverlist-fix drivers))))) (cons (cons name value) (netassigns->resolves (cdr x)))) :exec (if (atom x) nil (acl2::with-local-nrev (netassigns->resolves-nrev x acl2::nrev))))))
Theorem:
(defthm svex-alist-p-of-netassigns->resolves (b* ((assigns (netassigns->resolves x))) (svex-alist-p assigns)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-drivestrength-insert (implies (and (not (member v (driverlist-vars x))) (not (member v (svex-vars (driver->value elt))))) (not (member v (driverlist-vars (drivestrength-insert elt x))))))
Theorem:
(defthm vars-of-drivestrength-insertsort (implies (not (member v (driverlist-vars x))) (not (member v (driverlist-vars (drivestrength-insertsort x))))))
Theorem:
(defthm vars-of-netassigns->resolves (implies (not (member v (netassigns-vars x))) (and (not (member v (svex-alist-keys (netassigns->resolves x)))) (not (member v (svex-alist-vars (netassigns->resolves x)))))))
Theorem:
(defthm svex-lookup-under-iff-of-netassigns->resolves (b* ((?assigns (netassigns->resolves x))) (iff (svex-lookup v assigns) (hons-assoc-equal (svar-fix v) (netassigns-fix x)))))
Theorem:
(defthm netassigns->resolves-of-netassigns-fix-x (equal (netassigns->resolves (netassigns-fix x)) (netassigns->resolves x)))
Theorem:
(defthm netassigns->resolves-netassigns-equiv-congruence-on-x (implies (netassigns-equiv x x-equiv) (equal (netassigns->resolves x) (netassigns->resolves x-equiv))) :rule-classes :congruence)