(vl-scopestack-push scope x) → x1
Function:
(defun vl-scopestack-push (scope x) (declare (xargs :guard (and (vl-scope-p scope) (vl-scopestack-p x)))) (let ((__function__ 'vl-scopestack-push)) (declare (ignorable __function__)) (progn$ (or (not (eq (tag scope) :vl-design)) (cw "Note: pushing whole design onto scopestack.~%")) (make-vl-scopestack-local :top scope :super x))))
Theorem:
(defthm vl-scopestack-p-of-vl-scopestack-push (b* ((x1 (vl-scopestack-push scope x))) (vl-scopestack-p x1)) :rule-classes :rewrite)
Theorem:
(defthm vl-scopestack-push-of-vl-scope-fix-scope (equal (vl-scopestack-push (vl-scope-fix scope) x) (vl-scopestack-push scope x)))
Theorem:
(defthm vl-scopestack-push-vl-scope-equiv-congruence-on-scope (implies (vl-scope-equiv scope scope-equiv) (equal (vl-scopestack-push scope x) (vl-scopestack-push scope-equiv x))) :rule-classes :congruence)
Theorem:
(defthm vl-scopestack-push-of-vl-scopestack-fix-x (equal (vl-scopestack-push scope (vl-scopestack-fix x)) (vl-scopestack-push scope x)))
Theorem:
(defthm vl-scopestack-push-vl-scopestack-equiv-congruence-on-x (implies (vl-scopestack-equiv x x-equiv) (equal (vl-scopestack-push scope x) (vl-scopestack-push scope x-equiv))) :rule-classes :congruence)