exercise 5.2
Squashed commit of the following:

commit 46f7d7e10f5353473a7fc070eb68030aadaccd60
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 14 15:48:04 2014 +0100

    exercise 5.2

commit 878da1f904563bf929b06108e0e3f6407b7eb2b1
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 14 15:43:29 2014 +0100

    put config in extra file

commit 1b295aa7e4a082b0890705b0932e865147e6ba26
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 14 10:05:14 2014 +0100

    Worklist solver: we shouldn't add constraints that are already in the list

commit ad13c08bd3b0dde840b3a2b37be8a2698fdaf74b
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 13 11:16:02 2014 +0100

    `make pack` only archives tracked or staged files (i.e. no .git/, _build/ etc.)

commit 69a75e50b095940356464f83d626d12f56a15f42
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 13 10:54:00 2014 +0100

    support Nop-stmt, for-loop init is a stmt, tests for Nop-loops
    TODO for(;;) {} doesn't parse

commit 9c4c465374f4d42c108ec4a242f091844d2653bc
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 13 10:53:06 2014 +0100

    visited set for SkipElim (needed for loops consisting solely of Skip-edges)

commit 4bb10e43c4a46207ce38f34dd482071a27a9fe93
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Thu Nov 13 10:27:40 2014 +0100

    script for showing cfg: `./main.native cfg file.c | ./cfg.sh`

commit 8e22ee8fdf4f2abe7923ca97438880542b77d80a
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 12 15:58:35 2014 +0100

    use ppx_deriving show

commit f1bec9b7836b2abe2772ebf36e86e7cc7cd40deb
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 12 14:53:41 2014 +0100

    elimination of Skip-edges

commit 567aca62096321848b5a33d66eb58843e1f415cc
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 12 14:07:25 2014 +0100

    worklist solver

commit 0c0248f840dd716c7dbf99834e3cf79c3c928d87
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 12 12:22:16 2014 +0100

    fix dfs for CFG with back edges

commit 643b7224c9c431e9723da55c87b8161f71c01d67
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Wed Nov 12 11:10:19 2014 +0100

    extend lexer/parser, test for while loop

commit 9e1987e40471c0ad2ca81916fd37df84f43eb9d1
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Tue Nov 11 18:44:34 2014 +0100

    setup-dev

commit e41e42824b0b4fab8f28cb1f1dfd72171e5b1372
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Tue Nov 11 11:23:19 2014 +0100

    use Config.solver to switch between different solvers

commit 207b2fe00bd6fc456178e986330ee4f9d1eb4652
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 7 18:44:50 2014 +0100

    can't include polymorphic Set in domain b/c type t has different arity
    alternative would be to keep a 'parent' module or list all needed functions

commit 161b18f65f2fd8b2fada3b5dc48cccdc6923f068
Author: Ralf Vogler <ralf.vogler@gmail.com>
Date:   Fri Nov 7 17:17:10 2014 +0100

    Revert "delete solution for 4.1"

    This reverts commit 35f8845946df9ea3148b7af5148178065601b425.