(vl-elabscopes-push-scope x scopes &key (allow-empty 'nil)) → new-scopes
Function:
(defun vl-elabscopes-push-scope-fn (x scopes allow-empty) (declare (xargs :guard (and (vl-scope-p x) (vl-elabscopes-p scopes)))) (let ((__function__ 'vl-elabscopes-push-scope)) (declare (ignorable __function__)) (b* ((scopes (vl-elabscopes-fix scopes)) (key (vl-scope->elabkey x)) ((when key) (vl-elabscopes-push-named key scopes :allow-empty allow-empty))) (vl-elabscopes-push-anon (make-vl-elabscope) scopes))))
Theorem:
(defthm vl-elabscopes-p-of-vl-elabscopes-push-scope (b* ((new-scopes (vl-elabscopes-push-scope-fn x scopes allow-empty))) (vl-elabscopes-p new-scopes)) :rule-classes :rewrite)
Theorem:
(defthm vl-elabscopes-push-scope-fn-of-vl-scope-fix-x (equal (vl-elabscopes-push-scope-fn (vl-scope-fix x) scopes allow-empty) (vl-elabscopes-push-scope-fn x scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-push-scope-fn-vl-scope-equiv-congruence-on-x (implies (vl-scope-equiv x x-equiv) (equal (vl-elabscopes-push-scope-fn x scopes allow-empty) (vl-elabscopes-push-scope-fn x-equiv scopes allow-empty))) :rule-classes :congruence)
Theorem:
(defthm vl-elabscopes-push-scope-fn-of-vl-elabscopes-fix-scopes (equal (vl-elabscopes-push-scope-fn x (vl-elabscopes-fix scopes) allow-empty) (vl-elabscopes-push-scope-fn x scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-push-scope-fn-vl-elabscopes-equiv-congruence-on-scopes (implies (vl-elabscopes-equiv scopes scopes-equiv) (equal (vl-elabscopes-push-scope-fn x scopes allow-empty) (vl-elabscopes-push-scope-fn x scopes-equiv allow-empty))) :rule-classes :congruence)