Abstract
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.
Keywords
- 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.
This is a preview of subscription content, access via your institution.
Buying options
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
R. C. Backhouse. Making formality work for us. EATCS Bulletin, 38:219–249, 1989.
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.
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.
M. Barr and C. Wells. Category Theory for Computing Science. International Series in Computer Science. Prentice Hall, 1990.
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.
F. L. Bauer and H. Wössner. Algorithmic Language and Program Development. Texts and Monographs in Computer Science. Springer-Verlag, 1982.
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.
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.
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.
R. S Bird. Introduction to Functional Programming in Haskell. International Series in Computer Science. Prentice Hall, 1998.
R. S. Bird and O. De Moor. Algebra of Programming. International Series in Computer Science. Prentice Hall, 1996.
C. Brink and G. Schmidt, editors. Relational Methods in Computer Science. Springer-Verlag, 1996. Supplemental Volume of the Journal Computing, to appear.
W. Chen and J. T. Udding. Program inversion: More than fun! Science of Computer Programming, 15(1):1–13, 1990.
P. L. Curien. Categorical Combinators, Sequential Algorithms and Functional Programming. Research Notes in Theoretical Computer Science. Pitman, 1986.
E. W. Dijkstra. A Discipline of Programming. Series in Automatic Computation. Prentice Hall, 1976.
R. W. Floyd. Syntactic analysis and operator precedence. Journal of the ACM, 10(3):316–333, 1963.
D. Gries. The Science of Programming. Texts and Monographs in Computer Science. Springer-Verlag, 1981.
C. A. R. Hoare and J. He. The weakest prespecification, I. Fundamenta Informaticae, 9(1):51–84, 1986.
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.
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.
J. Lambek and P. J. Scott. Introduction to Higher Order Categorical Logic, volume 7 of Cambridge Studies in Advanced Mathematics. Cambridge University Press, 1986.
C. E. Martin. Preordered categories and predicate transformers. D.Phil. thesis, Computing Laboratory, Oxford, UK, 1991.
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.
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.
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.
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.
D. R. Smith. Top-down synthesis of divide-and-conquer algorithms. Artificial Intelligence, 27(1):43–96, 1985.
N. T. E. Ward. A refinement calculus for nondeterministic expressions. Ph.D. thesis, University of Queensland, 1994.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
de Moor, O., Gibbons, J. (2000). Pointwise Relational Programming. In: Rus, T. (eds) Algebraic Methodology and Software Technology. AMAST 2000. Lecture Notes in Computer Science, vol 1816. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45499-3_27
Download citation
DOI: https://doi.org/10.1007/3-540-45499-3_27
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67530-3
Online ISBN: 978-3-540-45499-1
eBook Packages: Springer Book Archive