skip to main content
research-article

xmonad in Coq (experience report): programming a window manager in a proof assistant

Published:13 September 2012Publication History
Skip Abstract Section

Abstract

This report documents the insights gained from implementing the core functionality of xmonad, a popular window manager written in Haskell, in the Coq proof assistant. Rather than focus on verification, this report outlines the technical challenges involved with incorporating Coq code in a Haskell project.

References

  1. E. Brady. Practical Implementation of a Dependently Typed Functional Programming Language. PhD thesis, Durham University, 2005.Google ScholarGoogle Scholar
  2. E. Brady. Idris - systems programming meets full dependent types. In PLPV'11: Proceedings of the 2011 ACM SIGPLAN Workshop on Programming Languages meets Programming Verification, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. A. Chlipala. Certified programming with dependent types. Available from http://adam.chlipala.net/cpdt, 2008.Google ScholarGoogle Scholar
  4. K. Claessen and J. Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In Proceedings of the fifth ACM SIGPLAN International Conference on Functional Programming, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. T. Coquand and G. Huet. The calculus of constructions. Inf. Comput., 76: 95--120, February 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. L. Cruz-Filipe, H. Geuvers, and F. Wiedijk. C-CoRN, the constructive Coq repository at Nijmegen. In Mathematical Knowledge Management, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  7. E. Denney. The synthesis of a Java Card tokenization algorithm. In Proceedings of the 16th IEEE International Conference on Automated Software Engineering, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. P. Derrin, K. Elphinstone, G. Klein, D. Cock, and M. M. T. Chakravarty. Running the manual: An approach to high-assurance microkernel development. In Proceedings of the ACM SIGPLAN Haskell Workshop, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. J.-C. Filliâtre and P. Letouzey. Functors for Proofs and Programs. In Proceedings of The European Symposium on Programming, volume 2986 of Lecture Notes in Computer Science, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  10. A. Gill and C. Runciman. Haskell Program Coverage. In Proceedings of the ACM SIGPLAN Workshop on Haskell, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. G. Gonthier. Formal proof: the four-color theorem. Notices of the AMS, 55 (11): 1382--1393, 2008.Google ScholarGoogle Scholar
  12. B. Grégoire. Compilation des termes de preuves: un (nouveau) mariage entre Coq et OCaml. PhD thesis, Université Paris 7, 2003.Google ScholarGoogle Scholar
  13. F. Haftmann. From higher-order logic to Haskell: there and back again. In Proceedings of the 2010 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, pages 155--158, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. G. Huet. The zipper. Journal of Functional Programming, 7 (05): 549--554, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. X. Leroy. Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In Conference record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 42--54, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Letouzey. A new extraction for Coq. Types for Proofs and Programs, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. P. Letouzey. Programmation fonctionnelle certifiée: l'extraction de programmes dans l'assistant Coq. PhD thesis, Université Paris-Sud, 2004.Google ScholarGoogle Scholar
  19. P. Letouzey. Personal communication. 2011.Google ScholarGoogle Scholar
  20. P. Martin-Löf. Constructive mathematics and computer programming. Studies in Logic and the Foundations of Mathematics, 104, 1982.Google ScholarGoogle Scholar
  21. The Coq development team. The Coq proof assistant reference manual. LogiCal Project, 2004. URL http://coq.inria.fr.Google ScholarGoogle Scholar
  22. C. McBride. Dependently typed functional programs and their proofs. PhD thesis, University of Edinburgh, 1999.Google ScholarGoogle Scholar
  23. N. Mitchell. HLint Manual, 2010.Google ScholarGoogle Scholar
  24. N. Mitchell and C. Runciman. Not all patterns, but enough: an automatic verifier for partial but sufficient pattern matching. In Proceedings of the first ACM SIGPLAN Symposium on Haskell, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. U. Norell. Towards a practical programming language based on dependent type theory. PhD thesis, Chalmers University of Technology, 2007.Google ScholarGoogle Scholar
  26. M. Sozeau. Programing Finger Trees in Coq. In ICFP'07: Proceedings of the 2007 ACM SIGPLAN International Conference on Functional Programming, pages 13--24, 2007a. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. M. Sozeau. Subset coercions in Coq. In T. Altenkirch and C. McBride, editors, Types for Proofs and Programs, volume 4502 of Lecture Notes in Computer Science, pages 237--252. Springer, 2007b. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. M. Sozeau and N. Oury. First-class type classes. In Theorem Proving in Higher Order Logics, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. D. Stewart. Popular haskell packages: Q2 2010 report, June 2010. URL http://donsbot.wordpress.com/.Google ScholarGoogle Scholar
  30. D. Stewart and S. Janssen. xmonad: a tiling window manager. In Proceedings of the ACM SIGPLAN Workshop on Haskell, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. xmonad in Coq (experience report): programming a window manager in a proof assistant

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!