Pointwise Relational Programming

  • Oege de Moor
  • Jeremy Gibbons
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1816)


The point-free relational calculus has been very successful as a language for discussing general programming principles. However, when it comes to specific applications, the calculus can be rather awkward to use: some things are more clearly and simply expressed using variables. The combination of variables and relational combinators such as converse and choice yields a kind of nondeterministic functional programming language. We give a semantics for such a language, and illustrate with an example application.


Relational Semantic Total Function Functional Programming Primitive Type Nondeterministic Choice 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    C. J. Aarts, R. C. Backhouse, P. F. Hoogendijk, E. Voermans, and J. C. S. P. Van der Woude. A relational theory of datatypes. September 1992.Google Scholar
  2. [2]
    A. Augusteijn. An alternative derivation of a binary heap construction function. In R. S. Bird, C. C. Morgan, and J. C. P. Woodcock, editors, Mathematics of Program Construction, volume 669 of Lecture Notes in Computer Science, pages 368–374. Springer-Verlag, 1992.Google Scholar
  3. [3]
    R. C. Backhouse. Making formality work for us. EATCS Bulletin, 38:219–249, 1989.zbMATHGoogle Scholar
  4. [4]
    R. C. Backhouse, P. De Bruin, P. F. Hoogendijk, G. Malcolm, T. S. Voermans, and J. C. S. P. Van der Woude. Polynomial relators. In M. Nivat, C. S. Rattray, T. Rus, and G. Scollo, editors, Algebraic Methodology and Software Technology, Workshops in Computing, pages 303–362. Springer-Verlag, 1992.Google Scholar
  5. [5]
    J. Backus. Can programming be liberated from the Von Neumann style? A functional style and its algebra of programs. Communications of the ACM, 21:613–641, 1978.zbMATHCrossRefMathSciNetGoogle Scholar
  6. [6]
    M. Barr and C. Wells. Category Theory for Computing Science. International Series in Computer Science. Prentice Hall, 1990.Google Scholar
  7. [7]
    F. L. Bauer, R. Berghammer, M. Broy, W. Dosch, F. Geiselbrechtinger, R. Gnatz, E. Hangel, W. Hesse, B. Krieg-Brückner, A. Laut, T. Matzner, B. Möller, F. Nickl, H. Partsch, P. Pepper, K. Samelson, M. Wirsing, and H. Wössner. The Munich Project CIP. Volume I: The Wide Spectrum Language CIP-L, volume 183 of Lecture Notes in Computer Science. Springer-Verlag, 1985.zbMATHGoogle Scholar
  8. [8]
    F. L. Bauer and H. Wössner. Algorithmic Language and Program Development. Texts and Monographs in Computer Science. Springer-Verlag, 1982.Google Scholar
  9. [9]
    R. Berghammer, P. Kempf, G. Schmidt, and T. Ströhlein. Relation algebra and logic of programs. In H. Andreka and J. D. Monk, editors, Algebraic Logic, volume 54 of Colloquia Mathematica Societatis Janos Bolyai, pages 37–58. North-Holland, 1991.Google Scholar
  10. [10]
    R. Berghammer and B. Von Karger. Formal derivation of CSP programs from temporal specifications. In Mathematics of Program Construction, volume 947 of Lecture Notes in Computer Science, pages 180–196. Springer-Verlag, 1995.Google Scholar
  11. [11]
    R. S. Bird. Lectures on constructive functional programming. In M. Broy, editor, Constructive Methods in Computing Science, volume 55 of NATO ASI Series F, pages 151–216. Springer-Verlag, 1989.Google Scholar
  12. [12]
    R. S Bird. Introduction to Functional Programming in Haskell. International Series in Computer Science. Prentice Hall, 1998.Google Scholar
  13. [13]
    R. S. Bird and O. De Moor. Algebra of Programming. International Series in Computer Science. Prentice Hall, 1996.Google Scholar
  14. [14]
    C. Brink and G. Schmidt, editors. Relational Methods in Computer Science. Springer-Verlag, 1996. Supplemental Volume of the Journal Computing, to appear.Google Scholar
  15. [15]
    W. Chen and J. T. Udding. Program inversion: More than fun! Science of Computer Programming, 15(1):1–13, 1990.zbMATHCrossRefMathSciNetGoogle Scholar
  16. [16]
    P. L. Curien. Categorical Combinators, Sequential Algorithms and Functional Programming. Research Notes in Theoretical Computer Science. Pitman, 1986.Google Scholar
  17. [17]
    E. W. Dijkstra. A Discipline of Programming. Series in Automatic Computation. Prentice Hall, 1976.Google Scholar
  18. [18]
    R. W. Floyd. Syntactic analysis and operator precedence. Journal of the ACM, 10(3):316–333, 1963.zbMATHCrossRefGoogle Scholar
  19. [19]
    D. Gries. The Science of Programming. Texts and Monographs in Computer Science. Springer-Verlag, 1981.Google Scholar
  20. [20]
    C. A. R. Hoare and J. He. The weakest prespecification, I. Fundamenta Informaticae, 9(1):51–84, 1986.zbMATHMathSciNetGoogle Scholar
  21. [21]
    G. Jones and M. Sheeran. Circuit design in Ruby. In J. Staunstrup, editor, Formal Methods for VLSI Design, pages 13–70. Elsevier Science Publications, 1990.Google Scholar
  22. [22]
    E. Knapen. Relational programming, program inversion and the derivation of parsing algorithms. Computing science notes, Department of Mathematics and Computing Science, Eindhoven University of Technology, 1993.Google Scholar
  23. [23]
    J. Lambek and P. J. Scott. Introduction to Higher Order Categorical Logic, volume 7 of Cambridge Studies in Advanced Mathematics. Cambridge University Press, 1986.Google Scholar
  24. [24]
    C. E. Martin. Preordered categories and predicate transformers. D.Phil. thesis, Computing Laboratory, Oxford, UK, 1991.Google Scholar
  25. [25]
    L. Meertens. Algorithmics — towards programming as a mathematical activity. In J. W. De Bakker, M. Hazewinkel, and J. K. Lenstra, editors, Mathematics and Computer Science, volume 1 of CWI Monographs, pages 3–42. North-Holland, 1987.Google Scholar
  26. [26]
    J. M. Morris. Programming by expression refinement: The KMP algorithm. Chapter 37 of W. H. J. Feijen, A. J. M. van Gasteren, D. Gries, and J. Misra, editors, Beauty is our Business. Springer-Verlag, 1990.Google Scholar
  27. [27]
    D. A. Naumann. Towards squiggly refinement algebra. In D. Gries and W. P. De Roever, editors, Programming Concepts and Methods, pages 346–365. Chapman and Hall, 1998.Google Scholar
  28. [28]
    B. Schoenmakers. Inorder traversal of a binary heap and its inversion in optimal time and space. In R. S. Bird, C. C. Morgan, and J. C. P. Woodcock, editors, Mathematics of Program Construction, volume 669 of Lecture Notes in Computer Science, pages 291–301. Springer-Verlag, 1992.Google Scholar
  29. [29]
    D. R. Smith. Top-down synthesis of divide-and-conquer algorithms. Artificial Intelligence, 27(1):43–96, 1985.zbMATHCrossRefMathSciNetGoogle Scholar
  30. [30]
    N. T. E. Ward. A refinement calculus for nondeterministic expressions. Ph.D. thesis, University of Queensland, 1994.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Oege de Moor
    • 1
  • Jeremy Gibbons
    • 1
  1. 1.Programming Research GroupOxford University Computing LaboratoryOxfordUK

Personalised recommendations