Fully Abstract from Static to Gradual


Koen Jacobs, Amin Timany, and Dominique Devriese: Fully Abstract from Static to Gradual. In POPL 2021, January 2021. https://doi.org/10.1145/3434288
Journal Paper
Keywords: gradual typing, fully abstract compilation, fully abstract embedding
Abstract.

What is a good gradual language? Siek et al. have previously proposed the refined criteria, a set of formal ideas that characterize a range of guarantees typically expected from a gradual language. While these go a long way, they are mostly focused on syntactic and type safety properties and fail to characterize how richer semantic properties and reasoning principles that hold in the static language, like non-interference or parametricity for instance, should be upheld in the gradualisation.

In this paper, we investigate and argue for a new criterion previously hinted at by Devriese et al.: the embedding of the static to the gradual language should be fully abstract. Rather than preserving an arbitrarily chosen interpretation of source language types, this criterion requires that all source language equivalences should be preserved. We demonstrate that the criterion weeds out erroneous gradualisations that nevertheless satisfy the refined criteria. At the same time, we demonstrate that the criterion is realistic by reporting on a mechanized proof that the property holds for a standard example: $\operatorname{GTLC}_\mu$, the natural gradualisation of $\operatorname{STLC}_\mu$. We argue thus that the criterion is useful for understanding, evaluating, and guiding the design of gradual languages, particularly those which are intended to preserve source language guarantees in a rich way.

The bibtex source for this publication:
@article{DBLP:journals/pacmpl/JacobsTD21,
  author    = {Koen Jacobs and Amin Timany and Dominique Devriese},
  title     = {Fully abstract from static to gradual},
  journal   = {Proc. {ACM} Program. Lang.},
  volume    = {5},
  number    = {{POPL}},
  pages     = {1--30},
  year      = {2021},
  url       = {https://doi.org/10.1145/3434288},
  doi       = {10.1145/3434288},
  timestamp = {Wed, 17 Feb 2021 08:53:58 +0100},
  biburl    = {https://dblp.org/rec/journals/pacmpl/JacobsTD21.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}