Skip to main content

Ivor, a Proof Engine

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4449))

Abstract

Dependent type theory has several practical applications in the fields of theorem proving, program verification and programming language design. Ivor is a Haskell library designed to allow easy extending and embedding of a type theory based theorem prover in a Haskell application. In this paper, I give an overview of the library and show how it can be used to embed theorem proving technology in an implementation of a simple functional programming language; by using type theory as a core representation, we can construct and evaluate terms and prove correctness properties of those terms within the same framework, ensuring consistency of the implementation and the theorem prover.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Cover translator. http://coverproject.org/CoverTranslator/

  2. Barras, B., Werner, B.: Coq in Coq (1997)

    Google Scholar 

  3. Brady, E.: Practical Implementation of a Dependently Typed Functional Programming Language. PhD thesis, University of Durham (2005)

    Google Scholar 

  4. Brady, E., Hammond, K.: A dependently typed framework for static analysis of program execution costs. In: Butterfield, A., Grelck, C., Huch, F. (eds.) IFL 2005. LNCS, vol. 4015, pp. 74–90. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  5. Brady, E., Hammond, K.: A verified staged interpreter is a verified compiler. In: Proc. Conf. Generative Programming and Component Engineering (GPCE 2006) (2006)

    Google Scholar 

  6. Chapman, J., Altenkirch, T., McBride, C.: Epigram reloaded: A standalone typechecker for ETT. In: Trends in Functional Programming, 2005 (to appear)

    Google Scholar 

  7. Coq Development Team. The Coq proof assistant — reference manual (2001), http://coq.inria.fr/

  8. Coquand, C.: Agda (2005), http://agda.sourceforge.net/

  9. Coquand, T.: Pattern matching with dependent types (1992), Available from http://www.cs.chalmers.se/~coquand/type.html

  10. Curry, H.B., Feys, R.: Combinatory Logic, vol. 1. North Holland, Amsterdam (1958)

    MATH  Google Scholar 

  11. de Mol, M., van Eekelen, M., Plasmeijer, R.: Theorem proving for functional programmers. In: Arts, T., Mohnen, M. (eds.) IFL 2002. LNCS, vol. 2312, Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  12. Dybjer, P.: Inductive families. Formal Aspects Of Computing 6, 440–465 (1994)

    Article  MATH  Google Scholar 

  13. Filliâtre, J.-C.: Why: a multi-language multi-prover verification tool. Research Report 1366, LRI, Université Paris Sud (March 2003)

    Google Scholar 

  14. Geuvers, H., Wiedijk, F., Zwanenburg, J.: A constructive proof of the fundamental theorem of algebra without using the rationals. In: TYPES 2000, pp. 96–111 (2000)

    Google Scholar 

  15. Giménez, E.: An application of co-inductive types in coq: Verification of the alternating bit protocol. In: Berardi, S., Coppo, M. (eds.) TYPES 1995. LNCS, vol. 1158, pp. 135–152. Springer, Heidelberg (1996)

    Google Scholar 

  16. Gonthier, G.: A computer-checked proof of the Four Colour Theorem (2005), http://research.microsoft.com/~gonthier/4colproof.pdf

  17. Hammond, K., Michaelson, G.: Hume: a Domain-Specific Language for Real-Time Embedded Systems. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, Springer, Heidelberg (2003)

    Google Scholar 

  18. Howard, W.A.: The formulae-as-types notion of construction, A reprint of an unpublished manuscript from 1969. In: Seldin, J.P., Hindley, J.R. (eds.) To H.B.Curry: Essays on combinatory logic, lambda calculus and formalism, Academic Press, San Diego (1980)

    Google Scholar 

  19. Hudak, P.: Building domain-specific embedded languages. ACM Computing Surveys, 28A(4) (December 1996)

    Google Scholar 

  20. Leroy, X.: Formal certification of a compiler back-end. In: Principles of Programming Languages 2006, pp. 42–54. ACM Press, New York (2006)

    Google Scholar 

  21. Letouzey, P.: A new extraction for Coq. In: Geuvers, H., Wiedijk, F. (eds.) Types for proofs and programs. LNCS, Springer, Heidelberg (2002)

    Google Scholar 

  22. Luo, Z.: Computation and Reasoning – A Type Theory for Computer Science. Intl. Series of Monographs on Comp. Sci. OUP (1994)

    Google Scholar 

  23. Luo, Z., Pollack, R.: Lego proof development system: User’s manual. Technical report, Department of Computer Science, University of Edinburgh (1992)

    Google Scholar 

  24. McBride, C.: Dependently Typed Functional Programs and their proofs. PhD thesis, University of Edinburgh (May 2000)

    Google Scholar 

  25. McBride, C., Goguen, H., McKinna, J.: Some constructions on constructors. In: Filliâtre, J.-C., Paulin-Mohring, C., Werner, B. (eds.) TYPES 2004. LNCS, vol. 3839, Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  26. McBride, C., McKinna, J.: I am not a number, I am a free variable. In: Proceedings of the ACM SIGPLAN Haskell Workshop (2004)

    Google Scholar 

  27. McBride, C., McKinna, J.: The view from the left. Journal of Functional Programming 14(1), 69–111 (2004)

    Article  MATH  MathSciNet  Google Scholar 

  28. McKinna, J., Wright, J.: A type-correct, stack-safe, provably correct, expression compiler in Epigram. Journal of Functional Programming (to appear, 2007)

    Google Scholar 

  29. Milner, R.: LCF: A way of doing proofs with a machine. In: Winkowski, J. (ed.) Mathematical Foundations of Computer Science 1978. LNCS, vol. 64, pp. 146–159. Springer, Heidelberg (1978)

    Google Scholar 

  30. Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL - A proof assistant for higher order logic. In: Nipkow, T., Paulson, L.C., Wenzel, M. (eds.) Isabelle/HOL. LNCS, vol. 2283, Springer, Heidelberg (2002)

    Google Scholar 

  31. Jones, S.P., Vytiniotis, D., Weirich, S., Washburn, G.: Simple unification-based type inference for GADTs. In: Proc. 2006 International Conf. on Functional Programming (ICFP 2006) (2006)

    Google Scholar 

  32. Plasmeijer, R., van Eekelen, M.: The Concurrent CLEAN language report (draft) (2003), Available from http://www.cs.kun.nl/~clean/

  33. Pollack, R.: Implicit syntax. Informal Proceedings of First Workshop on Logical Frameworks, Antibes (May 1990)

    Google Scholar 

  34. Pugh, W.: The Omega Test: a fast and practical integer programming algorithm for dependence analysis. Communication of the ACM, pp. 102–114 (1992)

    Google Scholar 

  35. Sheard, T.: Languages of the future. In: ACM Conference on Object Orientated Programming Systems, Languages and Applicatioons (OOPSLA 2004) (2004)

    Google Scholar 

  36. Taha, W.: A gentle introduction to multi-stage programming (2003), Available from http://www.cs.rice.edu/~taha/publications/journal/dspg04a.pdf

Download references

Author information

Authors and Affiliations

Authors

Editor information

Zoltán Horváth Viktória Zsók Andrew Butterfield

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Brady, E. (2007). Ivor, a Proof Engine. In: Horváth, Z., Zsók, V., Butterfield, A. (eds) Implementation and Application of Functional Languages. IFL 2006. Lecture Notes in Computer Science, vol 4449. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74130-5_9

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-74130-5_9

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-74129-9

  • Online ISBN: 978-3-540-74130-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics