Computer-Assisted Program Reasoning Based on a Relational Semantics of Programs

Wolfgang Schreiner

We present an approach to program reasoning which inserts between a program and its verification conditions an additional layer, the denotation of the program expressed in a declarative form. The program is first translated into its denotation from which subsequently the verification conditions are generated. However, even before (and independently of) any verification attempt, one may investigate the denotation itself to get insight into the "semantic essence" of the program, in particular to see whether the denotation indeed gives reason to believe that the program has the expected behavior. Errors in the program and in the meta-information may thus be detected and fixed prior to actually performing the formal verification. More concretely, following the relational approach to program semantics, we model the effect of a program as a binary relation on program states. A formal calculus is devised to derive from a program a logic formula that describes this relation and is subject for inspection and manipulation. We have implemented this idea in a comprehensive form in the RISC ProgramExplorer, a new program reasoning environment for educational purposes which encompasses the previously developed RISC ProofNavigator as an interactive proving assistant.

In Pedro Quaresma and Ralph-Johan Back: Proceedings First Workshop on CTP Components for Educational Software (THedu'11), Wrocław, Poland, 31th July 2011, Electronic Proceedings in Theoretical Computer Science 79, pp. 124–142.
Published: 21st February 2012.

ArXived at: https://dx.doi.org/10.4204/EPTCS.79.8 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org