## Systematic Derivation of Incremental Programs (1995)

### Cached

### Download Links

- [www.grammatech.com]
- [www.grammatech.com]
- [ftp.cs.cornell.edu]
- [ftp.cs.cornell.edu]
- [ftp.cs.cornell.edu]
- [www.grammatech.com]
- [www.grammatech.com]
- DBLP

### Other Repositories/Bibliography

Citations: | 39 - 21 self |

### BibTeX

@MISC{Liu95systematicderivation,

author = {Yanhong A. Liu and Tim Teitelbaum},

title = {Systematic Derivation of Incremental Programs},

year = {1995}

}

### Years of Citing Articles

### OpenURL

### Abstract

A systematic approach is given for deriving incremental programs from non-incremental programs written in a standard functional programming language. We exploit a number of program analysis and transformation techniques and domain-specific knowledge, centered around effective utilization of caching, in order to provide a degree of incrementality not otherwise achievable by a generic incremental evaluator. 1 Introduction Incremental programs take advantage of repeated computations on inputs that differ only slightly from one another, avoiding unnecessary duplication of common computations. Given a program f and a certain input change \Phi, a program f 0 that computes the value of f(x \Phi y) efficiently by making use of the value of f(x) is called an incremental version of f under \Phi. The parameter y can be regarded as a change ffix to the input x. Methods of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 24, 9, 10] and ...

### Citations

639 |
Partial Evaluation and Automatic Program Generation. Available online: http://www.itu.dk/people/sestoft/pebook
- Jones, Gomard, et al.
- 1993
(Show Context)
Citation Context ... r e t r i e v als or replacing function applications by applications of introduced functions. 3 It is a must if we w ant to guarantee the e ciency of the derived programs. Then, a number of analysis =-=[19]-=- are used to assist transforming function applications. Dependence analysis enables us to recognize subcomputations that are possibly computed incrementally, i.e., subcomputations depending on x, a n ... |

570 | A Transformation System for Developing Recursive Programs
- Burstall, Darlington
- 1976
(Show Context)
Citation Context ... x � y 1� :::� ym � r ). Note that some of the parameters of f 0 0 n 0 may be dead and eliminated as discussed in Section 5. 3obtain a de nition of f 0 by the following three steps. First, we unfold =-=[6]-=- (also called expand [48]) the application. Second, we incrementalize the unfolded application. Basically, w e consider each subexpression e of the unfolded application in applicative order and (a) co... |

238 | KIDS: A semiautomatic program development system
- Smith
- 1990
(Show Context)
Citation Context ...arded as a change x to the input x. Methods of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 2 4 , 9, 10] and transformational programming =-=[26, 38]-=-, interactive systems like editors [3, 35] and programming environments [34, 2 1 ], and dynamic systems like distributed databases [8, 20] and real-time systems [45]. A comprehensive guide to the lite... |

179 |
The Synthesizer Generator: A System for Constructing Language–Based Editors
- Reps, Teitelbaum
- 1988
(Show Context)
Citation Context ...ntal algorithms, application programs are run in a general incremental execution framework so that incremental computation is achieved automatically, e.g., incremental attribute evaluation frameworks =-=[35]-=-, incremental computation via function caching [33], formal program manipulations using traditional partial evaluation [43, 4 2 ], incremental lambd a reduction [12], the change detailing network of I... |

168 | The concept of a supercompiler
- Turchin
- 1986
(Show Context)
Citation Context ...computations in applicative order, and, moreover, we lift conditions and bindings out of subcomputations. This lifting technique is similar in spirit to the driving transformation by supercompilation =-=[44]-=-. It causes relatively drastic reorganization of program structures that helps expose incrementality t h a t i s o t h e r w i s e hidden. Fourth, a global de nition set is maintained and used to repl... |

150 | Data structures for on-line updating of minimum spanning trees, with applications - Frederickson - 1985 |

123 | Sparsification – a technique for speeding up dynamic graph algorithms - Eppstein, Galil, et al. - 1997 |

117 | Automatic autoprojection of recursive equations with global variables and abstract data types
- Bondorf, Danvy
- 1991
(Show Context)
Citation Context ...e counting analysis helps decide whether an unfolding duplicates computations, it can also help decide whether an unfolding discards computations. Similar solutions are proposed in partial evaluation =-=[24, 5]-=-. Note that, even without this technique, the e ciency of our derived programs are guaranteed with the help of time analysis. But in partial evaluation where no time analysis is employed, a transforme... |

113 | An incremental constraint solver - Freeman-Benson, Maloney, et al. - 1990 |

111 | Finite Differencing of Computable Expressions - Paige, Koenig - 1982 |

90 | Memo” functions and machine learning - Michie - 1968 |

85 |
Mechanical program analysis
- Wegbreit
- 1975
(Show Context)
Citation Context ...tions depend are then dead and can be eliminated. Analysis Techniques. To implement the above transformations, several program analysis techniques are needed and summarized here. First, time analysis =-=[47, 37]-=- is used when replacing subcomputations by r e t r i e v als or replacing function applications by applications of introduced functions. 3 It is a must if we w ant to guarantee the e ciency of the der... |

81 | Incremental context-dependent analysis for language-based editors
- Reps, Teitelbaum, et al.
- 1983
(Show Context)
Citation Context ... of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 2 5 , 9, 10] and transformational programming [27, 39], interactive systems like editors =-=[3, 36]-=- and programming environments [35, 2 2 ], and dynamic systems like distributed databases [8, 20] and real-time systems [46]. A comprehensive guide to the literature on incremental computation has appe... |

79 | Specification and Transformation of Programs: a Formal Approach to Software Development - Partsch - 1990 |

77 |
Automatic complexity analysis
- Rosendahl
- 1989
(Show Context)
Citation Context ...tions depend are then dead and can be eliminated. Analysis Techniques. To implement the above transformations, several program analysis techniques are needed and summarized here. First, time analysis =-=[47, 37]-=- is used when replacing subcomputations by r e t r i e v als or replacing function applications by applications of introduced functions. 3 It is a must if we w ant to guarantee the e ciency of the der... |

73 |
Reduction of operator strength
- Allen, Cooke, et al.
- 1981
(Show Context)
Citation Context ...closest in spirit to the nite di erencing techniques of the third class. The name \ nite di erencing" was originally given by P aige and Koenig [31]. Their work generalizes Cocke's strength reduction =-=[9]-=- and provides a convenient framework for implementing a host of transformations including Earley's \iterator inversion" [10]. They develop a set of rules for di erentiating set-theoretic expressions a... |

73 | KIDS: a knowledge-based software development system
- Smith
- 1991
(Show Context)
Citation Context ...rators [10], nite di erencing of set expressions in SETL [31], optimizing relational database operations [17, 28], incremental xed point computation [7], di erentiation of functional programs in KIDS =-=[39, 40]-=-, etc. In most of these works, programs are written in very high-level languages with aggregate data structures, e.g., sets and bags, and xed rules are o ered for transforming aggregate operations int... |

71 |
Incremental evaluation of computational circuits
- Alpern, Hoover, et al.
- 1990
(Show Context)
Citation Context ...ms dealing with particular input changes. Examples are incremental parsing [15, 1 8 ], incremental attribute evaluation [36, 4 9 ] , incremental data- ow analysis [38], incremental circuit evaluation =-=[2]-=-, incremental constraint solving [45, 1 3 ] , etc. The study of dynamic graph algorithms, e.g., [50], can be viewed as falling into this class. Although e orts in this class are directed towards parti... |

69 |
Incremental computation via function caching
- Pugh, Teitelbaum
- 1989
(Show Context)
Citation Context ...general incremental execution framework so that incremental computation is achieved automatically, e.g., incremental attribute evaluation frameworks [35], incremental computation via function caching =-=[33]-=-, formal program manipulations using traditional partial evaluation [43, 4 2 ], incremental lambd a reduction [12], the change detailing network of INC [51], incremental computation as a program abstr... |

69 | Program Flow Analysis, Theory and Applications, chapter 4, Flow Analysis and Optimization of LISP-like Structures - Jones, Muchnick - 1983 |

67 | Tabulation techniques for recursive programs - Bird - 1980 |

58 | Program derivation by fixed point computation - Cai, Paige - 1989 |

47 | Complexity analysis for a lazy higher-order language - Sands - 1990 |

47 | Algorithm theories and design tactics
- Smith, Lowry
- 1990
(Show Context)
Citation Context ...in standard languages. Smith's work in KIDS [39, 40] is closely related to ours. KIDS is a semi-automatic program development system that aims to derive e cient programs from high-level speci cations =-=[41]-=-, as is APTS. Its version of nite di erencing was developed for the optimization of its derived functional programs and has two basic operations: abstraction and simpli cation. Abstraction of a functi... |

45 | Incremental data flow analysis algorithms - Ryder, Paull - 1988 |

45 |
Partially static structures in a self-applicable partial evaluator
- Mogensen
- 1987
(Show Context)
Citation Context ...e counting analysis helps decide whether an unfolding duplicates computations, it can also help decide whether an unfolding discards computations. Similar solutions are proposed in partial evaluation =-=[24, 5]-=-. Note that, even without this technique, the e ciency of our derived programs are guaranteed with the help of time analysis. But in partial evaluation where no time analysis is employed, a transforme... |

43 |
Reps. A categorized bibliography on incremental computation
- Ramalingam, W
- 1993
(Show Context)
Citation Context ...gramming environments [35, 2 2 ], and dynamic systems like distributed databases [8, 20] and real-time systems [46]. A comprehensive guide to the literature on incremental computation has appeared in =-=[34]-=-. Despite the relatively diverse categories discussed in [34], most of the work can be divided into three classes. The rst class includes particular incremental algorithms designed for particular prob... |

41 |
De Vanter, The Pan Language-Based Editing System
- Ballance, Graham, et al.
- 1991
(Show Context)
Citation Context ... of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 2 4 , 9, 10] and transformational programming [26, 38], interactive systems like editors =-=[3, 35]-=- and programming environments [34, 2 1 ], and dynamic systems like distributed databases [8, 20] and real-time systems [45]. A comprehensive guide to the literature on incremental computation has appe... |

32 | Partial evaluation and mixed computation - rner, Ershov, et al. - 1987 |

32 |
Generating Editing Environments Based on Relations and Attributes
- Horwitz, Teitelbaum
- 1986
(Show Context)
Citation Context ... Cornell University, Ithaca, NY 14853. Email: fyanhong, ttg@cs.cornell.edu 1are high level iterators [10], nite di erencing of set expressions in SETL [31], optimizing relational database operations =-=[17, 28]-=-, incremental xed point computation [7], di erentiation of functional programs in KIDS [39, 40], etc. In most of these works, programs are written in very high-level languages with aggregate data stru... |

28 |
INC: A Language for Incremental Computations
- Yellin, Strom
- 1991
(Show Context)
Citation Context ...ncremental computation via function caching [33], formal program manipulations using traditional partial evaluation [43, 4 2 ], incremental lambd a reduction [12], the change detailing network of INC =-=[51]-=-, incremental computation as a program abstraction [16], etc. In this class, often no explicitly incremental version of an application program is derived and run autonomously by a standard evaluator. ... |

28 | Incremental recovery in main memory database systems
- Levy, Silberschatz
- 1992
(Show Context)
Citation Context ... compilers [1, 2 5 , 9, 10] and transformational programming [27, 39], interactive systems like editors [3, 36] and programming environments [35, 2 2 ], and dynamic systems like distributed databases =-=[8, 20]-=- and real-time systems [46]. A comprehensive guide to the literature on incremental computation has appeared in [34]. Despite the relatively diverse categories discussed in [34], most of the work can ... |

28 | An Incremental Programming Environment - Medina-Mora, Feiler - 1981 |

26 | Mechanical translation of set theoretic problem specifications into efficient ram code - a case study
- Paige, Henglein
- 1987
(Show Context)
Citation Context ...mbine these rules using a chain rule to derive inexpensive programs with incremental loop bodies. Such t e c hniques are indispensable as part of an optimizing compiler for languages like SETL or APL =-=[30, 7]-=-. The APTS program transformation system [29] has been developed for such purposes. Our technique di ers from theirs in that it applies to programs written in a standard language like Lisp. In general... |

25 | Building friendly parsers - JALILI, GALLIER |

25 | Applications of finite differencing to database integrity control and query]transaction optimization - Paige - 1984 |

25 |
Finite di erencing of computable expressions
- Paige, Koenig
- 1982
(Show Context)
Citation Context ...uthors' address: Department of Computer Science, Cornell University, Ithaca, NY 14853. Email: fyanhong, ttg@cs.cornell.edu 1are high level iterators [10], nite di erencing of set expressions in SETL =-=[31]-=-, optimizing relational database operations [17, 28], incremental xed point computation [7], di erentiation of functional programs in KIDS [39, 40], etc. In most of these works, programs are written i... |

23 |
High level iterators and a method for automatically designing data structure representation
- Earley
- 1976
(Show Context)
Citation Context ...al Research under contract No. N00014-92-J-1973. Authors' address: Department of Computer Science, Cornell University, Ithaca, NY 14853. Email: fyanhong, ttg@cs.cornell.edu 1are high level iterators =-=[10]-=-, nite di erencing of set expressions in SETL [31], optimizing relational database operations [17, 28], incremental xed point computation [7], di erentiation of functional programs in KIDS [39, 40], e... |

23 |
Incremental reduction in the lambda calculus
- Field, Teitelbaum
- 1990
(Show Context)
Citation Context ...al attribute evaluation frameworks [35], incremental computation via function caching [33], formal program manipulations using traditional partial evaluation [43, 4 2 ], incremental lambd a reduction =-=[12]-=-, the change detailing network of INC [51], incremental computation as a program abstraction [16], etc. In this class, often no explicitly incremental version of an application program is derived and ... |

23 |
Speeding up dynamic transitive closure for bounded degree graphs
- Yellin
- 1993
(Show Context)
Citation Context ...attribute evaluation [36, 4 9 ] , incremental data- ow analysis [38], incremental circuit evaluation [2], incremental constraint solving [45, 1 3 ] , etc. The study of dynamic graph algorithms, e.g., =-=[50]-=-, can be viewed as falling into this class. Although e orts in this class are directed towards particular incremental algorithms, they apply to a broad class of problems, e.g., any attribute grammar, ... |

23 |
Goal-directed program transformation
- WEGBREIT
(Show Context)
Citation Context ... Note that some of the parameters of f 0 0 n 0 may be dead and eliminated as discussed in Section 5. 3obtain a de nition of f 0 by the following three steps. First, we unfold [6] (also called expand =-=[48]-=-) the application. Second, we incrementalize the unfolded application. Basically, w e consider each subexpression e of the unfolded application in applicative order and (a) collect an information set ... |

19 | Fully dynamic biconnectivity in graphs - Rauch - 1992 |

15 | Conditions for incremental iteration: Examples and counterexamples - Ryder, Marlowe, et al. - 1988 |

15 | Generalized Partial Computation for a Lazy Functional Language - Takano - 1991 |

14 |
Transformational Programming -- Applications to Algorithms and Systems
- Paige
- 1983
(Show Context)
Citation Context ...arded as a change x to the input x. Methods of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 2 5 , 9, 10] and transformational programming =-=[27, 39]-=-, interactive systems like editors [3, 36] and programming environments [35, 2 2 ], and dynamic systems like distributed databases [8, 20] and real-time systems [46]. A comprehensive guide to the lite... |

13 | Incremental computation via partial evaluation - SUNDARESH, P - 1991 |

13 |
Chalasani S: An Incremental Algorithm for TDM Switching Assignments in Satellite and Terrestrial Networks
- Varma
- 1992
(Show Context)
Citation Context ...d transformational programming [27, 39], interactive systems like editors [3, 36] and programming environments [35, 2 2 ], and dynamic systems like distributed databases [8, 20] and real-time systems =-=[46]-=-. A comprehensive guide to the literature on incremental computation has appeared in [34]. Despite the relatively diverse categories discussed in [34], most of the work can be divided into three class... |

12 | The Pan language-based editing system
- Ballance, Graham, et al.
- 1992
(Show Context)
Citation Context ... of incremental computation have widespread applications, e.g., loop optimizations in optimizing compilers [1, 2 5 , 9, 10] and transformational programming [27, 39], interactive systems like editors =-=[3, 36]-=- and programming environments [35, 2 2 ], and dynamic systems like distributed databases [8, 20] and real-time systems [46]. A comprehensive guide to the literature on incremental computation has appe... |

12 | Incremental parsing - Ghezzi, Mandrioli - 1979 |

12 | Some observations concerning formal differentiation of set theoretic expressions - Sharir - 1982 |