A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A practical theory of programming
A practical theory of programming
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Joining specification statements
Theoretical Computer Science
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
A semantics for concurrent separation logic
Theoretical Computer Science
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
Freefinement is an algorithm that constructs a sound refinement calculus from a verification system under certain conditions. In this paper, a verification system is any formal system for establishing whether an inductively defined term, typically a program, satisfies a specification. Examples of verification systems include Hoare logics and type systems. Freefinement first extends the term language to include specification terms, and builds a verification system for the extended language that is a sound and conservative extension of the original system. The extended system is then transformed into a sound refinement calculus. The resulting refinement calculus can interoperate closely with the verification system - it is even possible to reuse and translate proofs between them. Freefinement gives a semantics to refinement at an abstract level: it associates each term of the extended language with a set of terms from the original language, and refinement simply reduces this set. The paper applies freefinement to a simple type system for the lambda calculus and also to a Hoare logic.