chloe3: add a simple test case with a tau loop

git-svn-id: http://svn.gna.org/svn/service-tech/trunk@9750 28a3e6ef-b453-474d-ad7c-55ccb5279adc
chloe3: fix definition of U_node_ and empty_node_

Actually use the class variables and don't re-declare them
in the constructor.
This will get important when we use them outside of the constructor.

Additionally some debugging code is improved.

git-svn-id: http://svn.gna.org/svn/service-tech/trunk@9751 28a3e6ef-b453-474d-ad7c-55ccb5279adc
chloe3: use assert() and E_INTERNAL

assert() is used to check pointer arguments for NULL
where references can't be used and other code
should make sure that no NULL can be handed over.

E_INTERNAL is used as an abort code that should not happen,
meaning they are programming, not user errors.

git-svn-id: http://svn.gna.org/svn/service-tech/trunk@9752 28a3e6ef-b453-474d-ad7c-55ccb5279adc
chloe3: recursively remove state breaking CSD criteria

We check the criteria after all successors for a state are known.
If a state is removed, then the parents of that state are also
recursively checked and possibly removed.

We don't actually remove the states, since we use the address as
some form of id and don't want this id to get re-used.
They are moved from the general states_ list to a deleted_states_ list.

Removing these from states_ also removes the duplicate detection
for these states, so they might get re-created. (TODO)

A simple test case is added where a BSD of 12 nodes would be created,
and with our CSD check we only keep 4 states.
(having the option to also output the BSD is TODO)

git-svn-id: http://svn.gna.org/svn/service-tech/trunk@9753 28a3e6ef-b453-474d-ad7c-55ccb5279adc
chloe3: detect duplicates of deleted states

Another reason why we can't just delete states completely:
we need the complete markings of a state to find duplicates.

This way we might create a state twice, but we won't
check the successors twice.
The db.owfn examples goes from 32 deleted states to just 8 deleted
states. In both cases the result had only 4 CSD states.

Note that (at least in that example) we are not faster
than creating the complete BSD and making the CSD reduction afterwards.

git-svn-id: http://svn.gna.org/svn/service-tech/trunk@9754 28a3e6ef-b453-474d-ad7c-55ccb5279adc