(svjumpstate-pop-scope x) → new-x
Function:
(defun svjumpstate-pop-scope (x) (declare (xargs :guard (svjumpstate-p x))) (let ((__function__ 'svjumpstate-pop-scope)) (declare (ignorable __function__)) (b* (((svjumpstate x))) (change-svjumpstate x :breakst (svstate-pop-scope x.breakst) :continuest (svstate-pop-scope x.continuest) :returnst (svstate-pop-scope x.returnst)))))
Theorem:
(defthm svjumpstate-p-of-svjumpstate-pop-scope (b* ((new-x (svjumpstate-pop-scope x))) (svjumpstate-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm svjumpstate-vars-of-pop-scope (b* ((?new-x (svjumpstate-pop-scope x))) (implies (not (member v (svjumpstate-vars x))) (not (member v (svjumpstate-vars new-x))))))
Theorem:
(defthm svjumpstate-pop-scope-compatible-with-svstate-pop-scope (b* nil (implies (svjumpstate-svstate-compatible jst st) (svjumpstate-svstate-compatible (svjumpstate-pop-scope jst) (svstate-pop-scope st)))))
Theorem:
(defthm svjumpstate-pop-scope-compatible-with-svstate-pop-scope-free (b* nil (implies (svjumpstate-svstate-compatible jst st) (equal (svjumpstate-svstate-compatible (svjumpstate-pop-scope jst) st1) (svstates-compatible (svstate-pop-scope st) st1)))))
Theorem:
(defthm svjumpstates-compatible-implies-svjumpstates-compatible-svjumpstate-pop-scope-1 (implies (svjumpstates-compatible jst jst-equiv) (svjumpstates-compatible (svjumpstate-pop-scope jst) (svjumpstate-pop-scope jst-equiv))) :rule-classes (:congruence))
Theorem:
(defthm svjumpstate-pop-scope-of-svjumpstate-fix-x (equal (svjumpstate-pop-scope (svjumpstate-fix x)) (svjumpstate-pop-scope x)))
Theorem:
(defthm svjumpstate-pop-scope-svjumpstate-equiv-congruence-on-x (implies (svjumpstate-equiv x x-equiv) (equal (svjumpstate-pop-scope x) (svjumpstate-pop-scope x-equiv))) :rule-classes :congruence)