@MASTERSTHESIS{skalka-ms-thesis, AUTHOR = {Christian Skalka}, TITLE = {Some Decision Problems for {ML} Refinement Types}, SCHOOL = {Carnegie Mellon University}, YEAR = 1997, PS = {http://www.cs.uvm.edu/~skalka/skalka-pubs/skalka-ms-thesis.ps}, ABSTRACT = {The ML \texttt{datasort} declaration is an extension to Standard ML allowing the declaration of \emph{refinement} types, which correspond to subsets of pre-existing ML datatypes. Refinement types provide the programmer with a more precise method of expressing data structure, can prevent the occurence of certain run -time exceptions, and assist in the expression and maintenance of some representation invariants. ML refinement types correspond to regular term and regular tree languages, except that refinement types are polymorphic. While algorithms have been defined which determine the emptiness, intersection and subset problems for regular terms, the corresponding problems for polymorphic regular terms have not been studied. This thesis formally describes a refinement type language, and defines algorithms relevant to these decision problems, which are proven correct. Along with theoretical interest, these algorithms have practical applications for refinement type checking.} }