Abstract
We formulate a logical description of the functional programming language Miranda. Distinctive features include a full treatment of pattern matching with repeated variables and the characterisation of various (sub-)domains, like the defined natural numbers and finite definite lists, by means of new quantifiers. These quantifiers are introduced by induction rules, and also carry elimination rules. We also discuss the rôle of fixed point induction and issues of modularisation and scale.
Similar content being viewed by others
References
Abramsky, S.: The Lazy Lambda Calculus. In:Declarative Programming, David A. Turner, (ed.), Addison Wesley, 1989.
Alagić, S and Arbib, M. A.:The Design of Well-Structured and Correct Programs, Springer Verlag, 1978.
Barrett, G.: Formal Methods Applied to a Floating Point Number System. IEEE Transactions on Software Engineering, Vol. 15, No. 5, May 1989.
Bird, R. and Wadler, P.:An Introduction to Functional Programming, Prentice-Hall, 1988.
Hudak, P. and Wadler, P.: Report on the functional programming language Haskell, December 1988. Draft proposed standard for the functional programming language, designed by the authors and twelve others.
Bell, J. L. and Machover, M.:A Course in Mathematical Logic, North-Holland, 1977.
Jones, C. B.:Systematic Software Development using VDM, Prentice-Hall, 1986.
Moggi, E.: Categories of partial morphisms and the λp calculus. In:Category Theory and Computer Programming, Lecture Notes in Computer Science 240, Springer Verlag, 1985.
Paulson, L. C.:Logic and Computation — Interactive Proof with Cambridge LCF, Cambridge University Press, 1987.
Peyton Jones, S.:The Implementation of Functional Programming Languages, Prentice Hall International, 1987.
Plotkin, G.: Lecture notes on ‘bottomless’ domains. Lectures delivered at CSLI, 1985.
Plotkin, G.: (Towards a) logic for computable functions. Manuscript describing a logic based on ‘bottomless’ domains, 1985.
Scott, D. S.: Identity and existence in intuitionistic logic. In:Applications of Sheaves, M. P. Fourman, C. S. Mulvey, and D. S. Scott (eds), Lecture Notes in Mathematics 753, Springer-Verlag, 1979.
Thompson, S. J. Laws in Miranda. In:Proc. ACM Conf. on LISP and Functional Programming, ACM Press, 1986.
Thompson, S. J. Proving properties of functions defined on lawful types, Technical Report 37, Computing Laboratory, University of Kent at Canterbury, 1986. (Revised version to appear in “Science of Computer Programming”).
Thompson, S. J. A logic for Miranda, Technical Report 56, Computing Laboratory, University of Kent at Canterbury, Canterbury, Kent, UK, October 1988.
Turner, D. A.: Miranda: a non-strict functional language with polymorphic types. In:Functional Programming Languages and Computer Architecture, J. -P. Jouannaud, (ed.) Springer-Verlag, 1985.
Wadler, P.: Pattern matching. In:The Implementation of Functional Programming Languages, S. Peyton Jones (ed.) Chapter 5, Prentice Hall, 1987.
Wikstrom, A.:Functional Programming in Standard ML, Prentice-Hall, 1987.
Author information
Authors and Affiliations
Additional information
Miranda is a trade mark of Research Software Ltd.
Rights and permissions
About this article
Cite this article
Thompson, S. A logic for Miranda. Formal Aspects of Computing 1, 339–365 (1989). https://doi.org/10.1007/BF01887213
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01887213