Abstract
We reflect on our experiences from work on the design and semantic underpinnings of Extended ML, a specification language which supports the specification and formal development of Standard ML programs. Our aim is to isolate problems and issues that are intrinsic to the general enterprise of designing a specification language for use with a given programming language. Consequently the lessons learned go far beyond our original aim of designing a specification language for ML.
This research was supported by EPSRC grant GR/K63795.
This research was supported by EPSRC grant GR/K63795, an EPSRC Advanced Fellowship, an SOEID/RSE Support Research Fellowship and the EC-funded FIREworks working group.
Chapter PDF
Keywords
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.
References
S. Abramsky. The lazy lambda calculus. In D. Turner, editor, Research Topics in Functional Programming, pages 65–116. Addison-Wesley, 1990.
R. di Cosmo. Type isomorphisms in a type-assignment framework. In Proc. 19th ACM Symp. on Principles of Programming Languages, pages 200–210, 1992.
L. Damas. Type Assignment in Programming Languages. PhD thesis, University of Edinburgh, 1985.
J. Goguen and J. Meseguer. Completeness of many-sorted equational logic. Houston Journal of Mathematics, 38:173–198, 1985.
C. Gunter. Semantics of Programming Languages. MIT Press, 1992.
J. Guttag and J. Horning. Larch: Languages and Tools for Formal Specification. Springer, 1993.
S. Kahrs. Limits of ML-definability. In Proceedings of PLILP'96, volume 1140 of Lecture Notes in Computer Science, pages 17–31. Springer, 1996.
S. Kahrs, D. Sannella, and A. Tarlecki. The definition of Extended ML. Technical Report ECS-LFCS-94-300, University of Edinburgh, 1994.
S. Kahrs, D. Sannella, and A. Tarlecki. The definition of Extended ML: A gentle introduction. Theoretical Computer Science, 173(2):445–484, 1997.
A. Kfoury, J. Tiuryn, and P. Urzyczyn. Type reconstruction in the presence of polymorphic recursion. ACM Transactions on Programming Languages and Systems, 15(2):290–311, 1993.
L. Lamport and L. Paulson. Should your specification language be typed? Technical Report 425, University of Cambridge, Computer Lab, 1997.
G. Leavens. An overview of Larch/C++: Behavioral specifications for C++ modules. In H. Kilov and W. Harvey, editors, Object-Oriented Behavorial Specifications, pages 121–142. Kluwer Academic, 1996.
X. Leroy. Polymorphic typing of an algorithmic language. Rapports de Recherche No. 1778, INRIA, 1992.
G. Longo, K. Milsted, and S. Soloviev. The genericity theorem and parametricity in the polymorphic λ-calculus. Theoretical Computer Science, 121:323–349, 1993.
D. Luckham, F. von Henke, B. Krieg-Brückner, and O. Owe. Anna, a Language for Annotating Ada Programs: Reference Manual, volume 260 of Lecture Notes in Computer Science. Springer, 1987.
R. Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348–375, 1978.
R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. MIT Press, 1990.
R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
E. Moggi. Computational lambda-calculus and monads. In Proc. 4th IEEE Symp. on Logic in Computer Science, pages 14–23, 1989.
C.-H. L. Ong. Correspondence between operational and denotational semantics: The full abstraction problem for PCF. In S. Abramsky, D. Gabbay, and T. Maibaum, editors, Handbook of Logic in Computer Science, Vol. 4, pages 269–356. Oxford Univ. Press, 1995.
P. Padawitz and M. Wirsing. Completeness of many-sorted equational logic revisited. EATCS Bulletin, 24:88–94, 1984.
S. Peyton Jones and P. Wadler. Imperative functional programming. In Proc. 20th Symp. on Principles of Programming Languages, pages 71–84, 1993.
A. Pitts and I. Stark. Observable properties of higher order functions that dynamically create local names, or: What's new? In Proc. 18th Intl. Symp. on Mathematical Foundations of Computer Science, volume 711 of Lecture Notes in Computer Science, pages 122–141. Springer, 1993.
J. Reynolds. Types, abstraction, and parametric polymorphism. In R.E.A. Mason, editor, Information Processing '83, pages 513–523, 1983.
H. Rogers. Theory of Recursive Functions and Effective Computability. McGraw-Hill, 1967.
A. Sabry and P. Wadler. A reflection on call-by-value. In Proc. Intl. Conf. on Functional Programming, 1996.
D. Sannella. Formal program development in Extended ML for the working programmer. In Proc. 3rd BCS/FACS Workshop on Refinement, Workshops in Computing, pages 99–130. Springer, 1991.
D. Sannella and A. Tarlecki. Program specification and development in Standard ML. In Proc. 12th ACM Symp. on Principles of Programming Languages, pages 67–77, 1985.
D. Sannella and A. Tarlecki. Extended ML: An institution-independent framework for formal program development. In Proc. Workshop on Category Theory and Computer Programming, volume 240 of Lecture Notes in Computer Science, pages 364–389. Springer, 1986.
D. Sannella and A. Tarlecki. Mind the gap! Abstract versus concrete models of specifications. In Proc. 21st Intl. Symp. on Mathematical Foundations of Computer Science, volume 1113 of Lecture Notes in Computer Science, pages 114–134. Springer, 1996.
D. Sannella and A. Tarlecki. Essential concepts of algebraic specification and program development. Formal Aspects of Computing, 9:229–269, 1997.
S. Thompson. Formulating Haskell. In Proc. Workshop on Functional Programming, Workshops in Computing. Springer, 1993.
M. Tofte. Operational Semantics and Polymorphic Type Inference. PhD thesis, University of Edinburgh, 1988.
P. Wadler. Theorems for free! In Proc. 4th ACM Conf. on Functional Programming Languages and Computer Architecture, pages 347–359, 1989.
J. Wells. Typability and type-checking in the second-order λ-calculus are equivalent and undecidable. In Proc. 9th IEEE Symp. on Logic in Computer Science, pages 176–185, 1994.
J. Wing, E. Rollins, and A. Zaremski. Thoughts on a Larch/ML and a new application for LP. In Proc. 1st Intl. Workshop on Larch, Workshops in Computing, pages 297–312. Springer, 1993.
A. Wright. Simple imperative polymorphism. LISP and Symbolic Computation, 8(4):343–365, 1995.
Author information
Authors and Affiliations
Corresponding author
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kahrs, S., Sannella, D. (1998). Reflections on the design of a specification language. In: Astesiano, E. (eds) Fundamental Approaches to Software Engineering. FASE 1998. Lecture Notes in Computer Science, vol 1382. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053589
Download citation
DOI: https://doi.org/10.1007/BFb0053589
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64303-6
Online ISBN: 978-3-540-69723-7
eBook Packages: Springer Book Archive