Proving Functional Program Equivalence via Directed Lemma Synthesis
Yican Sun, Ruyi Ji, Jian Fang, Xuanlin Jiang, Mingshuai Chen and, Yingfei Xiong

TL;DR
This paper introduces directed lemma synthesis, a systematic method for automating program equivalence proofs by automatically generating critical lemmas, significantly improving efficiency over heuristic approaches.
Contribution
The paper presents a novel approach to automate lemma discovery for program equivalence proofs using directed synthesis techniques, enhancing proof automation and efficiency.
Findings
Reduces proof runtime by 95.47% on average
Solves 38 more tasks than heuristic methods
Transforms lemma synthesis into efficient program synthesis problems
Abstract
Proving equivalence between functional programs is a fundamental problem in program verification, which often amounts to reasoning about algebraic data types (ADTs) and compositions of structural recursions. Modern theorem provers address this problem by applying structural induction, which is insufficient for proving many equivalence theorems. In such cases, one has to invent a set of lemmas, prove these lemmas by additional induction, and use these lemmas to prove the original theorem. There is, however, a lack of systematic understanding of what lemmas are needed for inductive proofs and how these lemmas can be synthesized automatically. This paper presents directed lemma synthesis, an effective approach to automating equivalence proofs by discovering critical lemmas using program synthesis techniques. We first identify two induction-friendly forms of propositions that give formal…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Teaching and Learning Programming
