Advertisement

A Technique for Modular Logic Program Refinement

  • Robert Colvin
  • Ian Hayes
  • Paul Strooper
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2042)

Abstract

Are finement 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 introduce modules into a logic programming refinement calculus. Modules allow data types to be grouped together with sets of procedures that manipulate the data types. By placing restrictions on the way a program uses a module, we develop a technique for refining the module so that it uses a more efficient representation of the data type.

Keywords

Logic Program Logic Programming Procedure Call Proof Obligation Logic Programming Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    P. Bancroft and I. J. Hayes. Refining a module with opaque types. In Gopal Gupta, George Mohay, and Rodney Topor, editors, Proceedings, 16th Australian Computer Science Conference, Bris b ane, Australian Computer Science Communications, volume 15(1), pages 615–624, February 1993.Google Scholar
  2. 2.
    R. Colvin, I. J. Hayes, and P. Strooper. Data refining logic programs. In J. Grundy, M. Schwenke, and T. Vickers, editors, International Refinement Workshop and Formal Methods Pacific 1998, Discrete Mathematics and Theoretical Computer Science, pages 100–116. Springer, 1998.Google Scholar
  3. 3.
    R. Colvin, I. J. Hayes, and P. Strooper. Refining logic programs using types. In J. Edwards, editor, Australasian Computer Science Conference (ACSC 2000), pages 43–50. IEEE Computer Society, 2000. For an extended version see SVRCTR-99-25.Google Scholar
  4. 4.
    Y. Deville and K.-K. Lau. Logic program synthesis. Journal of Logic Programming, 19,20:321–350, 1994. Special Issue: Ten Years of Logic Programming.CrossRefMathSciNetGoogle Scholar
  5. 5.
    Yves Deville. Logic Programming: Systematic Program Development. International series in logic programming. Addison-Wesley, 1990.Google Scholar
  6. 6.
    I. Hayes, R. Nickson, and P. Strooper. Refining specifications to logic programs. In J. Gallagher, editor, Logic Program Synthesis and Transformation. Proc. of the 6th Int. Workshop, LOPSTR’96, Stockholm, Sweden, August 1996, volume 1207 of Lecture Notes in Computer Science, pages 1–19. Springer, 1997.Google Scholar
  7. 7.
    I. Hayes, R. Nickson, P. Strooper, and R. Colvin. Ad eclarative semantics for logic program refinement. Technical Report 00-30, Software Verification Research Centre, The University of Queensland, 2000.Google Scholar
  8. 8.
    D. Hemer. Building tool support for refinement calculus for logic programming: Acom parison of interactive theorem provers. Technical Report 00-06, Software Verification Research Centre, The University of Queensland, 2000.Google Scholar
  9. 9.
    K.-K. Lau and M. Ornaghi. On specification frameworks and deductive synthesis of logic programs. In L. Fribourg and F. Turini, editors, Proc. LOPSTR 94 and META 94, Lecture Notes in Computer Science 883, pages 104–121. Springer-Verlag, 1994.Google Scholar
  10. 10.
    K.-K Lau and M. Ornaghi. Forms of logic specifications: Ap reliminary study. In J. Gallagher, editor, Logic Program Synthesis and Transformation. Proc. of the 6th Int. Workshop, LOPSTR’96, Stockholm, Sweden, August 1996, volume 1207 of Lecture Notes in Computer Science, pages 295–312. Springer, 1997.Google Scholar
  11. 11.
    B. Liskov and J. Guttag. Abstraction and Specification in Program Development. MIT Press, third edition, 1986.Google Scholar
  12. 12.
    C. C. Morgan. Programming from Specifications. Prentice Hall, second edition, 1994.Google Scholar
  13. 13.
    M. G. Read and E. Kazmierczak. Formal program development in modular Prolog. In T. P. Clement and K.-K. Lau, editors, Logic Program Synthesis and Transformation. Proc. of LOPSTR’91, University of Manchester, July 1991, Workshops in Computing, pages 69–93. Springer-Verlag, 1992.Google Scholar
  14. 14.
    Z. Somogyi, F. J. Henderson, and T. C. Conway. Mercury, an efficient purely declarative logic programming language. In R. Kotagiri, editor, Proc. of the Eighteenth Australasian Computer Science Conference, pages 499–512, Glenelg, South Australia, 1995. Australian Computer Science Communications.Google Scholar
  15. 15.
    J. M. Spivey. The Z Notation: A Reference Manual. Prentice Hall, second edition, 1992.Google Scholar
  16. 16.
    Y. V. Srinivas and R. Jullig. Specware: Formal support for composing software. In Bernhard Moller, editor, Proceedings of the Conference on Mathematics of Program Construction, volume 947 of Lecture Notes in Computer Science. Kloster Irsee, Germany, 1995.Google Scholar
  17. 17.
    W. M. Turski and T. S. E. Maibaum. Specification of Computer Programs. Addison-Wesley, 1987.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Robert Colvin
  • Ian Hayes
    • 1
  • Paul Strooper
    • 1
  1. 1.Software Verification Research Centre and School of Computer Science and Electrical EngineeringUniversity of QueenslandBrisbaneAustralia

Personalised recommendations