Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automatic verification often fails for functions with accumulating arguments. Using concepts from the theory of tree transducers and extending on earlier work, the paper develops automatic transformations from accumulative functional programs into non-accumulative ones, which are much better suited for mechanized verification. The overall goal is to reduce the need for generalizing induction hypotheses in (semi-)automatic provers. Via the correspondence between imperative programs and tail-recursive functions, the presented approach can also help to reduce the need for inventing loop invariants in the verification of imperative programs. © 2006 Elsevier Inc. All rights reserved.
Giesl, J., Kühnemann, A., & Voigtländer, J. (2007). Deaccumulation techniques for improving provability. Journal of Logic and Algebraic Programming, 71(2), 79–113. https://doi.org/10.1016/j.jlap.2006.11.001