|
ABSTRACT
Self-adjusting computation enables writing programs that can automatically and efficiently respond to changes to their data (e.g., inputs). The idea behind the approach is to store all data that can change over time in modifiable references and to let computations construct traces that can drive change propagation. After changes have occurred, change propagation updates the result of the computation by re-evaluating only those expressions that depend on the changed data. Previous approaches to self-adjusting computation require that modifiable references be written at most once during execution---this makes the model applicable only in a purely functional setting. In this paper, we present techniques for imperative self-adjusting computation where modifiable references can be written multiple times. We define a language SAIL (Self-Adjusting Imperative Language) and prove consistency, i.e., that change propagation and from-scratch execution are observationally equivalent. Since SAIL programs are imperative, they can create cyclic data structures. To prove equivalence in the presence of cycles in the store, we formulate and use an untyped, step-indexed logical relation, where step indices are used to ensure well-foundedness. We show that SAIL accepts an asymptotically efficient implementation by presenting algorithms and data structures for its implementation. When the number of operations (reads and writes) per modifiable is bounded by a constant, we show that change propagation becomes as efficient as in the non-imperative case. The general case incurs a slowdown that is logarithmic in the maximum number of such operations. We describe a prototype implementation of SAIL as a Standard ML library.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
Martín Abadi , Butler Lampson , Jean-Jacques Lévy, Analysis and caching of dependencies, Proceedings of the first ACM SIGPLAN international conference on Functional programming, p.83-91, May 24-26, 1996, Philadelphia, Pennsylvania, United States
|
 |
2
|
Umut A. Acar , Guy E. Blelloch , Robert Harper, Selective memoization, Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.14-25, January 15-17, 2003, New Orleans, Louisiana, USA
|
| |
3
|
Umut A. Acar , Guy E. Blelloch , Robert Harper , Jorge L. Vittes , Shan Leung Maverick Woo, Dynamizing static algorithms, with applications to dynamic trees and history independence, Proceedings of the fifteenth annual ACM-SIAM symposium on Discrete algorithms, January 11-14, 2004, New Orleans, Louisiana
|
| |
4
|
Umut A. Acar, Guy E. Blelloch, Matthias Blume, Robert Harper, and Kanat Tangwongsan. A library for self-adjusting computation. Electronic Notes in Theoretical Computer Science, 148(2), 2006. Also in Proceedings of the ACM-SIGPLAN Workshop on ML. 2005.
|
 |
5
|
Umut A. Acar , Guy E. Blelloch , Matthias Blume , Kanat Tangwongsan, An experimental analysis of self-adjusting computation, Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation, June 11-14, 2006, Ottawa, Ontario, Canada
|
 |
6
|
|
| |
7
|
Umut A. Acar , Guy E. Blelloch , Kanat Tangwongsan , Jorge L. Vittes, Kinetic algorithms via self-adjusting computation, Proceedings of the 14th conference on Annual European Symposium, p.636-647, September 11-13, 2006, Zurich, Switzerland
[doi> 10.1007/11841036_57]
|
| |
8
|
Umut A. Acar, Amal Ahmed, and Matthias Blume. Imperative self-adjusting computation. Technical Report TR-2007-18, Department of Computer Science, University of Chicago, November 2007.
|
| |
9
|
Umut A. Acar, Matthias Blume, and Jacob Donham. A consistent semantics of self-adjusting computation. In Proceedings of the 16th Annual European Symposium on Programming (ESOP), 2007.
|
| |
10
|
Umut A. Acar, Alexander Ihler, Ramgopal Mettu, and Ozgur Sumer. Adaptive bayesian inference. In Neural Information Systems (NIPS), 2007.
|
| |
11
|
Amal Ahmed. Step-indexed syntactic logical relations for recursive and quantified types. In Proceedings of the 15th Annual European Symposium on Programming (ESOP), pages 69--83, 2006.
|
 |
12
|
|
 |
13
|
|
| |
14
|
|
| |
15
|
Nick Benton and Benjamin Leperchey. Relational reasoning in a nominal semantics for storage. In Proceedings of the 7th International Conference on Typed Lambda Calculi and Applications (TLCA), pages 86--101, 2005.
|
| |
16
|
Nina Bohr and Lars Birkedal. Relational reasoning for recursive types and references. In Proceedings of the 4th Asian Symposium on Programming Languages and Systems (APLAS), 2006.
|
 |
17
|
|
| |
18
|
|
 |
19
|
|
 |
20
|
|
| |
21
|
|
| |
22
|
|
 |
23
|
|
 |
24
|
Allan Heydon , Roy Levin , Yuan Yu, Caching function calls using precise dependencies, Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, p.311-320, June 18-21, 2000, Vancouver, British Columbia, Canada
|
 |
25
|
|
 |
26
|
|
| |
27
|
John McCarthy. A Basis for a Mathematical Theory of Computation. In P. Braffort and D. Hirschberg, editors, Computer Programmingand Formal Systems, pages 33--70. North-Holland, Amsterdam, 1963.
|
| |
28
|
D. Michie. 'Memo' functions and machine learning. Nature, 218:19--22, 1968.
|
 |
29
|
|
 |
30
|
|
| |
31
|
|
| |
32
|
|
| |
33
|
William Pugh. Incremental computation via function caching. PhD thesis, Department of Computer Science, Cornell University, August 1988.
|
 |
34
|
|
 |
35
|
|
 |
36
|
|
| |
37
|
Marco D. Santambrogio , Seda Ogrenci Memik , Vincenzo Rana , Umut A. Acar , Donatella Sciuto, A novel SoC design methodology combining adaptive software and reconfigurable hardware, Proceedings of the 2007 IEEE/ACM international conference on Computer-aided design, November 05-08, 2007, San Jose, California
|
 |
38
|
|
| |
39
|
Kurt Sieber. New steps towards full abstraction for local variables. In ACM SIGPLAN Workshop on State in Programming Languages, 1993.
|
| |
40
|
Ian D. B. Stark. Names and Higher-Order Functions. Ph. D. dissertation, University of Cambridge, Cambridge, England, December 1994.
|
| |
41
|
R. S. Sundaresh and Paul Hudak. Incremental compilation via partial evaluation. In Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages (POPL), pages 1--13, 1991.
|
 |
42
|
|
CITED BY 7
|
|
|
|
|
Lukasz Ziarek , Suresh Jagannathan , Matthew Fluet , Umut A. Acar, Speculative N-Way barriers, Proceedings of the 4th workshop on Declarative aspects of multicore programming, January 20-20, 2009, Savannah, GA, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|