A General Framework for Program Reasoning
Abstract:
We present a framework for reasoning about programs that incorporates programmer specified assertions and subsumes both Hoare-Logic verification and program analysis. Our aim is to support combinations of different program reasoning algorithms in a tightly coupled way, and to provide a formal basis for the correctness of the combined efforts. Our framework is based on an extension of Hoare Logic, which we call Conditional Hoare Logic (CHL). Whereas Hoare Logic identifies user assertions with formulas in Hoare triples (user assertions are typically just treated as specifications of loop invariants), CHL formally separates user assertions from formulas manipulated in proofs by treating user assertions as part of the program text. Central to our framework is the notion of transformation of CHL-proofs. Starting from a distinguished transformation for "exact reasoning", we define a calculus of CHLproof transformations based on well-known combinators of abstraction, functional composition, intersection and fixpoint iteration. We show that all algorithms definable using the calculus are correct, and that the calculus includes a wide variety of program reasoners, including traditional verifiers and analyzers, and combinations thereof. Contact Author:
Citations
| 436 | Systematic Design of Program Analysis Frameworks – Cousot, Cousot - 1979 |
| 183 | Abstract Interpretation Frameworks – Cousot, Cousot - 1992 |
| 65 | Methods and logics for proving programs – Cousot - 1999 |
| 18 | The Ciao Prolog System. Reference Manual – Bueno, Cabeza, et al. - 1997 |
| 3 | Cousot and Nicolas Halbwachs: "Automatic discovery of linear constraints among variables of a program – Patrick - 1978 |
| 1 | Modern compiler implementation in ML", Chapter 17.2 – Appel - 1998 |

