(call-graph-transitive-closure0 ident?s call-graph called steps) → called$
Function:
(defun call-graph-transitive-closure0 (ident?s call-graph called steps) (declare (type (unsigned-byte 60) steps)) (declare (xargs :guard (and (qualified-ident-option-setp ident?s) (call-graphp call-graph) (qualified-ident-option-setp called)))) (let ((__function__ 'call-graph-transitive-closure0)) (declare (ignorable __function__)) (b* (((when (or (int= 0 (mbe :logic (if (natp (acl2::the-fixnat steps)) (acl2::the-fixnat steps) 0) :exec (acl2::the-fixnat steps))) (emptyp ident?s))) (qualified-ident-option-set-fix called)) (ident? (head ident?s)) ((when (not ident?)) (call-graph-transitive-closure0 (tail ident?s) call-graph (insert nil called) (- steps 1))) (lookup (omap::assoc ident? call-graph)) (ident?s (if lookup (union (difference (cdr lookup) called) (tail ident?s)) (tail ident?s))) (called (if lookup (union (cdr lookup) called) called))) (call-graph-transitive-closure0 ident?s call-graph called (- steps 1)))))
Theorem:
(defthm qualified-ident-option-setp-of-call-graph-transitive-closure0 (b* ((called$ (call-graph-transitive-closure0 ident?s call-graph called steps))) (qualified-ident-option-setp called$)) :rule-classes :rewrite)