Refine and gabriel: support for refinement and tactics

Using Morgan's refinement calculus, we can write software in a precise and consistent way. Nevertheless, this may involve long and repetitive developments. Several refinement strategies are useful in different developments, and even in different points of a single development. A lot is gained by identifying these strategies, documenting them as tactics, and using them as single transformation rules. With this motivation, we have designed ArcAngel, a tactic language especially tailored for refinement; we have formalised its semantics and studied its algebraic laws. Even with the use of tactics, however refinement can be a hard task and the use of tools is essential in practice. In this paper we present Refine and Gabriel, interactive, user-friendly tools that allow us to use the refinement calculus with the support of ArcAngel tactics.

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

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

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

[4]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[5]  Jim Grundy,et al.  Window Inference In The HOL System , 1991, 1991., International Workshop on the HOL Theorem Proving System and Its Applications.

[6]  Joakim von Wright,et al.  Mechanizing some advanced refinement concepts , 1992, Formal Methods Syst. Des..

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

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

[9]  Jan L. A. Van de Snepscheut Proxac: An Editor for Program Transformation , 1993 .

[10]  Trevor Vickers,et al.  A language of refinements , 1994 .

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

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

[13]  Lindsay Groves Deriving programs by combining and adapting refinement scripts , 1995, Proceedings 1995 Asia Pacific Software Engineering Conference.

[14]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[15]  Ana Cavalcanti A refinement calculus for Z , 1997 .

[16]  Theo Mandel,et al.  The Elements of User Interface Design , 1997 .

[17]  David A. Carrington,et al.  A Program Refinement Tool , 1998, Formal Aspects of Computing.

[18]  Augusto Sampaio,et al.  Procedures and Recursion in the Refinement Calculus , 1998, J. Braz. Comput. Soc..

[19]  An Inconsistency in Procedures, Parameters, and Substitution in the Refinement Calculus , 1999, Sci. Comput. Program..

[20]  Ana Cavalcanti,et al.  Tactics of Refinement , 2000 .

[21]  Marcel Vinícius,et al.  Arcangel: a Tactic Language for Refinement and Its Tool Support Arcangel: a Tactic Language for Refinement and Its Tool Support , 2002 .

[22]  Jim Woodcock,et al.  ArcAngel: a Tactic Language for Refinement , 2003, Formal Aspects of Computing.

[23]  Ralph-Johan Back,et al.  Refinement concepts formalised in higher order logic , 2005, Formal Aspects of Computing.

[24]  Jim Woodcock,et al.  A tactic calculus — abridged version , 1996, Formal Aspects of Computing.