A Program Refinement Tool

Abstract. 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 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]  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.

[2]  Michael J. Butler,et al.  Program Derivation Using the Refinement Calculator , 1996, TPHOLs.

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

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

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

[6]  Mark Utting,et al.  Ergo 4.1 Reference Manual , 1996 .

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

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

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

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

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

[12]  David Lorge Parnas,et al.  A Rational Design Process: How and Why to Fake It , 1985, TAPSOFT, Vol.2.

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

[14]  Carroll Morgan,et al.  The specification statement , 1988, TOPL.

[15]  Maurice Naftalin A Model of the Refinement Process , 1992, Refine.

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

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

[18]  C. A. R. Hoare,et al.  Proof of correctness of data representation , 1975, Language Hierarchies and Interfaces.

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

[20]  Jun HanSoftware,et al.  Software Documents: Concepts and Tools Software Documents: Concepts and Tools , 1994 .

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

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

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

[24]  Sentot Kromodimoeljo,et al.  The EVES System , 1993, Functional Programming, Concurrency, Simulation and Automated Reasoning.

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

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

[27]  Friedrich L. Bauer,et al.  Towards a wide spectrum language to support program specification and program development , 1978, SIGP.

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

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

[30]  Jim Grundy,et al.  A Window Inference Tool for Refinement , 1992, Refine.

[31]  Jonathan P. Bowen,et al.  Ten Commandments of Formal Methods , 1995, Computer.

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

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

[34]  Ian J. Hayes,et al.  Supporting Contexts in Program Refinement , 1997, Sci. Comput. Program..

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

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

[37]  Maurice Naftalin Informal Strategies in Design by Refinement , 1994, FME.

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

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

[40]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .