.type Node <: symbol

.decl X (node1:Node)
.output X ()
.decl A (node1:Node)
.output A ()
.decl B (node1:Node)
.output B ()
.decl C (node1:Node)
.output C ()
.decl D (node1:Node)
.output D ()

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

A(x) :- X(x).
B(x) :- X(x), A(x).
C(x) :- X(x), A(x), B(x).
D(x) :- X(x), A(x), B(x), C(x).

A(x) :- X(x), A(x), B(x), C(x), D(x).
B(x) :- X(x), A(x), B(x), C(x), D(x).
C(x) :- X(x), A(x), B(x), C(x), D(x).
D(x) :- X(x), A(x), B(x), C(x), D(x).
