Foundations and Trends® in Programming Languages > Vol 9 > Issue 3

Incremental Computation: What Is the Essence?

By Yanhong A. Liu, Stony Brook University, USA, liu@cs.stonybrook.edu

 
Suggested Citation
Yanhong A. Liu (2025), "Incremental Computation: What Is the Essence?", Foundations and Trends® in Programming Languages: Vol. 9: No. 3, pp 194-269. http://dx.doi.org/10.1561/2500000067

Publication Date: 25 Nov 2025
© 2025 Y. A. Liu
 
Subjects
Program transformations and optimizations,  Partial evaluation,  Program synthesis,  Compilation and interpretation techniques,  Programming language implementation,  Language paradigms,  Program logic,  Design and analysis of algorithms,  Query processing and optimization
 

Free Preview:

Download extract

Share

Download article
In this article:
1. Introduction
2. Incremental Computation: Three Categories of Studies
3. Essence of Incremental Computation
4. Systematic Incrementalization—Using Previous Result, Intermediate Results, and Auxiliary Values
5. Systematic Design and Optimization—Iterate, Incrementalize, Implement
6. Example Applications: Graph Analysis and Distributed Algorithms
7. Conclusion—Raising the Level of Abstractions
Acknowledgements
References

Abstract

Incremental computation aims to compute more efficiently on changed input by reusing previously computed results. We give a high-level overview of works on incremental computation, and highlight the essence underlying all of them, which we call incrementalization—the discrete counterpart of differentiation in calculus. We present the gist of a systematic method for incrementalization, and a systematic method centered around it—called Iterate-Incrementalize-Implement—for program design and optimization, as well as algorithm design and optimization. We illustrate the methods with example applications in arithmetic computations, recursive functions, graph analysis, and distributed algorithms. At a meta-level, with historical contexts and for future directions, we stress the power of high-level data, control, and module abstractions in developing new and better algorithms and programs as well as their precise complexities.

DOI:10.1561/2500000067
ISBN: 978-1-63828-653-0
88 pp. $160.00
Buy E-book (.pdf)
Table of contents:
1. Introduction
2. Incremental Computation: Three Categories of Studies
3. Essence of Incremental Computation
4. Systematic Incrementalization—Using Previous Result, Intermediate Results, and Auxiliary Values
5. Systematic Design and Optimization—Iterate, Incrementalize, Implement
6. Example Applications: Graph Analysis and Distributed Algorithms
7. Conclusion—Raising the Level of Abstractions
Acknowledgements
References

Incremental Computation: What Is the Essence?

As the real world changes continually, computer programs that handle input from the real world must handle continually changing input. Furthermore, because any algorithm that solves a nontrivial problem must proceed in an iterative or recursive fashion, computations must be performed on a repeatedly changed state. The general area of incremental computation studies how to efficiently handle continually changing input by storing and reusing previously computed results. The problem is fundamental and ubiquitous, from graph algorithms to database queries, and from program analysis to neural network training, including everything nontrivial.

In this monograph, a high-level overview of works on incremental computation are presented, and the essence underlying all of them is highlighted. This is called incrementalization — the discrete counterpart of differentiation in calculus. Presented is the gist of a systematic method for incrementalization, and a systematic method centered around it — called Iterate-Incrementalize Implement — for program design and optimization, as well as algorithm design and optimization. Also illustrated are methods with example applications in arithmetic computations, recursive functions, graph analysis, and distributed algorithms. At a meta-level, with historical contexts and for future directions, the power of high-level data, control, and module abstractions in developing new and better algorithms and programs as well as their precise complexities are stressed.

 
PGL-067