For a list of assignments of driving expressions to LHSes, produce an alist mapping each variable from the LHSes to the full list of segment drivers for that variable.
(assigns->segment-drivers x) → segment-driver-map
Function:
(defun assigns->segment-drivers (x) (declare (xargs :guard (assigns-p x))) (let ((__function__ 'assigns->segment-drivers)) (declare (ignorable __function__)) (fast-alist-free (fast-alist-clean (assigns->segment-drivers-aux x nil)))))
Theorem:
(defthm segment-driver-map-p-of-assigns->segment-drivers (b* ((segment-driver-map (assigns->segment-drivers x))) (segment-driver-map-p segment-driver-map)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-assigns->segment-drivers (implies (not (member v (assigns-vars x))) (not (member v (segment-driver-map-vars (assigns->segment-drivers x))))))
Theorem:
(defthm hons-assoc-equal-of-assigns->segment-drivers (implies (not (member v (assigns-vars x))) (not (hons-assoc-equal v (assigns->segment-drivers x)))))
Theorem:
(defthm assigns->segment-drivers-of-assigns-fix-x (equal (assigns->segment-drivers (assigns-fix x)) (assigns->segment-drivers x)))
Theorem:
(defthm assigns->segment-drivers-assigns-equiv-congruence-on-x (implies (assigns-equiv x x-equiv) (equal (assigns->segment-drivers x) (assigns->segment-drivers x-equiv))) :rule-classes :congruence)