paperbot · PL 论文追踪

RSS

Checking equivalence in a non-strict language

OOPSLA 6(OOPSLA2)2022
John C. Kolesar, Ruzica Piskac, William T. Hallahan

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(Abstract)

Program equivalence checking is the task of confirming that two programs have the same behavior on corresponding inputs. We develop a calculus based on symbolic execution and coinduction to check the equivalence of programs in a non-strict functional language. Additionally, we show that our calculus can be used to derive counterexamples for pairs of inequivalent programs, including counterexamples that arise from non-termination. We describe a fully automated approach for finding both equivalence proofs and counterexamples. Our implementation, Nebula, proves equivalences of programs written in Haskell. We demonstrate Nebula's practical effectiveness at both proving equivalence and producing counterexamples automatically by applying Nebula to existing benchmark properties.

链接与引用

DOI 原文 ·

BibTeX
@article{paperbot1471,
  title = {Checking equivalence in a non-strict language},
  author = {John C. Kolesar and Ruzica Piskac and William T. Hallahan},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {6},
  number = {OOPSLA2},
  year = {2022},
  doi = {10.1145/3563340}
}