Temporal Reasoning for Procedural Programs
- Cite this paper as:
- Alur R., Chaudhuri S. (2010) Temporal Reasoning for Procedural Programs. In: Barthe G., Hermenegildo M. (eds) Verification, Model Checking, and Abstract Interpretation. VMCAI 2010. Lecture Notes in Computer Science, vol 5944. Springer, Berlin, Heidelberg
While temporal verification of programs is a topic with a long history, its traditional basis—semantics based on word languages—is ill-suited for modular reasoning about procedural programs. We address this issue by defining the semantics of procedural (potentially recursive) programs using languages of nested words and developing a framework for temporal reasoning around it. This generalization has two benefits. First, this style of reasoning naturally unifies Manna-Pnueli-style temporal reasoning with Hoare-style reasoning about structured programs. Second, it allows verification of “non-regular” properties of specific procedural contexts—e.g., “If a lock is acquired in a context, then it is released in the same context.” We present proof rules for a variety of properties such as local safety, local response, and staircase reactivity; our rules are sufficient to prove all temporal properties over nested words. We show that our rules are sound and relatively complete.
Unable to display preview. Download preview PDF.