 
Summary: ContextMoving Transformations for Function Verication
Jurgen Giesl
Department of Computer Science, Darmstadt University of Technology
Alexanderstr. 10, 64283 Darmstadt, Germany
Email: giesl@informatik.tudarmstadt.de
Abstract
Several induction theorem provers have been developed which support mechanized
verication of functional programs. Unfortunately, a major problem is that they often fail
in verifying tail recursive functions (which correspond to imperative programs). However,
in practice imperative programs are used almost exclusively.
We present an automatic transformation to tackle this problem. It transforms func
tions which are hard to verify into functions whose correctness can be shown by the exist
ing provers. In contrast to classical program transformations, the aim of our technique is
not to increase eÆciency, but to increase veriability. Therefore, this paper introduces a
novel application area for program transformations and it shows that such techniques can
in fact solve some of the most urgent current challenge problems in automated verication
and induction theorem proving.
1 Introduction
To guarantee the correctness of programs, a formal verication is required. However, mathe
matical correctness proofs are usually very expensive and timeconsuming. Therefore, program
