Abstract
Several induction theorem provers were developed to verify functional programs mechanically. Unfortunately, automated verification usually fails for functions with accumulating arguments. In particular, this holds for tail-recursive functions that correspond to imperative programs, but also for programs with nested recursion.
Based on results from the theory of tree transducers, we develop an automatic transformation technique. It transforms accumulative functional programs into non-accumulative ones, which are much better suited for automated verification by induction theorem provers. Hence, in contrast to classical program transformations aiming at improving the efficiency, the goal of our deaccumulation technique is to improve the provability.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Autexier, S., Hutter, D., Mantel, H., Schairer, A.: Inka 5.0 - A logical voyager. In: Ganzinger, H. (ed.) CADE 1999. LNCS (LNAI), vol. 1632, pp. 207–211. Springer, Heidelberg (1999)
Bauer, F.L., Wössner, H.: Algorithmic Language and Program Development. Springer, Heidelberg (1982)
Bouhoula, A., Rusinowitch, M.: Implicit induction in conditional theories. Journal of Automated Reasoning 14, 189–235 (1995)
Boyer, R.S., Moore, J.S.: A Computational Logic. Academic Press, London (1979)
Bundy, A., Stevens, A., van Harmelen, F., Ireland, A., Smaill, A.: Rippling: A heuristic for guiding inductive proofs. Artificial Intelligence 63, 185–253 (1993)
Burstall, R.M., Darlington, J.: A transformation system for developing recursive programs. Journal of the ACM 24, 44–67 (1977)
Dijkstra, E.W.: Invariance and non-determinacy. In: Mathematical Logic and Programming Languages, ch. 9, pp. 157–165. Prentice-Hall, Englewood Cliffs (1985)
Engelfriet, J.: Some open questions and recent results on tree transducers and tree languages. In: Book, R.V. (ed.) Formal language theory; perspectives and open problems, pp. 241–286. Academic Press, London (1980)
Engelfriet, J., Vogler, H.: Macro tree transducers. JCSS 31, 71–145 (1985)
Engelfriet, J., Vogler, H.: Modular tree transducers. TCS 78, 267–304 (1991)
Fülöp, Z., Vogler, H.: Syntax-directed semantics — Formal models based on tree transducers. Monographs in Theoretical Comp. Science, EATCS. Springer, Heidelberg (1998)
Giesl, J.: Context-moving transformations for function verification. In: Bossi, A. (ed.) LOPSTR 1999. LNCS, vol. 1817, pp. 293–312. Springer, Heidelberg (2000)
Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12, 576–583 (1969)
Ireland, A., Bundy, A.: Automatic verification of functions with accumulating parameters. Journal of Functional Programming 9, 225–245 (1999)
Ireland, A., Stark, J.: On the automatic discovery of loop invariants. In: 4th NASA Langley Formal Methods Workshop, NASA Conf. Publication 3356 (1997)
Kapur, D., Zhang, H.: An overview of rewrite rule laboratory (RRL). Journal of Computer and Mathematics with Applications 29, 91–114 (1995)
Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer, Dordrecht (2000)
Kühnemann, A.: Benefits of tree transducers for optimizing functional programs. In: Arvind, V., Sarukkai, S. (eds.) FST TCS 1998. LNCS, vol. 1530, pp. 146–157. Springer, Heidelberg (1998)
Kühnemann, A., Glück, R., Kakehi, K.: Relating accumulative and non-accumulative functional programs. In: Middeldorp, A. (ed.) RTA 2001. LNCS, vol. 2051, pp. 154–168. Springer, Heidelberg (2001)
McCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM 3, 184–195 (1960)
Partsch, H.: Specification and Transformation of Programs. Springer, Heidelberg (1990)
Pettorossi, A., Proietti, M.: Rules and strategies for transforming functional and logic programs. ACM Computing Surveys 28, 360–414 (1996)
Stark, J., Ireland, A.: Invariant discovery via failed proof attempts. In: Flener, P. (ed.) LOPSTR 1998. LNCS, vol. 1559, pp. 271–288. Springer, Heidelberg (1999)
Voigtländer, J.: Conditions for efficiency improvement by tree transducer composition. In: Tison, S. (ed.) RTA 2002. LNCS, vol. 2378, pp. 222–236. Springer, Heidelberg (2002)
Voigtländer, J., Kühnemann, A.: Composition of functions with accumulating parameters. To appear in Journal of Functional Programming (2004)
Walther, C.: Mathematical induction. In: Gabbay, Hogger, Robinson (eds.) Handbook of Logic in AI & Logic Prog., vol. 2, pp. 127–228. Oxford University Press, Oxford (1994)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Giesl, J., Kühnemann, A., Voigtländer, J. (2003). Deaccumulation – Improving Provability. In: Saraswat, V.A. (eds) Advances in Computing Science – ASIAN 2003. Progamming Languages and Distributed Computation Programming Languages and Distributed Computation. ASIAN 2003. Lecture Notes in Computer Science, vol 2896. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-40965-6_10
Download citation
DOI: https://doi.org/10.1007/978-3-540-40965-6_10
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-20632-3
Online ISBN: 978-3-540-40965-6
eBook Packages: Springer Book Archive