0

I am running a datalog rule with clingo in jupyter notebook against graph nodes checking for nodes that share the same direct ancestor as follows:

ancestor(A,B).
ancestor(A,C).
sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.

This gives me 2 simetric pairs namely

sibs(B,C) sibs(C,B)

How to I restrict the generation of sibs to only have either of these two results?

Paul
  • 813
  • 11
  • 27

1 Answers1

1

Managed to track down the issue. To ensure you do not return both results change this:

sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X!=Y.

to this:

sibs(X,Y) = ancestor(Z,X), ancestor(Z,Y), X<Y.

Paul
  • 813
  • 11
  • 27