Self-Supervised Learning to Prove Equivalence Between Straight-Line Programs via Rewrite Rules
arXiv:2109.10476 · doi:10.1109/TSE.2023.3271065
Abstract
We target the problem of automatically synthesizing proofs of semantic equivalence between two programs made of sequences of statements. We represent programs using abstract syntax trees (AST), where a given set of semantics-preserving rewrite rules can be applied on a specific AST pattern to generate a transformed and semantically equivalent program. In our system, two programs are equivalent if there exists a sequence of application of these rewrite rules that leads to rewriting one program into the other. We propose a neural network architecture based on a transformer model to generate proofs of equivalence between program pairs. The system outputs a sequence of rewrites, and the validity of the sequence is simply checked by verifying it can be applied. If no valid sequence is produced by the neural network, the system reports the programs as non-equivalent, ensuring by design no programs may be incorrectly reported as equivalent. Our system is fully implemented for one single grammar which can represent straight-line programs with function calls and multiple types. To efficiently train the system to generate such sequences, we develop an original incremental training technique, named self-supervised sample selection. We extensively study the effectiveness of this novel training approach on proofs of increasing complexity and length. Our system, S4Eq, achieves 97% proof success on a curated dataset of 10,000 pairs of equivalent programs.
30 pages including appendix
References in corpus (14)
- Sequence to Sequence Learning with Neural Networks
- Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
- Scaling Laws for Neural Language Models
- Decision Transformer: Reinforcement Learning via Sequence Modeling
- Neural Transfer Learning for Repairing Security Vulnerabilities in C Code
- Neural Program Repair with Execution-based Backpropagation
- Self-Supervised Contrastive Learning for Code Retrieval and Summarization via Semantic-Preserving Transformations
- On the Generalizability of Neural Program Models with respect to Semantic-Preserving Program Transformations
- Generating Bug-Fixes Using Pretrained Transformers
- Self-Supervised Bug Detection and Repair
- HyperTree Proof Search for Neural Theorem Proving
- Program Equivalence for Assisted Grading of Functional Programs (Extended Version)
- Automatically Harnessing Sparse Acceleration
- Learning dynamic polynomial proofs