กฎกรอบเช่นหนึ่งที่ระบุด้านล่างจับความคิดที่ว่าได้รับโปรแกรมc
ที่มีเงื่อนไขp
ที่ถือก่อนที่จะเรียกและ postcondition q
ที่ถือหลังจากนั้นบางสภาพเคล็ดr
ควรถือทั้งก่อนและหลังc
วิ่ง (ความ*
เกี่ยวพันจำเป็นต้องมีการขัดแย้งกัน) บ่อยครั้งที่ก่อนและหลังมีสถานะของกองและc
เป็นโปรแกรมที่มีประสิทธิภาพที่ปรับเปลี่ยนกองในทางใดทางหนึ่ง
{p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}
การสนทนาเกี่ยวกับกฎของเฟรมที่ฉันได้เห็นดูเหมือนจะเน้นไปที่วิธีการแยกส่วนของกองr
ไว้ให้คงอยู่ สิ่งนี้ทำให้ "การใช้เหตุผลในท้องถิ่น": เมื่อให้เหตุผลเกี่ยวกับผลกระทบที่c
มีเราสามารถเพิกเฉยต่อr
ส่วนของฮีปและเกี่ยวข้องกับตัวเราเองกับส่วนที่เปลี่ยนแปลงจริงเท่านั้น แต่วิธีการที่จะมองมันอีกอย่างก็คือว่าการเปลี่ยนแปลงจากp
การq
ถูกเก็บรักษาไว้แม้ว่าr
ตอนนี้นั่งอยู่ที่นั่น ในคำอื่น ๆ มันเป็นสิ่งสำคัญที่เราจบลงด้วย postcondition {q * r}
มากกว่าสำหรับบางคนอื่น ๆ{q' * r}
q'
ดังนั้นคำถามของฉันคือว่ามีการรักษากฎกรอบใด ๆ ที่กล่าวถึงหรือทำให้การใช้การเก็บรักษาของการเปลี่ยนแปลง from- p
-to- q
สิ่ง