How write-object changes under pop-frame.
Theorem:
(defthm pop-frame-of-write-object-static/alloc (implies (and (member-equal (objdesign-kind objdes) '(:static :alloc)) (not (errorp (write-object objdes val compst)))) (equal (pop-frame (write-object objdes val compst)) (write-object objdes val (pop-frame compst)))))
Theorem:
(defthm pop-frame-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 (pop-frame (write-object objdes val compst)) (write-object objdes val (pop-frame compst)))))
Theorem:
(defthm pop-frame-of-write-object-auto (implies (and (equal (objdesign-kind objdes) :auto) (not (errorp (write-object objdes val compst)))) (equal (pop-frame (write-object objdes val compst)) (if (equal (objdesign-auto->frame objdes) (1- (compustate-frames-number compst))) (pop-frame compst) (write-object objdes val (pop-frame compst))))))
Theorem:
(defthm pop-frame-of-write-object-top-auto (implies (and (equal (objdesign-kind (objdesign-top objdes)) :auto) (not (errorp (write-object objdes val compst)))) (equal (pop-frame (write-object objdes val compst)) (if (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst))) (pop-frame compst) (write-object objdes val (pop-frame compst))))))
Theorem:
(defthm pop-frame-of-write-object (implies (not (errorp (write-object objdes val compst))) (equal (pop-frame (write-object objdes val compst)) (if (and (equal (objdesign-kind (objdesign-top objdes)) :auto) (equal (objdesign-auto->frame (objdesign-top objdes)) (1- (compustate-frames-number compst)))) (pop-frame compst) (write-object objdes val (pop-frame compst))))))