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} }
aa4c6b98c4c7b17c67c9369ae9e3aff7
(Get MD5 Sum)
Feedback for Dagstuhl Publishing