Skip to main content
×
Home

A certified implementation of ML with structural polymorphism and recursive types

  • JACQUES GARRIGUE (a1)
Abstract

The type system of Objective Caml has many unique features, which make ensuring the correctness of its implementation difficult. One of these features is structurally polymorphic types, such as polymorphic object and variant types, which have the extra specificity of allowing recursion. We implemented in Coq a certified interpreter for Core ML extended with structural polymorphism and recursion. Along with type soundness of evaluation, soundness and principality of type inference, and correctness of a stack-based interpreter, are also proved.

Copyright
References
Hide All
Aydemir B., Charguéraud A., Pierce B. C., Pollack R. and Weirich S. (2008) Engineering formal metatheory. In: Proceeding of the ACM Symposium on Principles of Programming Languages 3–15.
Aydemir B. E., Bohannon A., Fairbairn M., Foster J. N., Pierce B. C., Sewell P., Vytiniotis D., Washburn G., Weirich S., and Zdancewic S. (2005) Mechanized metatheory for the masses: The PoplMark challenge. In: Proceeding of the International Conference on Theorem Proving in Higher Order Logics. Springer lecture notes in computer science 3603 5065.
Barras B. (1999) Auto-Validation d'un Système de Preuves avec Familles Inductives, Thèse de doctorat, Université Paris 7.
Crary K. and Harper B.. (2009) Mechanized definition of Standard ML alpha release. Twelf proof scripts.
Dubois C. (2000) Proving ML type soundness within Coq. In: Proceeding of the International Conference on Theorem Proving in Higher Order Logics. Springer lecture notes in computer science 1869 126144.
Dubois C. and Ménissier-Morain V.. (1999) Certification of a type inference tool for ML: Damas-Milner within Coq. Journal of Automated Reasoning 23 (3)319346.
Furuse J. P. and Garrigue J. (1995) A label-selective lambda-calculus with optional arguments and its compilation method. RIMS Preprint 1041, Research Institute for Mathematical Sciences, Kyoto University.
Garrigue J. (1998) Programming with polymorphic variants. In: ML Workshop, Baltimore.
Garrigue J. (2002) Simple type inference for structural polymorphism. In: The 9th International Workshop on Foundations of Object-Oriented Languages. Portland, Oregon.
Garrigue J. (2004) Relaxing the value restriction. In: Proceeding International Symposium on Functional and Logic Programming. Springer Lecture Notes in Computer Science 2998 196213.
Garrigue J. (2010) A certified implementation of ML with structural polymorphism. In: Proceeding Asian Symposium on Programming Languages and Systems. Springer-Verlag 6461 360375. (Shanghai)
Garrigue J. and Rémy D. (1999) Extending ML with semi-explicit higher order polymorphism. Information and Computation 155 134171.
Lee D.K., Crary K. and Harper R. (2007) Towards a mechanized metatheory of standard ML. In: Proceeding ACM Symposium on Principles of Programming Languages 173–184.
Leroy X., Doligez D., Garrigue J., Rémy D. and Vouillon J. (2008) The Objective Caml system release 3.11, Documentation and user's manual, Projet Gallium, INRIA.
Naraschewski W. and Nipkow T. (1999) Type inference verified: Algorithm W in Isabelle/HOL. Journal of Automated Reasoning 23 299318.
Odersky M., Sulzmann M. and Wehr M. (1999) Type inference with constrained types. Theory and Practice of Object Systems 5 (1)3555.
Oheimb D. v. and Nipkow T. (1999) Machine-checking the Java specification: Proving type-safety. In: Alves-Foss J. (ed.) Formal Syntax and Semantics of Java. Springer Lecture Notes in Computer Science 1523 119156.
Ohori A. (1995) A polymorphic record calculus and its compilation. ACM Transactions on Programming Languages and Systems 17 (6)844895.
Owens S. (2008) A sound semantics for OCaml light. In: Proceeding European Symposium on Programming. Springer Lecture Notes in Computer Science 4960 115.
Paulson L. (1985) Verifying the unification algorithm in LCF. Science of Computer Programming 5 143169.
Rémy D. (1989) Typechecking records and variants in a natural extension of ML. In: Proceeding ACM Symposium on Principles of Programming Languages 77–87.
The Coq Team. (2009) The Coq Proof Assistant, Version 8.2. INRIA.
Tobin-Hochstadt S. and Felleisen M. (2008) The design and implementation of typed scheme. In: Proceeding ACM Symposium on Principles of Programming Languages 395–406.
Urban C. and Nipkow T. (2009) Nominal verification of algorithm W. In: Huet G., Lévy J.-J. and Plotkin G. (eds.) From Semantics to Computer Science. Essays in Honour of Gilles Kahn, Cambridge University Press 363382.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Mathematical Structures in Computer Science
  • ISSN: 0960-1295
  • EISSN: 1469-8072
  • URL: /core/journals/mathematical-structures-in-computer-science
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 16 *
Loading metrics...

Abstract views

Total abstract views: 146 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 22nd November 2017. This data will be updated every 24 hours.