Abstract
Modern proof assistants such as Coq and Isabelle provide high degrees of expressiveness and assurance because they support formal reasoning in higher-order logic and supply explicit machine-checkable proof objects. Unfortunately, large scale proof development in these proof assistants is still an extremely difficult and time-consuming task. One major weakness of these proof assistants is the lack of a single language where users can develop complex tactics and decision procedures using a rich programming model and in a typeful manner. This limits the scalability of the proof development process, as users avoid developing domain-specific tactics and decision procedures.
In this paper, we present VeriML - a novel language design that couples a type-safe effectful computational language with first-class support for manipulating logical terms such as propositions and proofs. The main idea behind our design is to integrate a rich logical framework - similar to the one supported by Coq - inside a computational language inspired by ML. The language design is such that the added features are orthogonal to the rest of the computational language, and also do not require significant additions to the logic language, so soundness is guaranteed. We have built a prototype implementation of VeriML including both its type-checker and an interpreter. We demonstrate the effectiveness of our design by showing a number of type-safe tactics and decision procedures written in VeriML.
Supplemental Material
- }}Henk P. Barendregt and Herman Geuvers. Proof-assistants using dependent type systems. In A. Robinson and A. Voronkov, editors, Handbook of Automated Reasoning. Elsevier Sci. Pub. B.V., 1999. Google Scholar
Digital Library
- }}B. Barras, S. Boutin, C. Cornes, J. Courant, Y. Coscoy, D. Delahaye, D. de Rauglaudre, J.C. Filliâtre, E. Giménez, H. Herbelin, et al. The Coq proof assistant reference manual (version 8.3), 2010.Google Scholar
- }}S. Boutin. Using reflection to build efficient and certified decision procedures. Lecture Notes in Computer Science, 1281:515--529. 1997. Google Scholar
Digital Library
- }}A. R. Bradley and Z. Manna. The calculus of computation: decision procedures with applications to verification. Springer-Verlag New York Inc, 2007. Google Scholar
Digital Library
- }}C. Chen and H. Xi. Combining programming with theorem proving. In Proceedings of the tenth ACM SIGPLAN international conference on Functional programming, page 77. ACM, 2005. Google Scholar
Digital Library
- }}A. Chlipala. Certified Programming with Dependent Types, 2008. URL http://adam.chlipala.net/cpdt.Google Scholar
- }}Adam J. Chlipala, J. Gregory Malecha, Greg Morrisett, Avraham Shinnar, and Ryan Wisnesky. Effective interactive proofs for higher-order imperative programs. In Proceeding of the 14th ACM SIGPLAN international conference on Functional programming, pages 79--90. ACM, 2009. Google Scholar
Digital Library
- }}D. Delahaye. A tactic language for the system Coq. Lecture notes in computer science, pages 85--95, 2000.Google Scholar
- }}D. Delahaye. A proof dedicated meta-language. Electronic Notes in Theoretical Computer Science, 70(2) 96--109, 2002.Google Scholar
Cross Ref
- }}X. Feng, Z. Shao, Y. Guo, and Y. Dong. Combining domain-specific and foundational logics to verify complete software systems. In Proc. 2nd IFIP Working Conference on Verified Software: Theories, Tools, and Experiments (VSTTE'08), volume 5295 of LNCS, pages 54--69. Springer, October 2008. Google Scholar
Digital Library
- }}S. Fogarty, E. Pasalic, J. Siek, and W. Taha. Concoqtion: indexed types now! In Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, pages 112--121. ACM New York, NY, USA, 2007. Google Scholar
Digital Library
- }}M. J. Gordon, R. Milner, and C.P. Wadsworth. Edinburgh LCF: a mechanized logic of computation. Springer-Verlag Berlin, 10: 11--25, 1979.Google Scholar
- }}R. Harper, F. Honsell, and G. Plotkin. A framework for defining logics. Journal of the ACM, 40 (1): 143--184, 1993. Google Scholar
Digital Library
- }}J. Harrison. HOL Light: A tutorial introduction. Lecture Notes in Computer Science, pages 265--269, 1996.Google Scholar
Digital Library
- }}C. Hawblitzel and E. Petrank. Automated verification of practical garbage collectors. ACM SIGPLAN Notices, 44 (1): 441--453, 2009. Google Scholar
Digital Library
- }}G. Klein, K. Elphinstone, G. Heiser, J. Andronick, D. Cock, P. Derrin, D. Elkaduwe, K. Engelhardt, R. Kolanski, M. Norrish, et al. seL4: Formal verification of an OS kernel. In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, pages 207--220. ACM, 2009. Google Scholar
Digital Library
- }}X. Leroy. Formal verification of a realistic compiler. Communications of the ACM, 52 (7): 107--115. 2009. Google Scholar
Digital Library
- }}D.R. Licata, N. Zeilberger, and R. Harper. Focusing on binding and computation. In Logic in Computer Science, 2008. LICS'08, pages 241--252. 2008. Google Scholar
Digital Library
- }}A. Nanevski, G. Morrisett, and L. Birkedal. Polymorphism and separation in hoare type theory. In Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming, pages 62--73. ACM New York, NY, USA. 2006. Google Scholar
Digital Library
- }}Aleksandar Nanevski, Frank Pfenning, and Brigitte Pientka. Contextual modal type theory. ACM Trans. Comput. Log., 9 (3), 2008. Google Scholar
Digital Library
- }}Aleksandar Nanevski, Viktor Vafeiadis, and Josh Berdine. Structuring the verification of heap-manipulating programs. In Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 261--274. ACM, 2010. Google Scholar
Digital Library
- }}T. Nipkow, L.C. Paulson, and M. Wenzel. Isabelle/HOL : A Proof Assistant for Higher-Order Logic, volume 2283 of LNCS, 2002. Google Scholar
Digital Library
- }}Ulf Norell. Towards a practical programming language based on dependent type theory. Technical report, Goteborg University, 2007.Google Scholar
- }}C. Paulin-Mohring. Inductive definitions in the system Coq; rules and properties. Lecture Notes in Computer Science, pages 328--328, 1993.Google Scholar
- }}Brigitte Pientka. A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutions. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 371--382. ACM, 2008. Google Scholar
Digital Library
- }}Brigitte Pientka and Joshua Dunfield. Programming with proofs and explicit contexts. In Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming, pages 163--173. ACM New York, NY, USA, 2008. Google Scholar
Digital Library
- }}B.C. Pierce. Types and programming languages. The MIT Press, 2002. Google Scholar
Digital Library
- }}A. Poswolsky and C. Schürmann. Practical programming with higher-order encodings and dependent types. Lecture Notes in Computer Science, 4960: 93, 2008. Google Scholar
Digital Library
- }}K. Slind and M. Norrish. A brief overview of HOL4. In TPHOLs, pages 28--32. Springer, 2008. Google Scholar
Digital Library
- }}M. Sozeau. Subset coercions in Coq. Types for Proofs and Programs, pages 237--252, 2007. Google Scholar
Cross Ref
- }}A. Stampoulis and Z. Shao. VeriML: Typed computation of logical terms inside a language with effects (extended version). Technical report YALEU/DCS/TR-1430, Dept. of Computer Science, Yale University, New Haven, CT, 2010. URL http://flint.cs.yale.edu/publications/veriml.htm.Google Scholar
- }}G.S. Tseitin. On the complexity of derivation in propositional calculus. Studies in constructive mathematics and mathematical logic. 2 (115--125): 10--13, 1968.Google Scholar
- }}Benjamin Werner. Une Théorie des Constructions Inductives. PhD thesis, A L'Université Paris 7, Paris, France, 1994.Google Scholar
Index Terms
VeriML: typed computation of logical terms inside a language with effects
Recommendations
VeriML: typed computation of logical terms inside a language with effects
ICFP '10: Proceedings of the 15th ACM SIGPLAN international conference on Functional programmingModern proof assistants such as Coq and Isabelle provide high degrees of expressiveness and assurance because they support formal reasoning in higher-order logic and supply explicit machine-checkable proof objects. Unfortunately, large scale proof ...
POPLMark reloaded: mechanizing logical relations proofs (invited talk)
CPP 2018: Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and ProofsMechanizing formal systems, given via axioms and inference rules, together with proofs about them plays an important role in establishing trust in formal developments. Over the past decade, the POPLMark challenge popularized the use of proof assistants ...
Canonical HybridLF
We introduce Canonical HybridLF (CHLF), a metalogic for proving properties of deductive systems, implemented in Isabelle HOL. CHLF is closely related to two other metalogics. The first is the Edinburgh Logical Framework (LF) by Harper, Honsell and ...







Comments