Parametricity for Nested Types and GADTs

01/13/2021
by   Patricia Johann, et al.
0

This paper considers parametricity and its consequent free theorems for nested data types. Rather than representing nested types via their Church encodings in a higher-kinded or dependently typed extension of System F, we adopt a functional programming perspective and design a Hindley-Milner-style calculus with primitives for constructing nested types directly as fixpoints. Our calculus can express all nested types appearing in the literature, including truly nested types. At the level of terms, it supports primitive pattern matching, map functions, and fold combinators for nested types. Our main contribution is the construction of a parametric model for our calculus. This is both delicate and challenging. In particular, to ensure the existence of semantic fixpoints interpreting nested types, and thus to establish a suitable Identity Extension Lemma for our calculus, our type system must explicitly track functoriality of types, and cocontinuity conditions on the functors interpreting them must be appropriately threaded throughout the model construction. We also prove that our model satisfies an appropriate Abstraction Theorem, as well as that it verifies all standard consequences of parametricity in the presence of primitive nested types. We give several concrete examples illustrating how our model can be used to derive useful free theorems, including a short cut fusion transformation, for programs over nested types. Finally, we consider generalizing our results to GADTs, and argue that no extension of our parametric model for nested types can give a functorial interpretation of GADTs in terms of left Kan extensions and still be parametric.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/17/2021

(Deep) Induction Rules for GADTs

Deep data types are those that are defined in terms of other such data t...
research
03/28/2021

Subtyping on Nested Polymorphic Session Types

The importance of subtyping to enable a wider range of well-typed progra...
research
07/12/2018

Gradual Parametricity, Revisited

Bringing the benefits of gradual typing to a language with parametric po...
research
07/12/2018

Gradual Parametricity, Revisited (with Appendix)

Bringing the benefits of gradual typing to a language with parametric po...
research
06/16/2023

Towards an induction principle for nested data types

A well-known problem in the theory of dependent types is how to handle s...
research
10/23/2019

Nested Conformal Prediction and the Generalized Jackknife+

We provide an alternate unified framework for conformal prediction, whic...
research
02/07/2018

Additive Decompositions in Primitive Extensions

This paper extends the classical Ostrogradsky-Hermite reduction for rati...

Please sign up or login with your details

Forgot password? Click here to reset