A Versatile, Sound Tool for Simplifying Definitions
This tool addresses the need for automated simplification and proof generation in program transformation, particularly for synthesis and verification tasks, but it appears incremental as it builds on existing proof-checking methods.
The authors tackled the problem of simplifying function definitions by developing a tool called simplify-defun that transforms definitions into simplified versions and provides ACL2-checked proofs of equivalence, along with termination and guard proofs when applicable, demonstrating its utility in program transformation for synthesis and verification.
We present a tool, simplify-defun, that transforms the definition of a given function into a simplified definition of a new function, providing a proof checked by ACL2 that the old and new functions are equivalent. When appropriate it also generates termination and guard proofs for the new function. We explain how the tool is engineered so that these proofs will succeed. Examples illustrate its utility, in particular for program transformation in synthesis and verification.