Programming Languages

Incremental λ-Calculus in Cache-Transfer Style, Static Memoization by Program Transformation

by Paolo G. Giarusso, Yann Régis-Gianas, and Philipp Schuster

In Proc. Europ. Symposium on Programming (ESOP). Springer-Verlag, 2019.


Incremental computation requires propagating changes and reusing intermediate results of base computations. Derivatives, as produced by static differentiation, propagate changes but do not reuse intermediate results, leading to wasteful recomputation. As a solution, we introduce conversion to Cache-Transfer-Style, an additional program transformations producing purely incremental functional programs that create and maintain nested tuples of intermediate results. To prove CTS conversion correct, we extend the correctness proof of static differentiation from STLC to untyped λ-calculus via step-indexed logical relations, and prove sound the additional transformation via simulation theorems. To show ILC-based languages can improve performance relative to from-scratch recomputation, and that CTS conversion can extend its applicability, we perform an initial performance case study. We provide derivatives of primitives for operations on collections and incrementalize selected example programs using those primitives, confirming expected asymptotic speedups.


Presentation at ESOP 2019

Former member Paolo Giarusso presents the paper Incremental λ-Calculus in Cache-Transfer Style at the European Symposium on Programming (ESOP) 2019 in Prague, Czech Rebuplic.

Read more ...