Recursive programs as definitions in first order logic
SIAM Journal on Computing
Translation of attribute grammars into procedures
ACM Transactions on Programming Languages and Systems (TOPLAS)
The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Eliminating Redundant Recursive Calls.
ACM Transactions on Programming Languages and Systems (TOPLAS)
The analysis of algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Proc. of a conference on Functional programming languages and computer architecture
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Efficient Synthesis of Gaussian Filters by Cascaded Uniform Filters
IEEE Transactions on Pattern Analysis and Machine Intelligence
Strategical derivation of on-line programs
The IFIP TC2/WG 2.1 Working Conference on Program specification and transformation
Projections for strictness analysis
Proc. of a conference on Functional programming languages and computer architecture
Attribute grammars: definitions, systems and bibliography
Attribute grammars: definitions, systems and bibliography
The synthesizer generator: a system for constructing language-based editors
The synthesizer generator: a system for constructing language-based editors
An improved replacement strategy for function caching
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Incremental computation via function caching
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Specification and transformation of programs: a formal approach to software development
Specification and transformation of programs: a formal approach to software development
Introduction to algorithms
Symbolic finite differencing, part I (invited lecture)
Proceedings of the third European symposium on programming on ESOP '90
Separating binding times in language specifications
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Compile-time garbage collection by sharing analysis
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
A theory of incremental computation and its application
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Strictness and binding-time analyses: two for the price of one
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Building incremental programs using partial evaluation
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Compile-time analysis of functional programs
Research topics in functional programming
The Pan language-based editing system
ACM Transactions on Software Engineering and Methodology (TOSEM)
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
Alphonse: incremental computation as a programming abstraction
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Towards an automated tupling strategy
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Separating stages in the continuation-passing style transformation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principled optimization of functional programs
Principled optimization of functional programs
Attribute grammar paradigms—a high-level methodology in language implementation
ACM Computing Surveys (CSUR)
Non-parametric local transforms for computing visual correspondence
ECCV '94 Proceedings of the third European conference on Computer Vision (Vol. II)
Optimization of functional programs by grammar thinning
ACM Transactions on Programming Languages and Systems (TOPLAS)
Systematic derivation of incremental programs
Science of Computer Programming
Analysis and caching of dependencies
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Discovering auxiliary information for incremental computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program analysis using binary relations
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Program derivation via list introduction
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Tabulation Techniques for Recursive Programs
ACM Computing Surveys (CSUR)
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incremental Context-Dependent Analysis for Language-Based Editors
ACM Transactions on Programming Languages and Systems (TOPLAS)
An algorithm for reduction of operator strength
Communications of the ACM
Communications of the ACM
Transformational programming: applications to algorithms and systems
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Tupling Functions with Multiple Recursion Parameters
WSA '93 Proceedings of the Third International Workshop on Static Analysis
Program Specialization via Program Slicing
Selected Papers from the Internaltional Seminar on Partial Evaluation
Viewing A Program Transformation System At Work
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
KBSE '95 Proceedings of The 10th Knowledge-Based Software Engineering Conference
A powerful strategy for deriving efficient programs by transformation
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Dependence Analysis for Recursive Data
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Loop optimization for aggregate array computations
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Program Improvement by Automatic Redistribution of Intermediate Results
Program Improvement by Automatic Redistribution of Intermediate Results
A COMPILER FOR THE MIT TAGGED-TOKEN DATAFLOW ARCHITECTURE
A COMPILER FOR THE MIT TAGGED-TOKEN DATAFLOW ARCHITECTURE
Individuating unknown objects by combining motion and stereo
Individuating unknown objects by combining motion and stereo
From recursion to iteration: what are the optimizations?
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Efficiency by Incrementalization: An Introduction
Higher-Order and Symbolic Computation
Automatic time-bound analysis for a higher-order language
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Program optimization using indexed and recursive data structures
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Lessons learned about one-way, dataflow constraints in the Garnet and Amulet graphical toolkits
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic Accurate Cost-Bound Analysis for High-Level Languages
IEEE Transactions on Computers
Dynamic Programming via Static Incrementalization
Higher-Order and Symbolic Computation
Dynamic Programming via Static Incrementalization
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
A Systematic Incrementalization Technique and Its Application to Hardware Design
CHARME '99 Proceedings of the 10th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Eliminating Dead Code on Recursive Data
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Solving Regular Tree Grammar Based Constraints
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Eliminating dead code on recursive data
Science of Computer Programming - Special issue on static analysis (SAS'99)
Optimizing Ackermann's function by incrementalization
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Address Code and Arithmetic Optimizations for Embedded Systems
ASP-DAC '02 Proceedings of the 2002 Asia and South Pacific Design Automation Conference
From datalog rules to efficient programs with time and space guarantees
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Optimizing aggregate array computations in loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incrementalization across object abstraction
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Program transformation by solving recurrences
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
An experimental analysis of self-adjusting computation
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Adaptive functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Redundant Call Elimination via Tupling
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Imperative self-adjusting computation
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Memory management for self-adjusting computation
Proceedings of the 7th international symposium on Memory management
Compiling self-adjusting programs with continuations
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Solving Multiple Dataflow Queries Using WPDSs
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Caching and incrementalisation in the java query language
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Generating incremental implementations of object-set queries
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
From datalog rules to efficient programs with time and space guarantees
ACM Transactions on Programming Languages and Systems (TOPLAS)
An experimental analysis of self-adjusting computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Self-adjusting computation with Delta ML
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
DryadInc: reusing work in large-scale computations
HotCloud'09 Proceedings of the 2009 conference on Hot topics in cloud computing
Nectar: automatic management of data and computation in datacenters
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
Relational verification using product programs
FM'11 Proceedings of the 17th international conference on Formal methods
Incremental updates for efficient bidirectional transformations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Two for the price of one: a model for parallel and incremental computation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Incremental algorithms for inter-procedural analysis of safety properties
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Dynamic method materialization: a framework for optimizing data access via methods
DEXA'06 Proceedings of the 17th international conference on Database and Expert Systems Applications
PMAP: framework to predicting method access patterns for materialized methods
ADVIS'06 Proceedings of the 4th international conference on Advances in Information Systems
Non-monotonic self-adjusting computation
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
DBToaster: higher-order delta processing for dynamic, frequently fresh views
Proceedings of the VLDB Endowment
Redundant Call Elimination via Tupling
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Pruning with improving sequences in lazy functional programs
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
A systematic approach is given for deriving incremental programs that exploit caching. The cache-and-prune method presented in the article consists of three stages: (I) the original program is extended to cache the results of all its intermediate subcomputations as well as the final result, (II)) the extended program is incrementalized so that computation on a new input can use all intermediate results on an old input, and (III) unused results cached by the extended program and maintained by the incremental program are pruned away, leaving a pruned extended program that caches only useful intermediate results and a pruned incremental program that uses and maintains only useful results. All three stages utilize static analyses and semantics-preserving transformations. Stages I and III are simple, clean, and fully automatable. The overall method has a kind of optimality with respect to the techniques used in Stage II. The method can be applied straightfowardly to provide a systematic approach to program improvement via caching.