Gathers the names of all design elements that particular descriptions transitively depend on.
(vl-necessary-elements-transitive superiors design) → subs
Function:
(defun vl-necessary-elements-transitive (superiors design) (declare (xargs :guard (and (string-listp superiors) (vl-design-p design)))) (let ((__function__ 'vl-necessary-elements-transitive)) (declare (ignorable __function__)) (depgraph::transdeps (string-list-fix superiors) (vl-design-downgraph design))))
Theorem:
(defthm return-type-of-vl-necessary-elements-transitive (b* ((subs (vl-necessary-elements-transitive superiors design))) (and (string-listp subs) (setp subs))) :rule-classes :rewrite)
Theorem:
(defthm vl-necessary-elements-transitive-of-string-list-fix-superiors (equal (vl-necessary-elements-transitive (string-list-fix superiors) design) (vl-necessary-elements-transitive superiors design)))
Theorem:
(defthm vl-necessary-elements-transitive-string-list-equiv-congruence-on-superiors (implies (str::string-list-equiv superiors superiors-equiv) (equal (vl-necessary-elements-transitive superiors design) (vl-necessary-elements-transitive superiors-equiv design))) :rule-classes :congruence)
Theorem:
(defthm vl-necessary-elements-transitive-of-vl-design-fix-design (equal (vl-necessary-elements-transitive superiors (vl-design-fix design)) (vl-necessary-elements-transitive superiors design)))
Theorem:
(defthm vl-necessary-elements-transitive-vl-design-equiv-congruence-on-design (implies (vl-design-equiv design design-equiv) (equal (vl-necessary-elements-transitive superiors design) (vl-necessary-elements-transitive superiors design-equiv))) :rule-classes :congruence)