Translating Refined Logic Programs to Mercury

A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In this paper we investigate the use of Mercury as the target implementation language for a refinement calculus for logic programs. We describe a prototype tool for translating programs in our specification language to Mercury code. More generally, we investigate the advantages that Mercury has over standard Prolog, with respect to developing correct programs from specifications.

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

[2]  Paul Strooper,et al.  A Declarative Semantics for Logic Program Refinement , 2000 .

[3]  Paul A. Strooper,et al.  A refinement calculus for logic programs , 2002, Theory Pract. Log. Program..

[4]  Yves Deville,et al.  Logic programming - systematic program development , 1990, International series in logic programming.

[5]  Paul A. Strooper,et al.  Refining Specifications to Logic Programs , 1996, LOPSTR.

[6]  Paul A. Strooper,et al.  Refining logic programs using types , 2000, Proceedings 23rd Australasian Computer Science Conference. ACSC 2000 (Cat. No.PR00518).

[7]  John W. Lloyd,et al.  The Go¨del programming language , 1994 .

[8]  Lawrence Charles Paulson,et al.  Isabelle: A Generic Theorem Prover , 1994 .

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

[10]  John W. Lloyd,et al.  The Gödel programming language , 1994 .

[11]  Paul A. Strooper,et al.  Refinement Calculus for Logic Programming in Isabelle/HOL , 2001, TPHOLs.

[12]  Yves Deville,et al.  Logic Program Synthesis , 1994, J. Log. Program..