# refined

[![Build Status](https://travis-ci.org/nikita-volkov/refined.svg?branch=master)](https://travis-ci.org/nikita-volkov/refined)

In type theory, a refinement type is a type endowed
with a predicate which is assumed to hold for any element
of the refined type.

This library allows one to capture the idea of a refinement type
using the `Refined` type. A `Refined` `p` `x` wraps a value
of type `x`, ensuring that it satisfies a type-level predicate `p`.

A simple introduction to this library can be found here: http://nikita-volkov.github.io/refined/
