Skip to main content

Asymptotic Speedups, Bisimulation and Distillation (Work in Progress)

  • Conference paper
  • First Online:
Perspectives of System Informatics (PSI 2014)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8974))

  • 520 Accesses

Abstract

Distillation is a fully automatic program transformation that can yield superlinear program speedups. Bisimulation is a key to the proof that distillation is correct, i.e., preserves semantics. However the proof, based on observational equivalence, is insensitive to program running times. This paper shows how distillation can give superlinear speedups on some “old chestnut” programs well-known from the early program transformation literature: naive reverse, factorial sum, and Fibonacci.

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 EPUB and 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

Notes

  1. 1.

    To avoid non-termination of the program transformer itself, we assume the input does not contain nonproductive loops such as \(f \ 0 \mathbf{\ where\ } f \ x = f \ x\).

References

  1. Burstall, R., Darlington, J.: A transformation system for developing recursive programs. J. ACM 24(1), 44–67 (1977)

    Article  MATH  MathSciNet  Google Scholar 

  2. Debois, S.: Imperative program optimization by partial evaluation. In: PEPM (ACM SIGPLAN 2004 Workshop on Partial Evaluation and Program Manipulation), pp. 113–122 (2004)

    Google Scholar 

  3. Ershov, A.P.: On the essence of compilation. In: Neuhold, E. (ed.) Formal Description of Programming Concepts, pp. 391–420. North-Holland, Amsterdam (1978)

    Google Scholar 

  4. Futamura, Y.: Partial evaluation of computation process - an approach to a compiler-compiler. High. Order Symb. Comput. 12(4), 381–391 (1999)

    Article  MATH  Google Scholar 

  5. Gordon, A.D.: Bisimilarity as a theory of functional programming. Theor. Comput. Sci. 228(1–2), 5–47 (1999)

    Article  MATH  Google Scholar 

  6. Hamilton, G.W.: Distillation: extracting the essence of programs. In: Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pp. 61–70 (2007)

    Google Scholar 

  7. Hamilton, G.W., Jones, N.D.: Distillation with labelled transition systems. In: PEPM (ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation), pp. 15–24. ACM (2012)

    Google Scholar 

  8. Hamilton, G.W., Jones, N.D.: Proving the correctness of unfold/fold program transformations using bisimulation. In: Clarke, E., Virbitskaite, I., Voronkov, A. (eds.) PSI 2011. LNCS, vol. 7162, pp. 153–169. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  9. Jones, N., Gomard, C., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice Hall, New York (1993)

    MATH  Google Scholar 

  10. Jones, N.D.: Computability and Complexity - From a Programming Perspective. Foundations of Computing Series. MIT Press, Cambridge (1997)

    MATH  Google Scholar 

  11. Jones, N.D.: Transformation by interpreter specialisation. Sci. Comput. Program. 52, 307–339 (2004)

    Article  MATH  Google Scholar 

  12. Lacey, D., Jones, N.D., Wyk, E.V., Frederiksen, C.C.: Compiler optimization correctness by temporal logic. High. Order Symb. Comput. 17(3), 173–206 (2004)

    Article  MATH  Google Scholar 

  13. Milner, R.: Communication and Concurrency. PHI Series in Computer Science. Prentice Hall, Upper Saddle River (1989)

    MATH  Google Scholar 

  14. Sørensen, M.H., Glück, R., Jones, N.: A positive supercompiler. J. Funct. Program. 6(6), 811–838 (1996)

    Article  Google Scholar 

  15. Turchin, V.F.: Supercompilation: techniques and results. In: Bjorner, D., Broy, M., Pottosin, I.V. (eds.) PSI 1996. LNCS, vol. 1181, pp. 227–248. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  16. Turchin, V.: The concept of a supercompiler. ACM Trans. Program. Lang. Syst. 8(3), 90–121 (1986)

    MathSciNet  Google Scholar 

  17. Wadler, P.: Deforestation: transforming programs to eliminate trees. In: Ganzinger, H. (ed.) ESOP 1988. LNCS, vol. 300, pp. 344–358. Springer, Heidelberg (1988)

    Google Scholar 

Download references

Acknowledgement

This paper has been much improved as a result of discussions with Luke Ong and Jonathan Kochems at Oxford University. Referee comments were also very useful. This work was supported, in part, by DIKU at the University of Copenhagen, and by Science Foundation Ireland grant 10/CE/I1855 to Lero - the Irish Software Engineering Research Centre (www.lero.ie).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Neil D. Jones .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Jones, N.D., Hamilton, G.W. (2015). Asymptotic Speedups, Bisimulation and Distillation (Work in Progress). In: Voronkov, A., Virbitskaite, I. (eds) Perspectives of System Informatics. PSI 2014. Lecture Notes in Computer Science(), vol 8974. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-46823-4_15

Download citation

  • DOI: https://doi.org/10.1007/978-3-662-46823-4_15

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-662-46822-7

  • Online ISBN: 978-3-662-46823-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics