.type Set <: symbol

.decl X(node1:Set, node2:Set)
.output X()
.decl Y(node1:Set, node2:Set)
.output Y()
.decl Z(node1:Set, node2:Set)
.output Z()

// Negation
Y(a,b) :- X(a,b).
Y(a,c) :- X(a,b), Y(b,c).

//// As X contains ("a","b")
//// generate empty set
Z(a,b) :- !X("a","b"), Y(a,b).

X("a","b").
X("b","c").
X("c","d").
