Purely functional lazy non-deterministic programming
finite automata and their decision problems .