:- table a/2. :- table b/2. tw1 :- generate(b(1,_)), generate(a(1,_)). generate(Call) :- call(Call), write(Call), nl, fail. generate(_). a(X,Y) :- b(X,Y). a(X,Y) :- q(X,Y). a(X,Y) :- a(X,Z), a(Z,Y). b(X,Y) :- p(X,Y). b(X,Y) :- b(X,Z), p(Z,Y). p(1,2). p(2,3). p(3,4). p(4,5). p(4,1). p(5,1). q(1,7). q(7,8). q(8,7). q(8,9). q(8,10). q(1,1).