Dependently Typed Programming Based on Automated Theorem Proving

  • Alasdair Armstrong
  • Simon Foster
  • Georg Struth
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7342)


Mella is a minimalistic dependently typed programming language and interactive theorem prover implemented in Haskell. Its main purpose is to investigate the effective integration of automated theorem provers in this pure and simple setting. Such integrations are essential for supporting program development in dependently typed languages. We integrate the equational theorem prover Waldmeister and test it on more than 800 proof goals from the TPTP library. In contrast to previous approaches, the reconstruction of Waldmeister proofs within Mella is quite robust and does not generate a significant overhead to proof search. Mella thus yields a template for integrating more expressive theorem provers in more sophisticated languages.


Automate Theorem Type Check Automate Theorem Prove Proof Search Proof Term 
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.
    Armand, M., Faure, G., Grégoire, B., Keller, C., Théry, L., Werner, B.: A Modular Integration of SAT/SMT Solvers to Coq through Proof Witnesses. In: Jouannaud, J.-P., Shao, Z. (eds.) CPP 2011. LNCS, vol. 7086, pp. 135–150. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  2. 2.
    Armstrong, A., Struth, G., Foster, S.: Dependently typed programming based on automated theorem proving. Technical Report (2011),
  3. 3.
    Aspinall, D.: Proof General: A Generic Tool for Proof Development. In: Graf, S. (ed.) TACAS 2000. LNCS, vol. 1785, pp. 38–42. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  4. 4.
    Awodey, S., Warren, M.A.: Homotopy theoretic models of identity types. Math. Proc. Camb. Phil. Soc. 146, 45–55 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    Bachmair, L., Dershowitz, N., Plaisted, D.A.: Completion without failure. In: Ait-Kaci, H., Nivat, M. (eds.) Resolution of Equations in Algebraic Structures, pp. 1–30. Academic Press (1989)Google Scholar
  6. 6.
    Barendregt, H.: Introduction to generalized type systems. Journal of functional programming 1(2), 125–154 (1991)MathSciNetzbMATHGoogle Scholar
  7. 7.
    Barendregt, H., Barendsen, E.: Autarkic computations in formal proofs. Journal of Automated Reasoning 28(3), 321–336 (2002)MathSciNetCrossRefzbMATHGoogle Scholar
  8. 8.
    Bernardy, J.-P., Jansson, P., Paterson, R.: Parametricity and dependent types. SIGPLAN Not. 45, 345–356 (2010)CrossRefGoogle Scholar
  9. 9.
    Bertot, Y., Castéran, P.: Interactive theorem proving and program development: Coq’Art: the calculus of inductive constructions. Springer (2004)Google Scholar
  10. 10.
    Blanchette, J.C., Bulwahn, L., Nipkow, T.: Automatic Proof and Disproof in Isabelle/HOL. In: Tinelli, C., Sofronie-Stokkermans, V. (eds.) FroCos 2011. LNCS, vol. 6989, pp. 12–27. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  11. 11.
    Bove, A., Dybjer, P., Norell, U.: A Brief Overview of Agda – A Functional Language with Dependent Types. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 73–78. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  12. 12.
    Bove, A., Dybjer, P., Sicard-Ramírez, A.: Combining Interactive and Automatic Reasoning in First Order Theories of Functional Programs. In: Birkedal, L. (ed.) FOSSACS 2012. LNCS, vol. 7213, pp. 104–118. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  13. 13.
    Charguéraud, A.: The locally nameless representation. Journal of Automated Reasoning (2011), doi:10.1007/s10817-011-9225-2Google Scholar
  14. 14.
    Dybjer, P.: Inductive families. Formal Aspects of Computing 6, 440–465 (1994)CrossRefzbMATHGoogle Scholar
  15. 15.
    Foster, S., Struth, G.: Integrating an Automated Theorem Prover into Agda. In: Bobaru, M., Havelund, K., Holzmann, G.J., Joshi, R. (eds.) NFM 2011. LNCS, vol. 6617, pp. 116–130. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  16. 16.
    Gonthier, G., Ziliani, B., Nanevski, A., Dreyer, D.: How to make ad hoc proof automation less ad hoc. In: Chakravarty, M.M.T., Hu, Z., Danvy, O. (eds.) ICFP 2011, pp. 163–175. ACM (2011)Google Scholar
  17. 17.
    PRL Group. Implementing Mathematics with the Nuprl Proof Development System. Computer Science Department, Cornell University (1995),
  18. 18.
    Hillenbrand, T., Buch, A., Vogt, R., Löchner, B.: Waldmeister: High performance equational deduction. Journal of Automated Reasoning 18(2), 265–270 (1997)CrossRefGoogle Scholar
  19. 19.
    Hurd, J.: System description: The Metis proof tactic. In: Benzmüller, C., Harrison, J., Schürmann, D. (eds.) ESHOL 2005, pp. 103–104 (2005), arXiv.orgGoogle Scholar
  20. 20.
    Knuth, D., Bendix, P.: Simple word problems in universal algebras. In: Leech, J. (ed.) Computational Problems in Abstract Algebra, pp. 263–297. Pergamon Press (1970)Google Scholar
  21. 21.
    Löh, A., McBride, C., Swierstra, W.: A Tutorial Implementation of a Dependently Typed Lambda Calculus. In: Altenkirch, T., Uustalu, T. (eds.) Dependently Typed Programming. Fundamenta Informaticae, vol. 102(2), pp. 177–207. IOS Press (2010)Google Scholar
  22. 22.
    McBride, C.: Epigram: Practical Programming with Dependent Types. In: Vene, V., Uustalu, T. (eds.) AFP 2004. LNCS, vol. 3622, pp. 130–170. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  23. 23.
    Miquel, A.: Le calcul des constructions implicite: syntaxe et sémantique. These de doctorat, Université Paris, 7 (2001)Google Scholar
  24. 24.
    Nordstrom, B., Petersson, K., Smith, J.M.: Programming in Martin-Löf’s Type Theory: An Introduction. Oxford University Press, USA (1990)Google Scholar
  25. 25.
    Norell, U.: Dependently Typed Programming in Agda. In: Koopman, P., Plasmeijer, R., Swierstra, D. (eds.) AFP 2008. LNCS, vol. 5832, pp. 230–266. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  26. 26.
    Pierce, B.C. (ed.): Advanced topics in types and programming languages. The MIT Press (2005)Google Scholar
  27. 27.
    Pierce, B.C., Turner, D.N.: Local Type Inference. In: Pugh, W. (ed.) TOPLAS 2000, pp. 1–44. ACM (2000)Google Scholar
  28. 28.
    Pierce, B.C.: Types and programming languages. The MIT Press (2002)Google Scholar
  29. 29.
    Rudnicki, P., Urban, J.: Escape to ATP in Mizar. PxTP 2011 (2011)Google Scholar
  30. 30.
    Rushby, J.M.: Tutorial: Automated formal methods with PVS, SAL and Yices. In: Hung, D.V., Pandya, P. (eds.) SEFM 2006, p. 262. IEEE Press (2006)Google Scholar
  31. 31.
    Sutcliffe, G.: The TPTP problem library and associated infrastructure: The FOF and CNF parts, v3.5.0. Journal of Automated Reasoning 43(4), 337–362 (2009)CrossRefzbMATHGoogle Scholar
  32. 32.
    Sutcliffe, G., Zimmer, J., Schulz, S.: TSTP data-exchange formats for automated theorem proving tools. In: Zhang, W., Sorge, V. (eds.) FroCoS 2004, pp. 201–215. IOS Press (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Alasdair Armstrong
    • 1
  • Simon Foster
    • 1
  • Georg Struth
    • 1
  1. 1.Department of Computer ScienceUniversity of SheffieldUK

Personalised recommendations