Abstract
When developing safety critical applications, the programmer might want to be able to prove his or her code correct. The integration of a proof system and a programming language of industrial strength can be fairly useful in this respect, like in the case of, for instance, the B method [1], the Java Modelling Language [5] or the functional programming languages Erlang [3,7,9,24] and Clean [11,23,25]. This paper presents the concept of subtype marks, a concept that establishes still closer links between a programming language and a proof system by letting the programmer encode certain important properties of programs within the type system of the language. Subtype marks are introduced here as part of a simple functional language. This language can be regarded as a small subset of Clean.
Supported by the Hungarian National Science Research Grant (OTKA), Grant Nr. T037742.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abrial, J.-R.: The B-Book. Cambridge University Press, Cambridge (1996)
van Arkel, D.F.R.: Annotated Types. M.Sc. thesis, Rijksuniversiteit te Leiden, Vakgroep Informatica (1998)
Armstrong, J., Virding, R., Williams, M., Wikstrom, C.: Concurrent Programming in Erlang. Prentice Hall, Englewood Cliffs (1996)
Augustsson, L.: Cayenne—a language with dependent types. In: ACM International Conference on Functional Programming 1998. ACM Press, New York (1998)
Burdy, L., Cheon, Y., Cok, D., Ernst, M., Kiniry, J., Leavens, G.T., Rustan, K., Leino, M., Poll, E.: An overview of JML tools and applications. International Journal on Software Tools for Technology Transfer 7(3), 212–232 (2005)
Clarke, D.G., Potter, J.M., Noble, J.: Ownership types for flexible alias protection. In: Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) (October 1998)
Erlang Verification Tool—Version 2.0 (01) of April 9, 2001 (August 2005), http://www.sics.se/fdt/vericode/evt.html
Filman, R.E., Elrad, T., Clarke, S., Akşit, M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2005)
Fredlund, L-Å.: A Framework for Reasoning about Erlang Code. PhD. thesis, Royal Institute of Technology, Sweden (August 2001)
Hammond, K.: Hume. In: Proceedings of the Central-European Functional Programming School (CEFP), Budapest, Hungary (2005)
Home of Clean (August 2005), http://www.cs.ru.nl/~clean/
Kesseler, M.H.G.: The Implementation of Functional Languages on Parallel machines with Distributed Memory. Ph.D.thesis, University of Nijmegen (1996)
Koopman, P.: Constrained data types. Technical Report 96-36., Computer Science, Leiden University, The Netherlands (1996)
Koopman, P.: Language Support to Enforce Constraints on Data Types. Technical Report 96-37, Computer Science, Leiden University, The Netherlands (1996)
Koopman, P.: Constrained data types. In Dagstuhl Seminar Report, No. 156 (1996)
Kozsik, T.: Altípusjeles típusok. PhD thesis (in Hungarian). Eötvös Loránd University, Budapest, Hungary (under preparation)
Kozsik, T.: The expressive power of inequalities. In: Proceedings of 5th Joint Conference on Mathematics and Computer Science (5th MaCS), Debrecen, Hungary (2004) (abstract)
Kozsik, T.: Reasoning with Sparkle: a case study. Technical Report, University Eötvös Loránd, Faculty of Informatics, Budapest, Hungary (2004)
Kozsik, T.: Subtyping with subtype marks. Technical Report 2003-P05, University Eötvös Loránd, Faculty of Informatics, Budapest, Hungary (2003)
Kozsik, T., van Arkel, D., Plasmeijer, R.: Subtyping with Strengthening Type Invariants. In: Mohnen, M., Koopman, P. (eds.) Proceedings of the 12th International Workshop on Implementation of Functional Languages, Aachener Informatic-Berichte, Aachen, Germany, September 2000, pp. 315–330 (2000)
McBride, C.: Epigram: practical programming with dependent types. In: Vene, V., Uustalu, T. (eds.) AFP 2004. LNCS, vol. 3622, pp. 130–170. Springer, Heidelberg (in preparation) (2005), Available at: http://www.dur.ac.uk/CARG/epigram/epigram-afpnotes.pdf
MODULA-2 (August 2005), http://www.modula2.org/
de Mol, M., van Eekelen, M., Plasmeijer, R.: Theorem proving for Functional Programmers, Sparkle: A Functional Theorem Prover. In: Arts, T., Mohnen, M. (eds.) IFL 2002. LNCS, vol. 2312, p. 55. Springer, Heidelberg (2002)
Open Source Erlang (August 2005), http://www.erlang.org/
Plasmeijer, R., van Eekelen, M.: Functional Programming and Parallel Graph Rewriting. Addison-Wesley, Reading (1993)
The Ada 95 Reference Manual. Available at e.g.: http://lgl.epfl.ch/ada/
The Hume Page (August 2005), http://www-fp.dcs.st-and.ac.uk/hume/
Wirth, N.: Programming in Modula, vol. 2. Springer, Heidelberg (1983)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kozsik, T. (2006). Tutorial on Subtype Marks. In: Horváth, Z. (eds) Central European Functional Programming School. CEFP 2005. Lecture Notes in Computer Science, vol 4164. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11894100_7
Download citation
DOI: https://doi.org/10.1007/11894100_7
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-46843-1
Online ISBN: 978-3-540-46845-5
eBook Packages: Computer ScienceComputer Science (R0)