A tool for developing correct programs by refinement

The refinement calculus for the development of programs from specifications is well suited to mechanised support. We review the requirements for tool support of refinement as gleaned from our experience with a number of existing refinement tools, and report on the design and implementation of a new tool to support refinement based on these requirements. The main features of the new tool are close integration of refinement and proof in a single tool (the same mechanism is used for both), good management of the refinement context, an extensible theory base that allows the tool to be adapted to new application domains, and a flexible user interface.

[1]  Carroll Morgan,et al.  Programming from specifications (2nd ed.) , 1994 .

[2]  M. Gordon HOL: A Proof Generating System for Higher-Order Logic , 1988 .

[3]  Jan L. A. van de Snepscheut,et al.  Mechanized Support for Stepwise Refinement , 1994, Programming Languages and System Architectures.

[4]  Lawrence C. Paulson,et al.  Natural Deduction as Higher-Order Resolution , 1986, J. Log. Program..

[5]  Mark Utting,et al.  Ergo user manual, Technical Report 93-19 , 1994 .

[6]  David R. Musser,et al.  The AFFIRM Theorem Prover: Proof Forests and Management of Large Proofs , 1980, CADE.

[7]  Joseph M. Morris,et al.  A Theoretical Basis for Stepwise Refinement and the Programming Calculus , 1987, Sci. Comput. Program..

[8]  Ian J. Hayes,et al.  Specification case studies , 1987 .

[9]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[10]  Kaisa Sere,et al.  Stepwise Refinement of Action Systems , 1991, Struct. Program..

[11]  John Staples,et al.  Formalizing a Hierarchical Structure of Practical Mathematical Reasoning , 1993, J. Log. Comput..

[12]  Robin Milner,et al.  Edinburgh LCF , 1979, Lecture Notes in Computer Science.

[13]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[14]  Mark Utting,et al.  A New Face for Ergo: Adding a User Interface to a Programmable Theorem Prover , 1995 .

[15]  T Vickers An Overview of a Refinement Editor , 1990 .

[16]  Annabelle McIver,et al.  Probabilistic predicate transformers , 1996, TOPL.

[18]  Joakim von Wright Program Refinement by Theorem Prover , 1994, Refine.

[19]  Ken Robinson,et al.  Tool Support for the Refinement Calculus , 1990, CAV.

[20]  Hélène Kirchner,et al.  The Term Rewriting Approach to Automated Theorem Proving , 1992, J. Log. Program..

[21]  J. von Wright Program Reenement by Theorem Prover , 1994 .

[22]  Jim Welsh,et al.  Software Documents: Concepts and Tools , 1994, Softw. Concepts Tools.

[23]  Edmund Kazmierczak,et al.  The Cogito methodology and system , 1994, Proceedings of 1st Asia-Pacific Software Engineering Conference.

[24]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[25]  WirthNiklaus Program development by stepwise refinement , 1971 .

[26]  Donald I. Good,et al.  Mechanical proofs about computer programs , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[27]  D. Carrington,et al.  Requirements for a Program Refinement Engine , 1995 .

[28]  Ralph-Johan Back,et al.  Predicate Transformers and Higher Order Logic , 1992, REX Workshop.

[29]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[30]  D. Carrington,et al.  The PRT User Manual - Version 1.03 , 1995 .

[31]  Peter A. Lindsay,et al.  mural: A Formal Development Support System , 1991, Springer London.

[32]  Lindsay Groves,et al.  A Tactic Driven Refinement Tool , 1992, Refine.

[33]  Robert S. Boyer,et al.  Computational Logic , 1990, ESPRIT Basic Research Series.

[34]  Carroll Morgan,et al.  Types and Invariants in the Refinement Calculus , 1990, Sci. Comput. Program..

[35]  Ian J. Hayes,et al.  A Review of Existing Refinement Tools , 1994 .

[36]  Lindsay Groves,et al.  Metavariables and Conditional Refinements in the Refinement Calculus , 1994, Refine.