ML Pattern-Matching, Recursion, and Rewriting: From FoCaLiZe to Dedukti

  • Raphaël Cauderlier
  • Catherine Dubois
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9965)


The programming environment FoCaLiZe allows the user to specify, implement, and prove programs with the help of the theorem prover Zenon. In the actual version, those proofs are verified by Coq. In this paper we propose to extend the FoCaLiZe compiler by a backend to the Dedukti language in order to benefit from Zenon Modulo, an extension of Zenon for Deduction modulo. By doing so, FoCaLiZe can benefit from a technique for finding and verifying proofs more quickly. The paper focuses mainly on the process that overcomes the lack of local pattern-matching and recursive definitions in Dedukti.



This work has been partially supported by the BWare project (ANR-12-INSE-0010) funded by the INS programme of the French National Research Agency (ANR).


  1. 1.
    Assaf, A.: A framework for defining computational higher-order logics. Ph.D. thesis, École Polytechnique (2015)Google Scholar
  2. 2.
    Assaf, A., Burel, G.: Translating HOL to Dedukti. In: Kaliszyk, C., Paskevich, A. (eds.) Proceedings Fourth Workshop on Proof eXchange for Theorem Proving. EPTCS, vol. 186, Berlin, Germany, pp. 74–88 (2015)Google Scholar
  3. 3.
    Bonichon, R., Delahaye, D., Doligez, D.: Zenon: an extensible automated theorem prover producing checkable proofs. In: Dershowitz, N., Voronkov, A. (eds.) LPAR 2007. LNCS (LNAI), vol. 4790, pp. 151–165. Springer, Heidelberg (2007). doi: 10.1007/978-3-540-75560-9_13 CrossRefGoogle Scholar
  4. 4.
    Burel, G.: A shallow embedding of resolution and superposition proofs into the \(\lambda {\varPi }\)-calculus modulo. In: Blanchette, J.C., Urban, J. (eds.) PxTP 2013. 3rd International Workshop on Proof Exchange for Theorem Proving. EasyChair Proceedings in Computing, vol. 14, Lake Placid, USA, pp. 43–57 (2013)Google Scholar
  5. 5.
    Cauderlier, R.: Object-oriented mechanisms for interoperability between proof systems. Ph.D. thesis, Conservatoire National des Arts et Métiers, Paris (draft)Google Scholar
  6. 6.
    Cauderlier, R., Dubois, C.: Objects and subtyping in the \(\lambda \varPi \)-calculus modulo. In: Post-proceedings of the 20th International Conference on Types for Proofs and Programs (TYPES 2014). Leibniz International Proceedings in Informatics (LIPIcs), Schloss Dagstuhl, Paris (2014)Google Scholar
  7. 7.
    Cauderlier, R., Halmagrand, P.: Checking Zenon Modulo proofs in Dedukti. In: Kaliszyk, C., Paskevich, A. (eds.) Proceedings 4th Workshop on Proof eXchange for Theorem Proving. EPTCS, vol. 186, Berlin, Germany, pp. 57–73 (2015)Google Scholar
  8. 8.
    Cousineau, D., Dowek, G.: Embedding pure type systems in the \(\lambda {\varPi }\)-calculus modulo. In: Rocca, S.R.D. (ed.) TLCA 2007. LNCS, vol. 4583, pp. 102–117. Springer, Heidelberg (2007). doi: 10.1007/978-3-540-73228-0_9 CrossRefGoogle Scholar
  9. 9.
    Delahaye, D., Doligez, D., Gilbert, F., Halmagrand, P., Hermant, O.: Zenon Modulo: when Achilles outruns the tortoise using deduction modulo. In: McMillan, K., Middeldorp, A., Voronkov, A. (eds.) LPAR-19. LNCS, vol. 8312, pp. 274–290. Springer, Heidelberg (2013). doi: 10.1007/978-3-642-45221-5_20 CrossRefGoogle Scholar
  10. 10.
    Dubois, C., Pessaux, F.: Termination proofs for recursive functions in FoCaLiZe. In: Serrano, M., Hage, J. (eds.) TFP 2015. LNCS, vol. 9547, pp. 136–156. Springer, Heidelberg (2016). doi: 10.1007/978-3-319-39110-6_8 CrossRefGoogle Scholar
  11. 11.
    Giesl, J., Raffelsieper, M., Schneider-Kamp, P., Swiderski, S., Thiemann, R.: Automated termination proofs for Haskell by term rewriting. ACM Trans. Program. Lang. Syst. 33(2), 7:1–7:39 (2011)CrossRefGoogle Scholar
  12. 12.
    Kahl, W.: Basic pattern matching calculi: a fresh view on matching failure. In: Kameyama, Y., Stuckey, P.J. (eds.) FLOPS 2004. LNCS, vol. 2998, pp. 276–290. Springer, Heidelberg (2004). doi: 10.1007/978-3-540-24754-8_20 CrossRefGoogle Scholar
  13. 13.
    Klop, J.W., van Oostrom, V., de Vrijer, R.: Lambda calculus with patterns. Theoret. Comput. Sci. 398(1–3), 16–31 (2008). Calculi, Types and Applications: Essays in honour of M. Coppo, M. Dezani-Ciancaglini and S. Ronchi Della RoccaMathSciNetCrossRefzbMATHGoogle Scholar
  14. 14.
    Lucas, S., Peña, R.: Rewriting techniques for analysing termination and complexity bounds of Safe programs. In: LOPSTR 2008, pp. 43–57 (2008)Google Scholar
  15. 15.
    Pessaux, F.: FoCaLiZe: inside an F-IDE. In: Dubois, C., Giannakopoulou, D., Méry, D. (eds.) Proceedings 1st Workshop on Formal Integrated Development Environment, F-IDE 2014. EPTCS, vol. 149, Grenoble, France, pp. 64–78 (2014)Google Scholar
  16. 16.
    Peyton Jones, S.L.: The Implementation of Functional Programming Languages. Prentice-Hall International Series in Computer Science. Prentice-Hall, Inc., Upper Saddle River (1987)zbMATHGoogle Scholar
  17. 17.
    Saillard, R.: Type checking in the \(\lambda {\varPi }\)-calculus modulo: theory and practice. Ph.D. thesis, MINES Paritech (2015)Google Scholar

Copyright information

© Springer International Publishing AG 2016

Authors and Affiliations

  1. 1.Inria - Saclay and Cnam - CedricParisFrance
  2. 2.ENSIIE - Cedric and SamovarÉvryFrance

Personalised recommendations