Skip to main content

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2896))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Chapter  Google Scholar 

  2. Bauer, F.L., Wössner, H.: Algorithmic Language and Program Development. Springer, Heidelberg (1982)

    MATH  Google Scholar 

  3. Bouhoula, A., Rusinowitch, M.: Implicit induction in conditional theories. Journal of Automated Reasoning 14, 189–235 (1995)

    Article  MATH  MathSciNet  Google Scholar 

  4. Boyer, R.S., Moore, J.S.: A Computational Logic. Academic Press, London (1979)

    MATH  Google Scholar 

  5. Bundy, A., Stevens, A., van Harmelen, F., Ireland, A., Smaill, A.: Rippling: A heuristic for guiding inductive proofs. Artificial Intelligence 63, 185–253 (1993)

    Article  Google Scholar 

  6. Burstall, R.M., Darlington, J.: A transformation system for developing recursive programs. Journal of the ACM 24, 44–67 (1977)

    Article  MATH  MathSciNet  Google Scholar 

  7. Dijkstra, E.W.: Invariance and non-determinacy. In: Mathematical Logic and Programming Languages, ch. 9, pp. 157–165. Prentice-Hall, Englewood Cliffs (1985)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. Engelfriet, J., Vogler, H.: Macro tree transducers. JCSS 31, 71–145 (1985)

    MATH  MathSciNet  Google Scholar 

  10. Engelfriet, J., Vogler, H.: Modular tree transducers. TCS 78, 267–304 (1991)

    Article  MATH  MathSciNet  Google Scholar 

  11. Fülöp, Z., Vogler, H.: Syntax-directed semantics — Formal models based on tree transducers. Monographs in Theoretical Comp. Science, EATCS. Springer, Heidelberg (1998)

    MATH  Google Scholar 

  12. Giesl, J.: Context-moving transformations for function verification. In: Bossi, A. (ed.) LOPSTR 1999. LNCS, vol. 1817, pp. 293–312. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  13. Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12, 576–583 (1969)

    Article  MATH  Google Scholar 

  14. Ireland, A., Bundy, A.: Automatic verification of functions with accumulating parameters. Journal of Functional Programming 9, 225–245 (1999)

    Article  MATH  MathSciNet  Google Scholar 

  15. Ireland, A., Stark, J.: On the automatic discovery of loop invariants. In: 4th NASA Langley Formal Methods Workshop, NASA Conf. Publication 3356 (1997)

    Google Scholar 

  16. Kapur, D., Zhang, H.: An overview of rewrite rule laboratory (RRL). Journal of Computer and Mathematics with Applications 29, 91–114 (1995)

    Article  MathSciNet  Google Scholar 

  17. Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer, Dordrecht (2000)

    Google Scholar 

  18. 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)

    Chapter  Google Scholar 

  19. 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)

    Chapter  Google Scholar 

  20. McCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM 3, 184–195 (1960)

    Article  MATH  Google Scholar 

  21. Partsch, H.: Specification and Transformation of Programs. Springer, Heidelberg (1990)

    MATH  Google Scholar 

  22. Pettorossi, A., Proietti, M.: Rules and strategies for transforming functional and logic programs. ACM Computing Surveys 28, 360–414 (1996)

    Article  Google Scholar 

  23. 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)

    Chapter  Google Scholar 

  24. 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)

    Chapter  Google Scholar 

  25. Voigtländer, J., Kühnemann, A.: Composition of functions with accumulating parameters. To appear in Journal of Functional Programming (2004)

    Google Scholar 

  26. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics