:- use_module(library(cuda)). :- use_module(library(lists)). :- initialization(main). main :- Rule = ( db(Y, Z), db(X, Z), db(1, Z), X = Y ), setof(a(X,Y), Z^Rule, L0), reverse(L0, RL0), writeln(RL0), cuda_rule((a(X, Y) :- Rule ), Q), cuda_eval(Q, L), cuda_erase( Q ), writeln(L). main2 :- Rule = ( db(Y, Z), db(X, Z), db(1, Z), X \= Y ), setof(a(X,Y), Z^Rule, L0), reverse(L0, RL0), writeln(RL0), cuda_rule((a(X, Y) :- Rule ), Q), cuda_eval(Q, L), cuda_erase( Q ), writeln(L). db(1,a). db(2,a). db(5,b). db(4,q). db(6,w). db(10,s). /* db(11,a). db(12,a). db(15,b). db(14,q). db(16,w). db(110,s). db(21,a). db(22,a). db(25,b). db(24,q). db(26,w). db(210,s). */ :- cuda_extensional(db/2, _X).