Automatic differentiation for ML-family languages: Correctness via logical relations
Publication date
2024
Editors
Advisors
Supervisors
Document Type
Article
Metadata
Show full item recordCollections
License
cc_by
Abstract
We give a simple, direct, and reusable logical relations technique for languages with term and type recursion and partially defined differentiable functions. We demonstrate it by working out the case of automatic differentiation (AD) correctness: namely, we present a correctness proof of a dual numbers style AD code transformation for realistic functional languages in the ML-family. We also show how this code transformation provides us with correct forward- and reverse-mode AD. The starting point is to interpret a functional programming language as a suitable freely generated categorical structure. In this setting, by the universal property of the syntactic categorical structure, the dual numbers AD code transformation and the basic ωCpo-semantics arise as structure preserving functors. The proof follows, then, by a novel logical relations argument. The key to much of our contribution is a powerful monadic logical relations technique for term recursion and recursive types. It provides us with a semantic correctness proof based on a simple approach for denotational semantics, making use only of the very basic concrete model of ω-cpos.
Keywords
Differentiable programming languages, Logical relations, Program transformations, Programming language semantics, Recursive types, Software correctness, Mathematics (miscellaneous), Computer Science Applications
Citation
Lucatelli Nunes, F & Vákár, M 2024, 'Automatic differentiation for ML-family languages : Correctness via logical relations', Mathematical Structures in Computer Science, vol. 34, no. 8, pp. 747-806. https://doi.org/10.1017/S0960129524000215