How write-object changes under exit-scope.
Theorem:
(defthm exit-scope-of-write-object-static/alloc (implies (and (member-equal (objdesign-kind objdes) '(:static :alloc)) (not (errorp (write-object objdes val compst)))) (equal (exit-scope (write-object objdes val compst)) (write-object objdes val (exit-scope compst)))))
Theorem:
(defthm exit-scope-of-write-object-top-static/alloc (implies (and (member-equal (objdesign-kind (objdesign-top objdes)) '(:static :alloc)) (not (errorp (write-object objdes val compst)))) (equal (exit-scope (write-object objdes val compst)) (write-object objdes val (exit-scope compst)))))
Theorem:
(defthm exit-scope-of-write-object-auto (implies (and (equal (objdesign-kind objdes) :auto) (not (errorp (write-object objdes val compst)))) (equal (exit-scope (write-object objdes val compst)) (if (and (equal (objdesign-auto->frame objdes) (1- (compustate-frames-number compst))) (equal (objdesign-auto->scope objdes) (1- (compustate-top-frame-scopes-number compst)))) (exit-scope compst) (write-object objdes val (exit-scope compst))))))
Theorem:
(defthm exit-scope-of-write-object-top-auto (implies (and (equal (objdesign-kind (objdesign-top objdes)) :auto) (not (errorp (write-object objdes val compst)))) (equal (exit-scope (write-object objdes val compst)) (if (and (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst))) (equal (objdesign-auto->scope (objdesign-top objdes)) (1- (compustate-top-frame-scopes-number compst)))) (exit-scope compst) (write-object objdes val (exit-scope compst))))))
Theorem:
(defthm exit-scope-of-write-object (implies (not (errorp (write-object objdes val compst))) (equal (exit-scope (write-object objdes val compst)) (if (and (objdesign-case (objdesign-top objdes) :auto) (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst))) (equal (objdesign-auto->scope (objdesign-top objdes)) (1- (compustate-top-frame-scopes-number compst)))) (exit-scope compst) (write-object objdes val (exit-scope compst))))))