Final project of the master's course "Theory of Programming and Types" at Utrecht University (winter 2014)