MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Sound Foundations for Effective Proofs of Programs

Download:
pdf | ps
by Peter V. Homeier
ftp://ftp.cs.ucla.edu/pub/homeier/papers/Prospectus.ps.gz
Add To MetaCart

Abstract:

When considering the correctness of programs, the only absolute demonstration of quality is mathematical proof. Yet the complexity of these proofs makes them all but impossible both to construct and read, and the correctness of the proofs themselves come into question. We take an approach to the creation of these proofs based on specifying an axiomatic semantics for the programming language, and using that semantics to automatically create a Verification Condition Generator, a program that takes a general program written in the language and creates the proof of that program, modulo a set of verification conditions, to be proven by hand. This automates much of the detailed work of creating the proof. Yet even this VCG technique depends on the soundness of the axiomatic semantics, and in fact, many proposed axiomatic semantics have suffered from unsoundness. We take the difficult but secure approach of foundationally defining an operational semantics of the programming language, including concurrency, and then proving the axioms and rules of inference of the axiomatic semantics from the operational semantics as theorems. Once this is done, the correctness of the VCG function itself can be proven, so the proofs of concurrent programs as constructed by the VCG in a way that is known to be sound, modulo the truth of the

Citations

1345 The Temporal Logic of Reactive and Concurrent Systems: Specification – Manna, Pnueli - 1992
952 An Axiomatic Basis for Computer Programming – Hoare - 1969
694 Parallel Program Design: A Foundation – Chandy, Misra - 1988
402 Assigning meanings to programs – FLOYD - 1967
257 An Axiomatic Proof Technique for Parallel Programs I – Owicki, Gries - 1976
220 An Introduction to Mathematical Logic and Type Theory: To Truth Through Proof – Andrews - 1986
162 The Formal Semantics of Programming Languages: An Introduction – Winskel - 1993
83 Verifying properties of parallel programs: An axiomatic approach – Owicki, Gries - 1976
60 Mechanizing programming logics in higher order logic – Gordon
43 An operational semantics for CSP – Plotkin - 1982
35 Assignment and procedure call proof rules – Gales, Levin - 1980
32 The Semantics of Programming Languages – Hennessy - 1990
28 and Ernst-Rudiger Olderog. Verification of Sequential and Concurrent Programs – Apt - 1991
22 A Verification Condition Generator for FORTRAN – Boyer, Moore - 1981
12 Proving total correctness of recursive procedures. Information and Computation – America, Boer - 1990
11 A structural approach to operational semantics. Lecture notes – Plotkin - 1981
8 A Verified Program Verifier – Ragland - 1973
8 A Survey of Verification Techniques for Parallel Programs – Barringer - 1985
6 Substitution Revisited, Theoretical Computer Science 59 – Stoughton - 1988
6 Ten years of hoare logic: A survey---part 1 – Apt - 1981
5 Total correctness for procedures – Sokolowski - 1977
5 A structure-directed total correctness proof rule for recursive procedure calls – Pandya, Joseph - 1986
3 Automatic Construction of Verification Condition Generators from Hoare Logics – Moriconi, Schwartz - 1980
1 This paragraph is essentially taken from Egidio Astesiano, Inductive and Operational Semantics, in Formal Description of Programming Concepts – Neuhold, Paul - 1991
1 The Logic of – Cartwright, Oppen - 1981
1 Inductive and Operational Semantics, in Formal Description of Programming Concepts – Astesiano - 1991