Temporal logic of programs
A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Parallel program design: a foundation
Parallel program design: a foundation
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
ACM SIGSOFT Software Engineering Notes
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
An axiomatic basis for computer programming
Communications of the ACM
A Discipline of Programming
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Theorem Proving for Functional Programmers
IFL '02 Selected Papers from the 13th International Workshop on Implementation of Functional Languages
High Integrity Software: The SPARK Approach to Safety and Security
High Integrity Software: The SPARK Approach to Safety and Security
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Ten commandments revisited: a ten-year perspective on the industrial application of formal methods
Proceedings of the 10th international workshop on Formal methods for industrial critical systems
Extending the sparkle core language with object abstraction
Acta Cybernetica
Isabelle/HOL: a proof assistant for higher-order logic
Isabelle/HOL: a proof assistant for higher-order logic
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Embedding a proof system in haskell
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Hi-index | 0.00 |
Formal methods are not used widely in industrial software development, because the overhead of formally proving program properties is generally not acceptable. In this paper we present an ongoing research project to make the construction of such proofs easier by embedding the proof system into a compiler. Using the introduced new programming language, the programmer writes formal specification first. The specification is to be refined using stepwise refinement which results in a proof. The compiler checks this proof and generates the corresponding program in a traditional programming language. The resulting code automatically fulfills the requirements of the specification. In this paper we present language elements to build specification statements and proofs. We give a short overview on the metaprogramming techniques of the language that support the programmer's work. Using a formal model we give the semantics of specification statements and refinements. We also prove the soundness of the basic algorithms of the compiler.