Affiliation:
1. University of Maryland, USA
2. University of Pennsylvania, USA
3. Awake Networks, USA
Abstract
We demonstrate for the first time that Liquid Haskell, a refinement type checker for Haskell programs, can be used for arbitrary theorem proving by verifying a parallel, monoidal string matching algorithm implemented in Haskell. We use refinement types to specify correctness properties, Haskell terms to express proofs of these properties, and Liquid Haskell to check the proofs. We evaluate Liquid Haskell as a theorem prover by replicating our 1428 LoC proof in a dependently-typed language (Coq - 1136 LoC). Finally, we compare both proofs, uncovering the relative advantages and disadvantages of the two provers.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference28 articles.
1. C. Barrett A. Stump and C. Tinelli. The SMT-LIB Standard: Version 2.0. 2010. C. Barrett A. Stump and C. Tinelli. The SMT-LIB Standard: Version 2.0. 2010.
2. Combining proofs and programs in a dependently typed language
3. T. Coq development team. The Coq proof assistant reference manual 2009. URL http://coq.inria.fr/doc/ . T. Coq development team. The Coq proof assistant reference manual 2009. URL http://coq.inria.fr/doc/ .
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Mechanizing Refinement Types;Proceedings of the ACM on Programming Languages;2024-01-05
2. PropR;Proceedings of the 44th International Conference on Software Engineering;2022-05-21
3. Refinement Types: A Tutorial;Foundations and Trends® in Programming Languages;2021
4. Ready, Set, Verify! Applying hs-to-coq to real-world Haskell code;Journal of Functional Programming;2021
5. ConCert: a smart contract certification framework in Coq;Proceedings of the 9th ACM SIGPLAN International Conference on Certified Programs and Proofs;2020-01-20