Coqoon

An IDE for interactive proof development in Coq
  • Alexander Faithfull
  • Jesper Bengtson
  • Enrico Tassi
  • Carst Tankink
TACAS 2016

Abstract

User interfaces for interactive proof assistants have always lagged behind those for mainstream programming languages. Whereas integrated development environments (IDEs) have support for features like project management, version control, dependency analysis and incremental project compilation, “IDE”s for proof assistants typically only operate on files in isolation, relying on external tools to integrate those files into larger projects. In this paper we present Coqoon, an IDE for Coq projects integrated into Eclipse. Coqoon manages proofs as projects rather than isolated source files and compiles these projects using the Eclipse common build system. Coqoon takes advantage of the latest features of Coq, including asynchronous and parallel processing of proofs and—when used together with a third-party OCaml extension for Eclipse—can even be used to work on large developments containing Coq plug-ins.

References

  1. 1.
    Aspinall, D.: Proof General: a generic tool for proof development. In: TACAS, vol. 1785 LNCS, pp. 38–42. Springer, (2000)Google Scholar
  2. 2.
    Aspinall, D., Lüth, C., Winterstein, D.: A framework for interactive proof. In: Calculemus/MKM, pp. 161–175, (2007)Google Scholar
  3. 3.
    Barnett, M., Leino, K.R.M., Schulte, W.: The Spec\(^\sharp \) programming system: an overview. In: CASSIS, pp. 49–69, (2005)Google Scholar
  4. 4.
    Barras, B., Tankink, C., Tassi, E.: Asynchronous processing of Coq documents: from the kernel up to the user interface. In: Proceedings of ITP, Nanjing, China, (August 2015)Google Scholar
  5. 5.
    Bengtson, Jesper: Jensen, Jonas Braband, Sieczkowski, Filip, Birkedal, Lars: Verifying object-oriented programs with higher-order separation logic in Coq. Lect Notes Comput Sci 6898, 22–38 (2011)MathSciNetCrossRefGoogle Scholar
  6. 6.
    Boldo, S., Jourdan, J-H., Leroy, X., Melquiond, G.: A formally-verified C compiler supporting floating-point arithmetic. In: ARITH, pp. 107–115. IEEE Computer Society, (2013)Google Scholar
  7. 7.
    Bros, N., Cerioli, R.: OcaIDE. Software, http://www.algo-prog.info/ocaide/
  8. 8.
    Charles, J., Kiniry, J.R.: A lightweight theorem prover interface for Eclipse. In: UITP Workshop proceedings, (2008)Google Scholar
  9. 9.
    Eclipse Foundation. EGit. Software, http://www.eclipse.org/egit/
  10. 10.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns—Elements of Reusable Object-Oriented Software. Addison–Wesley, (1994). First edition, 20th printingGoogle Scholar
  11. 11.
    Gonthier, G., Asperti, A., Avigad, J., Bertot, Y., Cohen, C., Garillot, F., Le Roux, S., Mahboubi, A., O’Connor, R., Biha, S.O., Pasca, I., Rideau, L., Solovyev, A., Tassi, E., Théry, L.: A machine-checked proof of the odd order theorem. In: ITP, pp. 163–179. Springer, (2013)Google Scholar
  12. 12.
    Gordon, M.J.C., Melham, T.F. (eds.): Introduction to HOL: A Theorem Proving Environment for Higher Order Logic. Cambridge University Press, New York (1993)MATHGoogle Scholar
  13. 13.
    Hales, Thomas C.: Dense Sphere Packings –A Blueprint for Formal Proofs. Cambridge University Press, Cambridge (2012)CrossRefMATHGoogle Scholar
  14. 14.
    Harrison, J.: HOL Light: an overview. In: Theorem Proving in Higher Order Logics, 22nd International Conference, TPHOLs 2009, Munich, Germany, August 17-20, 2009. Proceedings, pp. 60–66, (2009)Google Scholar
  15. 15.
    Jacobs, B., Piessens, F.: The VeriFast program verifier. CW Reports CW520, Department of Computer Science, K.U.Leuven, (August 2008)Google Scholar
  16. 16.
    Klein, Gerwin, Andronick, June, Elphinstone, Kevin, Murray, Toby C., Sewell, Thomas, Kolanski, Rafal, Heiser, Gernot: Comprehensive formal verification of an OS microkernel. ACM Trans. Comput. Syst. 32(1), 2 (2014)CrossRefGoogle Scholar
  17. 17.
    Leino, K.R.M.: Dafny: An automatic program verifier for functional correctness. In: LPAR-16, pp. 348–370, (2010)Google Scholar
  18. 18.
    Magnusson, L., Nordström, B.: The ALF proof editor and its proof engine. In: Types for proofs and programs, pp. 213–237. Springer, (1994)Google Scholar
  19. 19.
    Mehnert, H.: Kopitiam: modular incremental interactive full functional static verification of Java code. In: NASA Formal Methods—Third International Symposium, NFM 2011, Pasadena, CA, USA, April 18–20, 2011. Proceedings, pp. 518–524, (2011)Google Scholar
  20. 20.
    Norell, U.: Towards a practical programming language based on dependent type theory. Ph.D. thesis, Department of Computer Science and Engineering, Chalmers University of Technology, SE-412 96 Göteborg, Sweden, (September 2007)Google Scholar
  21. 21.
    Ring, M., Lüth, C.: Collaborative interactive theorem proving with Clide. In: ITP, pp. 467–482. Springer, (2014)Google Scholar
  22. 22.
    The Coq Development Team. The Coq reference manual. http://coq.inria.fr/doc
  23. 23.
    Velykis, A.: Isabelle/Eclipse. Software, http://andriusvelykis.github.io/isabelle-eclipse
  24. 24.
    Wenzel, M.: Asynchronous user interaction and tool integration in Isabelle/PIDE. In: ITP, vol. 8558 of LNCS, pp. 515–530. Springer, (2014)Google Scholar
  25. 25.
    Wenzel, M.: System description: Isabelle/jEdit in 2014. In: UITP, (2014)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2017

Authors and Affiliations

  • Alexander Faithfull
    • 1
  • Jesper Bengtson
    • 1
  • Enrico Tassi
    • 2
    • 3
  • Carst Tankink
    • 4
  1. 1.IT University of CopenhagenCopenhagenDenmark
  2. 2.Inria Sophia Antipolis - MéditerranéeAlpes-MaritimesFrance
  3. 3.Université Côte d’AzurAlpes-MaritimesFrance
  4. 4.Inria Saclay-Île-de-FrancePalaiseauFrance

Personalised recommendations