Skip to main content

Self-adjusting Computation with Delta ML

  • Chapter
Book cover Advanced Functional Programming (AFP 2008)

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

Included in the following conference series:

Abstract

In self-adjusting computation, programs respond automatically and efficiently to modifications to their data by tracking the dynamic data dependences of the computation and incrementally updating the output as needed. In this tutorial, we describe the self-adjusting-computation model and present the language ΔML (Delta ML) for writing self-adjusting programs.

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. Abadi, M., Lampson, B.W., Lévy, J.-J.: Analysis and Caching of Dependencies. In: Proceedings of the International Conference on Functional Programming, pp. 83–91 (1996)

    Google Scholar 

  2. Acar, U.A.: Self-Adjusting Computation. PhD thesis, Department of Computer Science. Carnegie Mellon University (May 2005)

    Google Scholar 

  3. Acar, U.A., Ahmed, A., Blume, M.: Imperative self-adjusting computation. In: Proceedings of the 25th Annual ACM Symposium on Principles of Programming Languages (2008)

    Google Scholar 

  4. Acar, U.A., Blelloch, G.E., Blume, M., Tangwongsan, K.: An experimental analysis of self-adjusting computation. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (2006)

    Google Scholar 

  5. Acar, U.A., Blelloch, G.E., Harper, R.: Adaptive Functional Programming. In: Proceedings of the 29th Annual ACM Symposium on Principles of Programming Languages, pp. 247–259 (2002)

    Google Scholar 

  6. Acar, U.A., Blelloch, G.E., Harper, R.: Selective memoization. In: Proceedings of the 30th Annual ACM Symposium on Principles of Programming Languages (2003)

    Google Scholar 

  7. Acar, U.A., Blelloch, G.E., Harper, R., Vittes, J.L., Woo, M.: Dynamizing static algorithms with applications to dynamic trees and history independence. In: ACM-SIAM Symposium on Discrete Algorithms (2004)

    Google Scholar 

  8. Acar, U.A., Blelloch, G.E., Tangwongsan, K.: Kinetic 3D Convex Hulls via Self-Adjusting Computation (An Illustration). In: Proceedings of the 23rd ACM Symposium on Computational Geometry, SCG (2007)

    Google Scholar 

  9. Acar, U.A., Blelloch, G.E., Tangwongsan, K., Türkoğlu, D.: Robust Kinetic Convex Hulls in 3D. In: Proceedings of the 16th Annual European Symposium on Algorithms (September 2008)

    Google Scholar 

  10. Acar, U.A., Blelloch, G.E., Tangwongsan, K., Vittes, J.L.: Kinetic Algorithms via Self-Adjusting Computation. In: Proceedings of the 14th Annual European Symposium on Algorithms, September 2006, pp. 636–647 (2006)

    Google Scholar 

  11. Acar, U.A., Blelloch, G.E., Vittes, J.L.: An experimental analysis of change propagation in dynamic trees. In: Workshop on Algorithm Engineering and Experimentation (2005)

    Google Scholar 

  12. Acar, U.A., Blume, M., Donham, J.: A consistent semantics of self-adjusting computation. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 458–474. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  13. Acar, U.A., Ihler, A., Mettu, R., Sümer, Ö.: Adaptive Bayesian Inference. In: Neural Information Processing Systems, NIPS (2007)

    Google Scholar 

  14. Acar, U.A., Ihler, A., Mettu, R., Sümer, Ö.: Adaptive Inference on General Graphical Models. In: Uncertainty in Artificial Intelligence, UAI (2008)

    Google Scholar 

  15. Agarwal, P.K., Guibas, L.J., Edelsbrunner, H., Erickson, J., Isard, M., Har-Peled, S., Hershberger, J., Jensen, C., Kavraki, L., Koehl, P., Lin, M., Manocha, D., Metaxas, D., Mirtich, B., Mount, D., Muthukrishnan, S., Pai, D., Sacks, E., Snoeyink, J., Suri, S., Wolefson, O.: Algorithmic issues in modeling motion. ACM Comput. Surv. 34(4), 550–572 (2002)

    Article  Google Scholar 

  16. Alexandron, G., Kaplan, H., Sharir, M.: Kinetic and dynamic data structures for convex hulls and upper envelopes. In: Dehne, F., López-Ortiz, A., Sack, J.-R. (eds.) WADS 2005. LNCS, vol. 3608, pp. 269–281. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  17. Alstrup, S., Holm, J., de Lichtenberg, K., Thorup, M.: Minimizing diameters of dynamic trees. In: Automata, Languages and Programming, pp. 270–280 (1997)

    Google Scholar 

  18. Alstrup, S., Holm, J., de Lichtenberg, K., Thorup, M.: Maintaining information in fully-dynamic trees with top trees. In: The Computing Research Repository, CoRR (2003), (cs.DS/0310065)

    Google Scholar 

  19. Basch, J., Guibas, L.J., Hershberger, J.: Data structures for mobile data. In: Proceedings of the eighth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics, pp. 747–756 (1997)

    Google Scholar 

  20. Basch, J., Guibas, L.J., Hershberger, J.: Data structures for mobile data. Journal of Algorithms 31(1), 1–28 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  21. Bellman, R.: Dynamic Programming. Princeton University Press, Princeton (1957)

    MATH  Google Scholar 

  22. Brodal, G.S., Jacob, R.: Dynamic planar convex hull. In: Proceedings of the 43rd Annual IEEE Symposium on Foundations of Computer Science, pp. 617–626 (2002)

    Google Scholar 

  23. Carlsson, M.: Monads for Incremental Computing. In: Proceedings of the 7th ACM SIGPLAN International Conference on Functional programming, pp. 26–35. ACM Press, New York (2002)

    Google Scholar 

  24. Chan, T.M.: Dynamic planar convex hull operations in near-logarithmic amortized time. In: Proceedings of the the 40th Annual IEEE Symposium on Foundations of Computer Science (FOCS), pp. 92–99 (1999)

    Google Scholar 

  25. Chiang, Y.-J., Tamassia, R.: Dynamic algorithms in computational geometry. Proceedings of the IEEE 80(9), 1412–1434 (1992)

    Article  Google Scholar 

  26. Cohen, R.F., Tamassia, R.: Dynamic expression trees and their applications. In: Proceedings of the 2nd Annual ACM-SIAM Symposium on Discrete Algorithms, pp. 52–61 (1991)

    Google Scholar 

  27. Demers, A., Reps, T., Teitelbaum, T.: Incremental Evaluation of Attribute Grammars with Application to Syntax-directed Editors. In: Proceedings of the 8th Annual ACM Symposium on Principles of Programming Languages, pp. 105–116 (1981)

    Google Scholar 

  28. Eppstein, D.: Average case analysis of dynamic geometric optimization. In: SODA 1994: Proceedings of the fifth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA. Society for Industrial and Applied Mathematics, pp. 77–86 (1994)

    Google Scholar 

  29. Eppstein, D.: Incremental and decremental maintenance of planar width. In: SODA 1999: Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA. Society for Industrial and Applied Mathematics, pp. 899–900 (1999)

    Google Scholar 

  30. Eppstein, D., Galil, Z., Italiano, G.F.: Dynamic graph algorithms. In: Atallah, M.J. (ed.) Algorithms and Theory of Computation Handbook, ch. 8. CRC Press, Boca Raton (1999)

    Google Scholar 

  31. Eppstein, D., Galil, Z., Italiano, G.F., Nissenzweig, A.: Sparsification—a technique for speeding up dynamic graph algorithms. Journal of the ACM 44(5), 669–696 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  32. Field, J., Teitelbaum, T.: Incremental reduction in the lambda calculus. In: Proceedings of the ACM 1990 Conference on LISP and Functional Programming, June 1990, pp. 307–322 (1990)

    Google Scholar 

  33. Field, J.: Incremental Reduction in the Lambda Calculus and Related Reduction Systems. PhD thesis, Department of Computer Science, November 1991. Cornell University (1991)

    Google Scholar 

  34. Frederickson, G.N.: Data structures for on-line updating of minimum spanning trees, with applications. SIAM Journal on Computing 14, 781–798 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  35. Frederickson, G.N.: A data structure for dynamically maintaining rooted trees. Journal of Algorithms 24(1), 37–65 (1997)

    Article  MathSciNet  MATH  Google Scholar 

  36. Guibas, L.: Modeling motion. In: Goodman, J., O’Rourke, J. (eds.) Handbook of Discrete and Computational Geometry, 2nd edn., pp. 1117–1134. Chapman and Hall/CRC (2004)

    Google Scholar 

  37. Guibas, L., Russel, D.: An empirical comparison of techniques for updating delaunay triangulations. In: SCG 2004: Proceedings of the twentieth annual symposium on Computational geometry, pp. 170–179. ACM Press, New York (2004)

    Chapter  Google Scholar 

  38. Hammer, M.A., Acar, U.A.: Memory management for self-adjusting computation. In: ISMM 2008: Proceedings of the 7th international symposium on Memory management, pp. 51–60 (2008)

    Google Scholar 

  39. Hammer, M.A., Acar, U.A., Chen, Y.: CEAL: A C-based language for self-adjusting computation. In: Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation (June 2009)

    Google Scholar 

  40. Henzinger, M.R., King, V.: Randomized fully dynamic graph algorithms with polylogarithmic time per operation. Journal of the ACM 46(4), 502–516 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  41. Henzinger, M.R., King, V.: Maintaining minimum spanning trees in dynamic graphs. In: Degano, P., Gorrieri, R., Marchetti-Spaccamela, A. (eds.) ICALP 1997. LNCS, vol. 1256, pp. 594–604. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  42. Hershberger, J., Suri, S.: Applications of a semi-dynamic convex hull algorithm. BIT 32(2), 249–267 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  43. Heydon, A., Levin, R., Yu, Y.: Caching Function Calls Using Precise Dependencies. In: Proceedings of the 2000 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 311–320 (2000)

    Google Scholar 

  44. Holm, J., de Lichtenberg, K., Thorup, M.: Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity. Journal of the ACM 48(4), 723–760 (2001)

    Article  MathSciNet  MATH  Google Scholar 

  45. Hoover, R.: Incremental Graph Evaluation. PhD thesis, Department of Computer Science. Cornell University (May 1987)

    Google Scholar 

  46. Janardan, R.: On maintaining the width and diameter of a planar point-set online. In: Hsu, W.-L., Lee, R.C.T. (eds.) ISA 1991. LNCS, vol. 557, pp. 137–149. Springer, Heidelberg (1991)

    Chapter  Google Scholar 

  47. Ley-Wild, R., Acar, U.A., Fluet, M.: A cost semantics for self-adjusting computation. In: Proceedings of the 26th Annual ACM Symposium on Principles of Programming Languages (2009)

    Google Scholar 

  48. Ley-Wild, R., Fluet, M., Acar, U.A.: Compiling self-adjusting programs with continuations. In: Proceedings of the International Conference on Functional Programming (2008)

    Google Scholar 

  49. Liu, Y.A., Stoller, S., Teitelbaum, T.: Static Caching for Incremental Computation. ACM Transactions on Programming Languages and Systems 20(3), 546–585 (1998)

    Article  Google Scholar 

  50. McCarthy, J.: A Basis for a Mathematical Theory of Computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland, Amsterdam (1963)

    Chapter  Google Scholar 

  51. Michie, D.: ”Memo” Functions and Machine Learning. Nature 218, 19–22 (1968)

    Article  Google Scholar 

  52. Miller, G.L., Reif, J.H.: Parallel tree contraction and its application. In: Proceedings of the 26th Annual IEEE Symposium on Foundations of Computer Science, pp. 487–489 (1985)

    Google Scholar 

  53. Overmars, M.H., van Leeuwen, J.: Maintenance of configurations in the plane. Journal of Computer and System Sciences 23, 166–204 (1981)

    Article  MathSciNet  MATH  Google Scholar 

  54. Preparata, F.P.: An optimal real-time algorithm for planar convex hulls. Commun. ACM 22(7), 402–405 (1979)

    Article  MathSciNet  MATH  Google Scholar 

  55. Pugh, W., Teitelbaum, T.: Incremental computation via function caching. In: Proceedings of the 16th Annual ACM Symposium on Principles of Programming Languages, pp. 315–328 (1989)

    Google Scholar 

  56. Radzik, T.: Implementation of dynamic trees with in-subtree operations. ACM Journal of Experimental Algorithms 3, Article 9 (1998)

    Article  MathSciNet  MATH  Google Scholar 

  57. Reps, T.: Optimal-time incremental semantic analysis for syntax-directed editors. In: Proceedings of the 9th Annual Symposium on Principles of Programming Languages, pp. 169–176 (1982)

    Google Scholar 

  58. Rote, G., Schwarz, C., Snoeyink, J.: Maintaining the approximate width of a set of points in the plane. In: Proceedings of the 5th Canadian Conference on Computational Geometry, pp. 258–263 (1993)

    Google Scholar 

  59. Russel, D.: Kinetic Data Structures in Practice. PhD thesis, Department of Computer Science. Stanford University (March 2007)

    Google Scholar 

  60. Russel, D., Karavelas, M.I., Guibas, L.J.: A package for exact kinetic data structures and sweepline algorithms. Comput. Geom. Theory Appl. 38(1-2), 111–127 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  61. Saraiva, J., Swierstra, S.D., Kuiper, M.F.: Functional incremental attribute evaluation. In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 279–294. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  62. Shankar, A., Bodik, R.: DITTO: Automatic Incrementalization of Data Structure Invariant Checks (in Java). In: Proceedings of the ACM SIGPLAN 2007 Conference on Programming language Design and Implementation (2007)

    Google Scholar 

  63. Sleator, D.D., Tarjan, R.E.: A data structure for dynamic trees. Journal of Computer and System Sciences 26(3), 362–391 (1983)

    Article  MathSciNet  MATH  Google Scholar 

  64. Sleator, D.D., Tarjan, R.E.: Self-adjusting binary search trees. Journal of the ACM 32(3), 652–686 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  65. Sundaresh, R.S., Hudak, P.: Incremental compilation via partial evaluation. In: Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages, pp. 1–13 (1991)

    Google Scholar 

  66. Tarjan, R., Werneck, R.: Dynamic trees in practice. In: Demetrescu, C. (ed.) WEA 2007. LNCS, vol. 4525, pp. 80–93. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  67. Tarjan, R., Werneck, R.: Self-adjusting top trees. In: Proceedings of the Sixteenth Annual ACM-SIAM Symposium on Discrete Algorithms (2005)

    Google Scholar 

  68. Tarjan, R.E.: Dynamic trees as search trees via euler tours, applied to the network simplex algorithm. Mathematical Programming 78, 167–177 (1997)

    MathSciNet  MATH  Google Scholar 

  69. Yellin, D.M., Strom, R.E.: INC: A Language for Incremental Computations. ACM Transactions on Programming Languages and Systems 13(2), 211–236 (1991)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Acar, U.A., Ley-Wild, R. (2009). Self-adjusting Computation with Delta ML. In: Koopman, P., Plasmeijer, R., Swierstra, D. (eds) Advanced Functional Programming. AFP 2008. Lecture Notes in Computer Science, vol 5832. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04652-0_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-04652-0_1

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-04651-3

  • Online ISBN: 978-3-642-04652-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics