Self-Adjusting Computation

Self-adjusting computation refers to a model of computing where computations can automatically respond to changes in their data.   The basic abstractions and algorithms for self-adjusting computation were developed in my Ph.D. work.  In subsequent work, we have extended the foundations to include imperative (effectful) computations and traceable data structures, and developed programming languages and systems to support  self-adjusting computation in several languages by extending Standard ML and C. We have also applied self-adjusting computation in a number of domains including algorithms, machine learning, and software systems.  In these applications, we have solved several important open problems (e.g., geometric problems involving changing and moving data sets, inference algorithms for learning from changing models). 



  • An earlier implementation that matches the interface and algorithms described in our TOPLAS-2006 paper. Download tar-ball 
  • CEAL extends the C language with support for self-adjusting computation.  Download CEAL.  
  • Delta ML extends the ML language with support for self-adjusting computation. Download DeltaML. 


  • This research is supported partially by grants from Intel Labs, Microsoft Research, and National Science Foundation.