Creative Commons Attribution 4.0 International license
aa4c6b98c4c7b17c67c9369ae9e3aff7
(Get MD5 Sum)
mist is a tiny language for teaching and experimenting with refinement types, in the style of https://github.com/ucsd-progsys/liquidhaskell. We use it as a platform for experimenting with and as a demonstration of implicit refinement types as presented in the ECOOP21 paper Refinements of Futures Past: Higher-Order Specification with Implicit Refinement Types. We start with the parser and AST we use to teach our undergradute compilers class, and layer upon it a refinement type checker directly translated from the typing rules presented in that paper, which produces constraints that are solved with the liquid-fixpoint horn clause solver. We present source code and binaries for mist in a container image that includes installations of the competing tools we compare to.
@Article{tondwalkar_et_al:DARTS.7.2.3,
author = {Tondwalkar, Anish and Kolosick, Matt and Jhala, Ranjit},
title = {{mist: Refinements of Futures Past (Artifact)}},
pages = {3:1--3:11},
journal = {Dagstuhl Artifacts Series},
ISSN = {2509-8195},
year = {2021},
volume = {7},
number = {2},
editor = {Tondwalkar, Anish and Kolosick, Matt and Jhala, Ranjit},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.7.2.3},
URN = {urn:nbn:de:0030-drops-140275},
doi = {10.4230/DARTS.7.2.3},
annote = {Keywords: Refinement Types, Implicit Parameters, Verification, Dependent Pairs}
}