I describe what refinement types are, and how they can help us write better software, while showcasing a few concrete examples written in LiquidHaskell.
In the second part of the talk, I take a closer look at the theory behind refinement types.
At last, I show how to build your own programming language with refinement types, by making use of Inox, a powerful interface for SMT solvers.