Improving Haskell types with SMT

@inproceedings{Diatchki2015ImprovingHT,
  title={Improving Haskell types with SMT},
  author={Iavor S. Diatchki},
  booktitle={Haskell},
  year={2015}
}
We present a technique for integrating GHC's type-checker with an SMT solver. The technique was developed to add support for reasoning about type-level functions on natural numbers, and so our implementation uses the theory of linear arithmetic. However, the approach is not limited to this theory, and makes it possible to experiment with other external decision procedures, such as reasoning about type-level booleans, bit-vectors, or any other theory supported by SMT solvers.