(svexlist-mask-alist/toposort x) → (mv mask-al toposort)
Function:
(defun svexlist-mask-alist/toposort (x) (declare (xargs :guard (svexlist-p x))) (let ((__function__ 'svexlist-mask-alist/toposort)) (declare (ignorable __function__)) (b* (((mv toposort al) (cwtime (svexlist-toposort x nil nil) :mintime 1)) (- (fast-alist-free al)) (mask-al (cwtime (svexlist-compute-masks toposort (svexlist-mask-acons x -1 nil)) :mintime 1))) (mv mask-al toposort))))
Theorem:
(defthm svex-mask-alist-p-of-svexlist-mask-alist/toposort.mask-al (b* (((mv ?mask-al ?toposort) (svexlist-mask-alist/toposort x))) (svex-mask-alist-p mask-al)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svexlist-mask-alist/toposort.toposort (b* (((mv ?mask-al ?toposort) (svexlist-mask-alist/toposort x))) (and (svexlist-p toposort) (svexlist-toposort-p toposort))) :rule-classes :rewrite)
Theorem:
(defthm svexlist-mask-alist/toposort-of-svexlist-fix-x (equal (svexlist-mask-alist/toposort (svexlist-fix x)) (svexlist-mask-alist/toposort x)))
Theorem:
(defthm svexlist-mask-alist/toposort-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (svexlist-mask-alist/toposort x) (svexlist-mask-alist/toposort x-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-mask-alist/toposort-complete (b* (((mv ?mask-al ?toposort) (svexlist-mask-alist/toposort x))) (svex-mask-alist-complete mask-al)))
Theorem:
(defthm svexlist-mask-alist/toposort-lookup (b* (((mv ?mask-al ?toposort) (svexlist-mask-alist/toposort x))) (implies (member-equal (svex-fix y) (svexlist-fix x)) (equal (svex-mask-lookup y mask-al) -1))))
Theorem:
(defthm svex-argmasks-lookup-of-svexlist-mask-alist/toposort (b* (((mv ?mask-al ?toposort) (svexlist-mask-alist/toposort x))) (implies (subsetp-equal (svexlist-fix y) (svexlist-fix x)) (equal (svex-argmasks-lookup y mask-al) (replicate (len y) -1)))))