Add the domain coverage iterator.

Given a set of variables, for example:

    @requires a: 'one'   or 'two'
          and b: 'three' or 'four'  or 'five'
          and c: 'six'   or 'seven' or 'eight';

We are able to iterator over all domains combinations, like this:

    $iterator = new Hoa\Praspel\Iterator\Coverage\Domain(
        $model->getClause('requires')->getLocalVariabes()
    );

    foreach($iterator as $variables) {

        foreach($variables as $name => $variable)
            printf('%s: %-8s', $name, $variable->getConstantValue());

        echo "\n";
    }

It will output:

    a: one     b: three   c: six
    a: two     b: three   c: six
    a: one     b: four    c: six
    a: two     b: four    c: six
    a: one     b: five    c: six
    a: two     b: five    c: six
    a: one     b: three   c: seven
    a: two     b: three   c: seven
    a: one     b: four    c: seven
    a: two     b: four    c: seven
    a: one     b: five    c: seven
    a: two     b: five    c: seven
    a: one     b: three   c: eight
    a: two     b: three   c: eight
    a: one     b: four    c: eight
    a: two     b: four    c: eight
    a: one     b: five    c: eight
    a: two     b: five    c: eight
[auto] Merge from Praspel

    • #5014dac — Add the domain coverage iterator. (Ivan Enderlin, 2013-04-30)

---

Merge remote branch 'library-praspel/master'