Two algorithms for maintaining order in a list
STOC '87 Proceedings of the nineteenth annual ACM symposium on Theory of computing
Incremental graph evaluation (attribute grammar)
Incremental graph evaluation (attribute grammar)
A data structure for dynamic trees
Journal of Computer and System Sciences
Making data structures persistent
Journal of Computer and System Sciences - 18th Annual ACM Symposium on Theory of Computing (STOC), May 28-30, 1986
Incremental computation via function caching
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Incremental reduction in the lambda calculus
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
A theory of incremental computation and its application
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
INC: a language for incremental computations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incremental reduction in the lambda calculus and related reduction systems
Incremental reduction in the lambda calculus and related reduction systems
A categorized bibliography on incremental computation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fully persistent lists with catenation
Journal of the ACM (JACM)
Analysis and caching of dependencies
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Incremental computation: a semantics-based systematic transformational approach
Incremental computation: a semantics-based systematic transformational approach
Static caching for incremental computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data structures for mobile data
Journal of Algorithms
Caching function calls using precise dependencies
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Incremental evaluation for attribute grammars with application to syntax-directed editors
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monads for incremental computing
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Optimal-time incremental semantic analysis for syntax-directed editors
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fully Persistent Arrays (Extended Array)
WADS '89 Proceedings of the Workshop on Algorithms and Data Structures
Dynamic Programming
A judgmental reconstruction of modal logic
Mathematical Structures in Computer Science
Dynamizing static algorithms, with applications to dynamic trees and history independence
SODA '04 Proceedings of the fifteenth annual ACM-SIAM symposium on Discrete algorithms
Self-adjusting computation
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
A cost semantics for self-adjusting computation
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An experimental analysis of self-adjusting computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying event-driven programs using ramified frame properties
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Traceable data types for self-adjusting computation
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Incremental query evaluation in a ring of databases
Proceedings of the twenty-ninth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Memoization of methods using software transactional memory to track internal state dependencies
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Frenetic: a high-level language for OpenFlow networks
Proceedings of the Workshop on Programmable Routers for Extensible Services of Tomorrow
Implicit self-adjusting computation for purely functional programs
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Frenetic: a network programming language
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Incremental updates for efficient bidirectional transformations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Incoop: MapReduce for incremental computations
Proceedings of the 2nd ACM Symposium on Cloud Computing
Adaptive Exact Inference in Graphical Models
The Journal of Machine Learning Research
Type-directed automatic incrementalization
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Non-monotonic self-adjusting computation
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
A core calculus for provenance
POST'12 Proceedings of the First international conference on Principles of Security and Trust
From clarity to efficiency for distributed algorithms
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Pruning with improving sequences in lazy functional programs
Higher-Order and Symbolic Computation
Streaming big data with self-adjusting computation
DDFP '13 Proceedings of the 2013 workshop on Data driven functional programming
Reactive behavior in object-oriented applications: an analysis and a research roadmap
Proceedings of the 12th annual international conference on Aspect-oriented software development
Higher-Order reactive programming with incremental lists
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Pervasive parallelism in highly-trustable interactive theorem proving systems
CICM'13 Proceedings of the 2013 international conference on Intelligent Computer Mathematics
A core calculus for provenance
Journal of Computer Security - Security and Trust Principles
Hi-index | 0.00 |
We present techniques for incremental computing by introducing adaptive functional programming. As an adaptive program executes, the underlying system represents the data and control dependences in the execution in the form of a dynamic dependence graph. When the input to the program changes, a change propagation algorithm updates the output and the dynamic dependence graph by propagating changes through the graph and re-executing code where necessary. Adaptive programs adapt their output to any change in the input, small or large.We show that adaptivity techniques are practical by giving an efficient implementation as a small ML library. The library consists of three operations for making a program adaptive, plus two operations for making changes to the input and adapting the output to these changes. We give a general bound on the time it takes to adapt the output, and based on this, show that an adaptive Quicksort adapts its output in logarithmic time when its input is extended by one key.To show the safety and correctness of the mechanism we give a formal definition of AFL, a call-by-value functional language extended with adaptivity primitives. The modal type system of AFL enforces correct usage of the adaptivity mechanism, which can only be checked at run time in the ML library. Based on the AFL dynamic semantics, we formalize thechange-propagation algorithm and prove its correctness.