Type systems allow programmers to express certain properties about correct behavior of programs. These properties can be verified by a static type checking compiler guaranteeing type safety and thus catching many programming errors early in the development cycle.
Refinement types are an approach for expressing more detailed properties of types using logical predicates. We will introduce Liquid Haskell which is a static refinement type checker capable of veryfing refinement type safety. We will examine the possibilites this approach opens for increasing development productivity.