A tale of two provers: verifying monoidal string matching in liquid Haskell and Coq.

Haskell(2017)

引用 11|浏览45
暂无评分
摘要
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.
更多
查看译文
关键词
Coq, Dependent and Refinement Types, Formal Verification, Liquid Haskell, Monoid Laws, Parallelization, Theorem Proving
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要