English

Reverse AD at Higher Types: Pure, Principled and Denotationally Correct

Programming Languages 2021-01-25 v2

Abstract

We show how to define forward- and reverse-mode automatic differentiation source-code transformations or on a standard higher-order functional language. The transformations generate purely functional code, and they are principled in the sense that their definition arises from a categorical universal property. We give a semantic proof of correctness of the transformations. In their most elegant formulation, the transformations generate code with linear types. However, we demonstrate how the transformations can be implemented in a standard functional language without sacrificing correctness. To do so, we make use of abstract data types to represent the required linear types, e.g. through the use of a basic module system.

Keywords

Cite

@article{arxiv.2007.05283,
  title  = {Reverse AD at Higher Types: Pure, Principled and Denotationally Correct},
  author = {Matthijs Vákár},
  journal= {arXiv preprint arXiv:2007.05283},
  year   = {2021}
}
R2 v1 2026-06-23T17:00:49.353Z