Set Constraints, Pattern Match Analysis, and SMT
Abstract
Set constraints provide a highly general way to formulate program analyses. However, solving arbitrary boolean combinations of set constraints is NEXPTIME-hard. Moreover, while theoretical algorithms to solve arbitrary set constraints exist, they are either too complex to realistically implement or too slow to ever run. We present a translation that converts a set constraint formula into an SMT problem. Our technique allows for arbitrary boolean combinations of set constraints, and leverages the performance of modern SMT solvers. To show the usefulness of unrestricted set constraints, we use them to devise a pattern match analysis for functional languages, which ensures that missing cases of pattern matches are always unreachable. We implement our analysis in the Elm compiler and show that our translation is fast enough to be used in practical verification.
Cite
@article{arxiv.1905.09423,
title = {Set Constraints, Pattern Match Analysis, and SMT},
author = {Joseph Eremondi},
journal= {arXiv preprint arXiv:1905.09423},
year = {2020}
}
Comments
Accepted in Post-Conference Proceedings of TFP 2019. Recipient of the John McCarthy Best Paper award