(vl-elabscopes-traverse trav scopes &key (allow-empty 'nil)) → new-scopes
Function:
(defun vl-elabscopes-traverse-fn (trav scopes allow-empty) (declare (xargs :guard (and (vl-elabtraversal-p trav) (vl-elabscopes-p scopes)))) (let ((__function__ 'vl-elabscopes-traverse)) (declare (ignorable __function__)) (if (atom trav) (vl-elabscopes-fix scopes) (vl-elabscopes-traverse (cdr trav) (vl-elabscopes-do-instruction (car trav) scopes :allow-empty allow-empty) :allow-empty allow-empty))))
Theorem:
(defthm vl-elabscopes-p-of-vl-elabscopes-traverse (b* ((new-scopes (vl-elabscopes-traverse-fn trav scopes allow-empty))) (vl-elabscopes-p new-scopes)) :rule-classes :rewrite)
Theorem:
(defthm vl-elabscopes-traverse-fn-of-vl-elabtraversal-fix-trav (equal (vl-elabscopes-traverse-fn (vl-elabtraversal-fix trav) scopes allow-empty) (vl-elabscopes-traverse-fn trav scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-traverse-fn-vl-elabtraversal-equiv-congruence-on-trav (implies (vl-elabtraversal-equiv trav trav-equiv) (equal (vl-elabscopes-traverse-fn trav scopes allow-empty) (vl-elabscopes-traverse-fn trav-equiv scopes allow-empty))) :rule-classes :congruence)
Theorem:
(defthm vl-elabscopes-traverse-fn-of-vl-elabscopes-fix-scopes (equal (vl-elabscopes-traverse-fn trav (vl-elabscopes-fix scopes) allow-empty) (vl-elabscopes-traverse-fn trav scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-traverse-fn-vl-elabscopes-equiv-congruence-on-scopes (implies (vl-elabscopes-equiv scopes scopes-equiv) (equal (vl-elabscopes-traverse-fn trav scopes allow-empty) (vl-elabscopes-traverse-fn trav scopes-equiv allow-empty))) :rule-classes :congruence)