Just saw the first (fixable) bug, see below
I wrote:
> ....
>
>boolean implies(Node n1, Node n2, List history1, List history2, Set knownNotImplying, Set conditionalImplications) {
>.....
> for every other statement (n2, p, o2) or (o2, p, n2) in p2 check if there is a statement (n1, p, o1) respectively (o1, p, n1) in p1 with the same predicate and for which implies(o1, o2, history1.clone(),history2.clone(), knownNotImplying, conditionalImplications) is true, otherwise add {n1, n2} to knownNotImpying an return false;
> conditionalImplications.add({n1, n2}) and return true;
>
>
The recursive call to implies(...) may add elements to
conditionalImplications which should be removed when the mehod return
false, so before every "return false" the conditionalImplications-set
should be reset to the same values as when the method was invoked.
probably not the last bug....
reto