Hostname: page-component-8448b6f56d-c47g7 Total loading time: 0 Render date: 2024-04-23T22:40:52.160Z Has data issue: false hasContentIssue false

A module calculus for Pure Type Systems

Published online by Cambridge University Press:  04 May 2006

JUDICAËL COURANT*
Affiliation:
VERIMAG, UMR CNRS 5104, Centre Équation – 2, avenue de Vignate, 38610 Gières, France (e-mail: Judicael.Courant@imag.fr)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Several proof-assistants rely on the very formal basis of Pure Type Systems (PTS) as their foundations. We are concerned with the issues involved in the development of large proofs in these provers such as namespace management, development of reusable proof libraries and separate verification. Although implementations offer many features to address them, few theoretical foundations have been laid for them up to now. This is a problem as features dealing with modularity may have harmful, unsuspected effects on the reliability or usability of an implementation.

In this paper, we propose an extension of Pure Type Systems with a module system, , adapted from SML-like module systems for programming languages. This system gives a theoretical framework addressing the issues mentioned above in a quite uniform way. It is intended to be a theoretical foundation for the module systems of proof-assistants such as Coq or Agda. We show how reliability and usability can be formalized as metatheoretical properties and prove they hold for .

Type
Article
Copyright
Copyright © Cambridge University Press 2007

References

Davide, Ancona, & Elena, Zucca. (1996). An algebraic approach to mixins and modularity. Pages 179–193 of: Hanus, M., & Artalejo, M. Rodríguez (eds), 5th intl. conf. on algebraic and logic programming. Lecture Notes in Computer Science, no. 1139. Berlin: Springer-Verlag.Google Scholar
Aponte, M.-V., & Castagna, G. (1996). Programmation modulaire avec surcharge et liaison tardive. Journées francophones des langages applicatifs.Google Scholar
Asperti, Andrea. 1999 (Nov.). History, advancements, and projectual choices. Web page. http://www.cs.unibo.it/asperti/HELM/progress.html. See the November 26 entry.Google Scholar
Augustsson, Lennart. (1998). Cayenne – a language with dependent types. Pages 239–250 of: International conference on functional programming.Google Scholar
Augustsson, Lennart. (1999). Cayenne — Hotter than Haskell. http://www.cs.chalmers.se/augustss/cayenne/.Google Scholar
Barendregt, Henk. (1993). Typed lambda calculi. Abramsky et al. (ed), Handbook of logic in computer science. Oxford Univ. Press.Google Scholar
Barras, B., Boutin, S., Cornes, C., Courant, J., Coscoy, Y., Delahaye, D., de Rauglaudre, D., Filliâtre, J.C., Giménez, E., Herbelin, H., Huet, G., Laulhère, H., Loiseleur, P., Munoz, C., Murthy, C., Parent, C., Paulin, C., Saïbi, A., & Werner, B. 1999 (July). The Coq Proof Assistant Reference Manual – Version V6.3. http://coq.inria.fr/doc/main.html.Google Scholar
Bertot, Yves Grégoire, Benjamin, & Leroy, Xavier. (2005). A structured approach to proving compiler optimizations based on dataflow analysis. Types for proofs and programs, workshop types 2004. Lecture Notes in Computer Science. Springer-Verlag.Google Scholar
Betarte, Gustavo. (1998). Dependent record types and algebraic structures in type theory. Ph.D. thesis, PMG, Dept. of Computing Science, University of Göteborg and Chalmers University of Technology.Google Scholar
Betarte, Gustavo. 2000a (Sept.). Proof reutilization in {Martin-Löf's logical framework extended with record types and subtyping. Tech. rept. 00-09. InCo-Pedeciba.Google Scholar
Betarte, Gustavo. (2000b). Type checking dependent (record) types and subtyping. Journal of functional programming}, 10 (2), 137166.CrossRefGoogle Scholar
Bourbaki, Nicolas. (1970). Eléments de mathématique; théorie des ensembles. Paris: Hermann. Chap. IV.Google Scholar
Cachera, David Thomas, Jensen, David, Pichardie, & Gerardo, Schneider. (2005). Certified Memory Usage Analysis Proc. of 13th international symposium on formal methods (fm'05). Lecture Notes in Computer Science. http://www.springer.de/comp/lncs/index.html Springer-Verlag. to appear.Google Scholar
Cardelli, Luca. (1997). Program fragments, linking, and modularization. Pages 266–277 of: Conference record of the 24th symposium on principles of programming languages. Paris, France: ACM Press.Google Scholar
Jacek, Chrzaszcz 2003 (sep). Implementation of modules in the coq system. Pages 270–286 of: Basin, David, & Wolff, Burkhart (eds), Theorem proving in higher order logic. LNCS, vol. 2758. Roma, Italy.Google Scholar
Jacek, Chrzaszcz. (2004a). Modules in coq are and will be correct. Pages 130–146 of: Stefano, Berardi, Mario, Coppo, & Ferruccio, Damiani (eds), Types for proofs and programs, international workshop, types 2003. LNCS, vol. 3085. Springer-Verlag. Revised Selected Papers.Google Scholar
Jacek, Chrzaszcz. (2004b). Modules in type theory with generative definitions. Ph.D. thesis, Université Paris-Sud.Google Scholar
Coq. The Coq Proof Assistant. http://coq.inria.fr/.Google Scholar
Coquand, C., & Coquand, T. (1999). Structured type theory. Proc. workshop on logical frameworks and meta-languages (lfm'99).Google Scholar
Coquand, T., & Gallier, J. H. (1990). A proof of strong normalization for the {T}heory of {C}onstructions using a {K}ripke-like interpretation. Pages 479–497 of: Huet, G., & Plotkin, G. (eds), Preliminary proceedings 1st intl. workshop on logical frameworks, antibes, france, 711 may 1990.Google Scholar
Courant, Judicaël. (1997). An applicative module calculus. Pages 622–636 of: Theory and practice of software development 97. Lecture Notes in Computer Science. Lille, France: Springer-Verlag.Google Scholar
Courant, Judicaël. (1998). Un calcul de modules pour les systémes de types purs. Thése de doctorat, Ecole Normale Supérieure de Lyon.Google Scholar
Courant, Judicaël. 1999 (June). {$\mathcal{MC}$: A module calculus for Pure Type Systems. Research Report 1217. LRI.Google Scholar
Courant, Judicaël. (2002a). Explicit universes for the calculus of constructions. Pages 115–130 of: Carreno, Victor A., Munoz, César A., & Tahar, Sofiéne (eds), Theorem proving in higher order logics: 15th international conference, tphols 2002. Lecture Notes in Computer Science, vol. 2410. Hampton, VA, USA: Sprin-ger-Verlag.Google Scholar
Courant, Judicaël. (2002b). Strong normalization with singleton types. Bakel, Stefan Van (ed), Second workshop on intersection types and related systems. Electronic Notes in Computer Science, vol. 70. Copenhaguen, Danemark: Elsevier Science BV.Google Scholar
Crary, Karl Harper, Robert & Puri, Sidd. (1999). What is a recursive module? Pages 50–63 of: SIGPLAN conference on programming language design and implementation.Google Scholar
Dreyer, Derek. 2002 (Sept.). Moscow ml's higher-order modules are unsound. Post on the Types Forum. Available at http://www.cis.upenn.edu/\home{bcpierce/types/archives/current/msg0113 6.html.Google Scholar
Dreyer, Derek, Crary, Karl & Harper, Robert. 2002 (July). A type system for higher-order modules. Technical Report CMU-CS-02-122. CMU.Google Scholar
Farmer, W. M., Guttman, J. D., & Thayer, Fábrega, F. J. (1996). imps: An updated system description. Pages 298–302 of: McRobbie, M. A., & Slaney, J. K. (eds), 13th international conference on automated deduction. Lecture Notes in Computer Science. New Brunswick, NJ: Sprin-ger-Verlag.Google Scholar
Farmer, William M. (2000). An infrastructure for intertheory reasoning. Pages 115–131 of: McAllester, D. (ed), 17th international conference on automated deduction. Lecture Notes in Computer Science, vol. 1831. Pittsburgh, PA, USA: Sprin-ger-Verlag.Google Scholar
Farmer, William M., Guttman, Joshua D., & Thayer, F. Javier. (1992). Little theories. Pages 567–581 of: Kapur, Deepak (ed), 11th international conference on automated deduction. Lecture Notes in Computer Science, vol. 607. Saratoga Springs, NY: Sprin-ger-Verlag.Google Scholar
Farmer, William M., Guttman, Joshua D., & Thayer, F. Javier. 1995 (Apr.). The imps user's manual. The MITRE Corporation, Bedford, MA 01730 USA. Available from http://imps.mcmaster.ca/.Google Scholar
Filliâtre, J.-C., & Letouzey, P. 2004 (April). Functors for Proofs and Programs. Pages 370–384 of: Proceedings of the european symposium on programming. Lecture Notes in Computer Science, vol. 2986.Google Scholar
Flatt, Matthew, & Felleisen, Matthias. (1998). Units: Cool modules for {HOT} languages. Pages 236–248 of: Proceedings of the ACM SIGPLAN '98 conference on programming language design and implementation.Google Scholar
Geuvers, Herman. 1993 (Sept.). Logics and type systems. Ph.D. thesis, University of Nijmegen.Google Scholar
Goguen, Healfdene. 1994 (Aug). A typed operational semantics for type theory. Ph.D. thesis, University of Edinburgh. LFCS Report ECS-LFCS-94-304.Google Scholar
Harper, R., & Lillibridge, M. (1994). A type-theoretic approach to higher-order modules with sharing. In: popl94.Google Scholar
Harper, R., & Pollack, R. (1991). Type checking, universe polymorphism, and typical ambiguity in the calculus of constructions. Theoretical computer science, 89 (1).Google Scholar
Harper, R., Mitchell, J., & Moggi, E. (1990). Higher-order modules and the phase distinction. Pages 341–354 of: 17th symposium on principles of programming languages. ACM.Google Scholar
Harper, Robert. 2002 (Mar.). Programming in standard ML. Available from http://www-2.cs.cmu.edu/rwh/smlbook/.Google Scholar
Harper, Robert, & Pfenning, Frank. 1992 (Sept.). A module system for a programming language based on the LF logical framework. Tech. rept. CMU-CS-92-191. Carnegie Mellon University, Pittsburgh, Pennsylvania.CrossRefGoogle Scholar
Harper, Robert, & Pfenning, Frank. (1998). A module system for a programming language based on the {LF} logical framework. Journal of logic and computation, 1 (8).Google Scholar
Hirschowitz, Tom, & Leroy, Xavier. 2002 (Apr.). Mixin modules in a call-by-value setting. Pages 6–20 of: Le, Métayer, Daniel (ed), ESOP. Lecture Notes in Computer Science, vol. 2305.Google Scholar
Johnson, Andrew L., & Johnson, Brad C. (1997). Literate programming using noweb. Linux journal, Oct., 64–69.Google Scholar
Jones, Alex, Luo, Zhaohui, & Soloviev, Sergei. (1998). Some Algorithmic and Proof-Theoretical Aspects of Coercive Subtyping}. Proceedings of TYPES'96. Lecture Notes in Computer Science.CrossRefGoogle Scholar
Kammüller, Florian. (1996). Comparison of IMPS, PVS and Larch with respect to theory treatment and modularization. Unpublished draft available from http://www.first.gmd.de/florian/papers/index.html.Google Scholar
Kammüller, Florian. (2000). Modular reasoning in isabelle. 17th international conference on automated deduction, cade-17. Lecture Notes in Artificial Intelligence, vol. 1831. Sprin-ger-Verlag.Google Scholar
Kammüller, Florian, Wenzel, Markus, & Paulson, Lawrence C. (1999). Locales – a sectionning concept for isabelle. Bertot, Y., Dowek, G., Hirschowitz, A., Paulin, C., & Thery, L. (eds), Theorem proving in higher order logics, 12th international conference, tphols'99. Lecture Notes in Computer Science, vol. 1657. Sprin-ger-Verlag. Available from http://www.first.gmd.de/florian/papers/.Google Scholar
Lego. The LEGO proof assistant. http://www.dcs.ed.ac.uk/home/lego/.Google Scholar
Leroy, Xavier. (1994). Manifest types, modules, and separate compilation. In: popl94.Google Scholar
Leroy, Xavier. (1995). Applicative functors and fully transparent higher-order modules. Pages 142–153 of: Conference record of the 22nd symposium on principles of programming languages. San Francisco, California: ACM Press.Google Scholar
Leroy, Xavier, Doligez, Damien, Garrigue, Jacques, Rémy, Didier, & Vouillon, Jérôme. 2001 (Mar.). The {Objective Caml system release 3.01, documentation and user's manual. http://www.caml.org/ocaml/htmlman/index.html.Google Scholar
Lillibridge, Mark. 1997 (May). Translucent Sums: A Foundation for Higher-Order Module Systems. Ph.D. thesis, School of Computer Science, Carnegie Mellon University.Google Scholar
Luo, Zhaohui. (1990). An extended calculus of constructions. Ph.D. thesis, University of Edinburgh.Google Scholar
MacQueen, David B. (1984). Modules for Standard ML. Pages 198–207 of: Proceedings of the 1984 ACM conference on LISP and functional programming. ACM Press.Google Scholar
Milner, Robin, Tofte, Mads, Harper, Robert, & MacQueen, David. (1997). The definition of standard ml (revised). MIT Press.CrossRefGoogle Scholar
Owre, S., Shankar, N., Rushby, J. M., & Stringer-Calvert, D. W. J. 1999 (Sept.). Pvs language reference. Computer Science Laboratory, SRI International, Menlo Park, CA.Google Scholar
Owre, Sam, & Shankar, Natarajan. 1997 (Aug.). The formal semantics of PVS. Tech. rept. SRI-CSL-97-2. Computer Science Laboratory, SRI International, Menlo Park, CA.Google Scholar
Pollack, Randy. 1997 (Aug.). Theories in Type Theory. Talk at the Types Working Group Workshop on Subtyping, Inheritance and Modular Development of Proofs. Draft available at http://www.dcs.ed.ac.uk/home/rap/export/.Google Scholar
Pollack, Randy. 2000 (Aug.). Dependently Typed Records for Representing Mathematical Structures. Available at http://www.dcs.ed.ac.uk/home/rap/export/records.ps.gz. A previous version of this paper appears in Theorem Proving in Higher Order Logics (TPHOLs 2000).CrossRefGoogle Scholar
POPL'94. (1994). Conference record of the 21st symposium on principles of programming languages. Portland, Oregon: ACM Press.Google Scholar
Ramsey, Norman. (1994). Literate programming simplified. Ieee software, 11 (5), 97105.CrossRefGoogle Scholar
Ramsey, Norman. (2001). Noweb –- A Simple, Extensible Tool for Literate Programming. http://www.eecs.harvard.edu/nr/noweb/.Google Scholar
Russo, Claudio V. (1998). Types for modules. LFCS thesis ECS-LFCS-98-389, University of Edinburgh.Google Scholar
Severi, Paula. (1996). Normalisation in lambda calculus and its relation to type inference. Ph.D. thesis, Eindhoven University of Technology.Google Scholar
Shankar, N., Owre, S., & Rushby, J. M. 1993 (Feb.). Pvs tutorial. Computer Science Laboratory, SRI International, Menlo Park, CA. Also appears in Tutorial Notes, Formal Methods Europe '93: Industrial-Strength Formal Methods, pages 357–406, Odense, Denmark, April 1993.Google Scholar
Stone, Christopher A., & Harper, Robert. (2000). Deciding type equivalence in a language with singleton kinds. Pages 214–227 of: Reps, Thomas (ed), Conference record of the 27th symposium on principles of programming languages. Boston, Masschusetts: ACM Press. Available at http://www.cs.hmc.edu/stone/papers/popl00-preprint.ps.Google Scholar
Tasistro, Alvaro. (1997). Substitution, record types and subtyping in type theory, with applications to the theory of programming. Ph.D. thesis, PMG, Dept. of Computing Science, University of Göteborg and Chalmers University of Technology.Google Scholar
Tofte, Mads. (1996). Essentials of Standard ML modules. Pages 208–238 of: Launchbury, John, Meijer, Eric, & Sheard, Tim (eds), Advanced functional programming. Lecture Notes in Computer Science, vol. 1129. Springer-Verlag.Google Scholar
van, Benthem Jutting, McKinna J, L. S., & Pollack, R. 1993 (May). Checking algorithms for pure type systems. Types for proofs and programs: International workshop types'93. Lecture Notes in Computer Science, vol. 806.Google Scholar
Wenzel, Markus. 2001 (Feb.). Using axiomatic type classes in isabelle. TU München. Available from Isabelle web site.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.