Semantics and Proof Rules of Invariant Based Programs (2008)
AUTHORS:
Back Ralph-Johan,
Preoteasa Viorel
INTERNALPDF:
internalpdf/TR903.pdf
@techreport{ tBaPr08a, author = "Back, Ralph-Johan and Preoteasa, Viorel", title = "Semantics and Proof Rules of Invariant Based Programs", abstract = "Invariant based programming is an approach where we start to construct a program by first identifying the basic situations (pre- and postconditions as well as invariants) that could arise during the execution of the algorithm. After that, we identify the transitions between the situations, which will give us the flow of control in the program. The transitions are verified at the time when they are constructed. The correctness of the program is thus established as part of constructing the program. The execution of an invariant diagram may start in any situation and will choose one of the enabled transitions in this situation, to continue to the next situation. In this way, the execution proceeds from situation to situation. Execution terminates when a situation is reached from which there are no enabled transitions. Because the execution could start and terminate in any situation, invariant-based programs can be thought of as multiple entry, multiple exit programs. The transitions may have statements with unbounded nondeterminism, because we allow specification statements in transitions. Invariant based programs are thus a considerable generalization of ordinary structured program statements, and defining their semantics and proof theory provides a challenge that usually does not arise for more traditional programming languages. We study in this paper the semantics and proof rules for invariant-based programs. The total correctness of an invariant diagram is established by proving that each transition preserves the invariants and decreases a global variant. The proof rules for invariant-based programs are shown to be correct and complete with respect to an operational semantics. The results presented in this paper have been mechanically verified in the PVS theorem prover.", year = "2008", number = "903", month = "Jun", flags = "copy", address = "Turku, Finland", pdf = "TR903.pdf", institution = "{TUCS} - Turku Centre for Computer Science" }