Hello Jingyue,
I've changed the c-interface now to use the SimplifyingNode factory by
default. It was the final place that was using the HashingNode factory
by default. The HashingNode factory only checks if the node has
already been created (structural hashing/ perfect sharing). The
simplifying node factory applies simple rewrites too. This means that
if you use STP revision 1381 or later to create a node via the c-
interface like (5=6), the node you receive back will be FALSE instead
of an equality node.
I haven't wanted to use the simplifying node factory in the c-
interface because it is even more confusing --- you don't get the node
back that you expect. The type will always be the same, but the number
of parameters may differ. For instance, asking for ITE(a,b,b) will
return the 'b' node now. But the bug you reported makes me think that
there are lots more cases where mixing the node factories will cause
problems. Most of the testing of STP we do is just with the
simplifyingnode factory.
I hope this doesn't break the interface between people's tools and
STP.
Thanks for the patch. I've applied it in revision 1382.
Trev.