Advanced Search

Browse by Discipline

Scientific Societies

E-print Alerts

Add E-prints

E-print Network

  Advanced Search  

Imperative Self-Adjusting Computation Umut A. Acar Amal Ahmed Matthias Blume

Summary: Imperative Self-Adjusting Computation
Umut A. Acar Amal Ahmed Matthias Blume
Toyota Technological Institute at Chicago
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 ref-
erences 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 equiv-
alent. 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


Source: Acar, Umut - Programming Languages and Systems Group, Max-Planck Institute for Software Systems


Collections: Computer Technologies and Information Sciences