Invariance of read-object under exit-scope, provided that the object is not in the exited scope.
Theorem:
(defthm read-object-top-static/alloc-of-exit-scope (implies (and (member-equal (objdesign-kind (objdesign-top objdes)) '(:static :alloc)) (not (errorp (read-object objdes compst)))) (equal (read-object objdes (exit-scope compst)) (read-object objdes compst))))
Theorem:
(defthm read-object-top-auto-of-exit-scope (implies (and (equal (objdesign-kind (objdesign-top objdes)) :auto) (not (errorp (read-object objdes compst))) (or (not (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst)))) (not (equal (objdesign-auto->scope (objdesign-top objdes)) (1- (compustate-top-frame-scopes-number compst)))))) (equal (read-object objdes (exit-scope compst)) (read-object objdes compst))))
Theorem:
(defthm read-object-of-exit-scope (implies (and (not (errorp (read-object objdes compst))) (or (member-equal (objdesign-kind (objdesign-top objdes)) '(:static :alloc)) (not (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst)))) (not (equal (objdesign-auto->scope (objdesign-top objdes)) (1- (compustate-top-frame-scopes-number compst)))))) (equal (read-object objdes (exit-scope compst)) (read-object objdes compst))))