Declarative and Algorithmic Implementation of Refinement Types

More Info
expand_more

Abstract

Type systems and their accompanying checkers provide support for the programmer to write better and safer code, faster, with less effort and with less errors. There are however properties that can not be checked at compile time yet. Refinement types are potentially the solution. They can prove properties of the behaviour of code without actually running and therefore avoid costly bugs in software. This is done by decorating types with predicates that tell something about the value of that type. This paper discusses an implementation of a refinement type system for a functional language.