An inherently iterative computation of Ackermann's functions (Note)
Theoretical Computer Science
Program derivation by fixed point computation
Science of Computer Programming
Introduction to algorithms
Efficient type inference for higher-order binding-time analysis
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
More efficient bottom-up multi-pattern matching in trees
CAAP '90 Selected papers of the conference on Fifteenth colloquium on trees in algebra and programming
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
Rules and strategies for transforming functional and logic programs
ACM Computing Surveys (CSUR)
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An introduction to partial evaluation
ACM Computing Surveys (CSUR)
A bounds inference method for vector-based memoization
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Static caching for incremental computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Tabulation Techniques for Recursive Programs
ACM Computing Surveys (CSUR)
A fast algorithm for finding dominators in a flowgraph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Efficiency by Incrementalization: An Introduction
Higher-Order and Symbolic Computation
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
Strengthening invariants for efficient computation
Science of Computer Programming
Automatic Accurate Cost-Bound Analysis for High-Level Languages
IEEE Transactions on Computers
Dynamic Programming via Static Incrementalization
Higher-Order and Symbolic Computation
A powerful strategy for deriving efficient programs by transformation
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Optimizing the stack size of recursive functions
Computer Languages, Systems and Structures
Approximate shortest paths in simple polyhedra
DGCI'11 Proceedings of the 16th IAPR international conference on Discrete geometry for computer imagery
Hi-index | 0.00 |
This paper describes a formal derivation of an optimized Ackermann's function following a general and systematic method based on incrementalization. The method identifies an appropriate input increment operation and computes the function by repeatedly performing an incremental computation at the step of the increment. This eliminates repeated subcomputations in executions that follow the straightforward recursive definition of Ackermann's function, yielding an optimized program that is drastically faster and takes extremely little space. This case study uniquely shows the power and limitation of the incrementalization method, as well as both the iterative and recursive nature of computation underlying the optimized Ackermann's function.