Tutorial on Subtype Marks

  • Tamás Kozsik
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4164)


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.


Type System Theorem Prover Proof System Logical Formula Canonical Representation 
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.
    Abrial, J.-R.: The B-Book. Cambridge University Press, Cambridge (1996)MATHCrossRefGoogle Scholar
  2. 2.
    van Arkel, D.F.R.: Annotated Types. M.Sc. thesis, Rijksuniversiteit te Leiden, Vakgroep Informatica (1998)Google Scholar
  3. 3.
    Armstrong, J., Virding, R., Williams, M., Wikstrom, C.: Concurrent Programming in Erlang. Prentice Hall, Englewood Cliffs (1996)Google Scholar
  4. 4.
    Augustsson, L.: Cayenne—a language with dependent types. In: ACM International Conference on Functional Programming 1998. ACM Press, New York (1998)Google Scholar
  5. 5.
    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)CrossRefGoogle Scholar
  6. 6.
    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)Google Scholar
  7. 7.
    Erlang Verification Tool—Version 2.0 (01) of April 9, 2001 (August 2005),
  8. 8.
    Filman, R.E., Elrad, T., Clarke, S., Akşit, M.: Aspect-Oriented Software Development. Addison-Wesley, Reading (2005)Google Scholar
  9. 9.
    Fredlund, L-Å.: A Framework for Reasoning about Erlang Code. PhD. thesis, Royal Institute of Technology, Sweden (August 2001)Google Scholar
  10. 10.
    Hammond, K.: Hume. In: Proceedings of the Central-European Functional Programming School (CEFP), Budapest, Hungary (2005)Google Scholar
  11. 11.
    Home of Clean (August 2005),
  12. 12.
    Kesseler, M.H.G.: The Implementation of Functional Languages on Parallel machines with Distributed Memory. Ph.D.thesis, University of Nijmegen (1996)Google Scholar
  13. 13.
    Koopman, P.: Constrained data types. Technical Report 96-36., Computer Science, Leiden University, The Netherlands (1996)Google Scholar
  14. 14.
    Koopman, P.: Language Support to Enforce Constraints on Data Types. Technical Report 96-37, Computer Science, Leiden University, The Netherlands (1996)Google Scholar
  15. 15.
    Koopman, P.: Constrained data types. In Dagstuhl Seminar Report, No. 156 (1996)Google Scholar
  16. 16.
    Kozsik, T.: Altípusjeles típusok. PhD thesis (in Hungarian). Eötvös Loránd University, Budapest, Hungary (under preparation)Google Scholar
  17. 17.
    Kozsik, T.: The expressive power of inequalities. In: Proceedings of 5th Joint Conference on Mathematics and Computer Science (5th MaCS), Debrecen, Hungary (2004) (abstract)Google Scholar
  18. 18.
    Kozsik, T.: Reasoning with Sparkle: a case study. Technical Report, University Eötvös Loránd, Faculty of Informatics, Budapest, Hungary (2004)Google Scholar
  19. 19.
    Kozsik, T.: Subtyping with subtype marks. Technical Report 2003-P05, University Eötvös Loránd, Faculty of Informatics, Budapest, Hungary (2003)Google Scholar
  20. 20.
    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)Google Scholar
  21. 21.
    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: CrossRefGoogle Scholar
  22. 22.
    MODULA-2 (August 2005),
  23. 23.
    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)CrossRefGoogle Scholar
  24. 24.
    Open Source Erlang (August 2005),
  25. 25.
    Plasmeijer, R., van Eekelen, M.: Functional Programming and Parallel Graph Rewriting. Addison-Wesley, Reading (1993)MATHGoogle Scholar
  26. 26.
    The Ada 95 Reference Manual. Available at e.g.:
  27. 27.
    The Hume Page (August 2005),
  28. 28.
    Wirth, N.: Programming in Modula, vol. 2. Springer, Heidelberg (1983)MATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Tamás Kozsik
    • 1
  1. 1.Dept. Programming Languages and CompilersEötvös Loránd UniversityBudapestHungary

Personalised recommendations