%% predicates % app(L1,L2,L3) -- concatenate list L2 to L1 to form L3 % part(N,L1,L2,L3) -- split list L1 into L2 and L3m, L2 being the part of % L1 whose elements are smaller than N, L2 being the rest % qsort(L1,L2) -- sort L1 in ascending order !- set(rlggsample,4). !- mode(part(+,+,-,-)). !- mode(app(+,+,-)). !- mode(qsort(+,-)). nat(0). nat(1). nat(2). part(0,[],[],[]). part(1,[],[],[]). part(2,[],[],[]). part(0,[1],[],[1]). part(1,[0],[0],[]). part(0,[2],[],[2]). part(2,[0],[0],[]). part(1,[2],[],[2]). part(2,[1],[1],[]). part(0,[2,1],[],[2,1]). part(0,[1,2],[],[1,2]). part(1,[0,2],[0],[2]). part(1,[2,0],[0],[2]). part(2,[0,1],[0,1],[]). part(2,[1,0],[1,0],[]). app([],[],[]). app([],[0],[0]). app([],[1],[1]). app([],[2],[2]). app([0],[],[0]). app([1],[],[1]). app([2],[],[2]). app([],[0,1],[0,1]). app([],[1,0],[1,0]). app([],[0,2],[0,2]). app([],[2,0],[2,0]). app([],[1,2],[1,2]). app([],[2,1],[2,1]). app([0],[1],[0,1]). app([1],[0],[1,0]). app([0],[2],[0,2]). app([2],[0],[2,0]). app([1],[2],[1,2]). app([2],[1],[2,1]). app([0,1],[],[0,1]). app([1,0],[],[1,0]). app([0,2],[],[0,2]). app([2,0],[],[2,0]). app([1,2],[],[1,2]). app([2,1],[],[2,1]). app([],[0,1,2],[0,1,2]). app([],[0,2,1],[0,2,1]). app([],[1,0,2],[1,0,2]). app([],[1,2,0],[1,2,0]). app([],[2,0,1],[2,0,1]). app([],[2,1,0],[2,1,0]). app([0],[1,2],[0,1,2]). app([0],[2,1],[0,2,1]). app([1],[0,2],[1,0,2]). app([1],[2,0],[1,2,0]). app([2],[0,1],[2,0,1]). app([2],[1,0],[2,1,0]). app([0,1],[2],[0,1,2]). app([0,2],[1],[0,2,1]). app([1,0],[2],[1,0,2]). app([1,2],[0],[1,2,0]). app([2,0],[1],[2,0,1]). app([2,1],[0],[2,1,0]). app([0,1,2],[],[0,1,2]). app([0,2,1],[],[0,2,1]). app([1,0,2],[],[1,0,2]). app([1,2,0],[],[1,2,0]). app([2,0,1],[],[2,0,1]). app([2,1,0],[],[2,1,0]). qsort([],[]). qsort([0],[0]). qsort([1],[1]). qsort([2],[2]). qsort([0,1],[0,1]). qsort([1,0],[0,1]). qsort([0,2],[0,2]). qsort([2,0],[0,2]). qsort([1,2],[1,2]). qsort([2,1],[1,2]). qsort([0,1,2],[0,1,2]). qsort([0,2,1],[0,1,2]). qsort([1,0,2],[0,1,2]). qsort([1,2,0],[0,1,2]). qsort([2,0,1],[0,1,2]). qsort([2,1,0],[0,1,2]).