Abstract
We show how to apply forward and reverse mode Combinatory Homomorphic Automatic Differentiation (CHAD) (Vákár (2021). ESOP, 607–634; Vákár and Smeding (2022). ACM Transactions on Programming Languages and Systems 44 (3) 20:1–20:49.) to total functional programming languages with expressive type systems featuring the combination of
• tuple types;
• sum types;
• inductive types;
• coinductive types;
• function types.
We achieve this by analyzing the categorical semantics of such types in Σ-types (Grothendieck constructions) of suitable categories. Using a novel categorical logical relations technique for such expressive type systems, we give a correctness proof of CHAD in this setting by showing that it computes the usual mathematical derivative of the function that the original program implements. The result is a principled, purely functional and provably correct method for performing forward- and reverse-mode automatic differentiation (AD) on total functional programming languages with expressive type systems.
• tuple types;
• sum types;
• inductive types;
• coinductive types;
• function types.
We achieve this by analyzing the categorical semantics of such types in Σ-types (Grothendieck constructions) of suitable categories. Using a novel categorical logical relations technique for such expressive type systems, we give a correctness proof of CHAD in this setting by showing that it computes the usual mathematical derivative of the function that the original program implements. The result is a principled, purely functional and provably correct method for performing forward- and reverse-mode automatic differentiation (AD) on total functional programming languages with expressive type systems.
Original language | English |
---|---|
Article number | PII S096012952300018X |
Pages (from-to) | 311–426 |
Number of pages | 116 |
Journal | Mathematical Structures in Computer Science |
Volume | 33 |
Issue number | 4-5 |
DOIs | |
Publication status | Published - Apr 2023 |
Keywords
- (Co)monadicity
- Artin gluing
- Automatic differentiation
- Cartesian closed categories
- Coalgebras
- Coinductive types
- Comma categories
- Creation of initial algebras
- Denotational semantics
- Dependently typed languages
- Exponentiability
- Extensive categories
- Extensive indexed categories
- Fibered categories
- Free cocompletion under coproducts
- Grothendieck construction
- Inductive types
- Initial algebra semantics
- Linear types
- Logical relations
- Polynomial functors
- Program transformations
- Programming languages
- Scientific computing
- Software correctness
- Type systems
- Variant types