A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
A calculus of refinements for program derivations
Acta Informatica
Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
Introduction to HOL: a theorem proving environment for higher order logic
Introduction to HOL: a theorem proving environment for higher order logic
The lattice of data refinement
Acta Informatica
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
A Discipline of Programming
The Definition of Standard ML
Experience with Embedding Hardware Description Languages in HOL
Proceedings of the IFIP TC10/WG 10.2 International Conference on Theorem Provers in Circuit Design: Theory, Practice and Experience
Refinement Calculus, Part I: Sequential Nondeterministic Programs
Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop
TAS - A Generic Window Inference System
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
Refinement Calculus for Logic Programming in Isabelle/HOL
TPHOLs '01 Proceedings of the 14th International Conference on Theorem Proving in Higher Order Logics
Hi-index | 0.00 |
We present a shallow embedding of the weakest precondition semantics for a program refinement language. We use the Isabelle/ZF theorem prover for untyped set theory, and statements in our refinement language are represented as set transformers. Our representation is significant in making use of the expressiveness of Isabelle/ZF's set theory to represent states as dependently-typed functions from variable names to their values. This lets us give a uniform treatment of statements such as variable assignment, framed Specification statements, local blocks, and parameterisation. ZF set theory requires set comprehensions to be explicitly bounded. This requirement propagates to the definitions of statements in our refinement language, which have operands for the state type. We reduce the syntactic burden of repeatedly writing the state type by using Isabelle's meta-logic to define a lifted set transformer language which implicitly passes the state type to statements.