%% predicates % nat(N) -- N is a natural number % app(L1,L2,L3) -- concatenate list L2 to L1 to form L3 % rev(L1,L2) -- reverse the order of elements of list L1 to form L2 !- set(rlggsample,4). !- mode(rev(+,-)). !- mode(app(+,+,-)). rev([],[]). rev([1],[1]). rev([2],[2]). rev([3],[3]). rev([4],[4]). rev([1,2],[2,1]). rev([1,3],[3,1]). rev([1,4],[4,1]). rev([2,2],[2,2]). rev([2,3],[3,2]). rev([2,4],[4,2]). rev([0,1,2],[2,1,0]). rev([1,2,3],[3,2,1]). app([],[],[]). app([1],[],[1]). app([2],[],[2]). app([3],[],[3]). app([4],[],[4]). app([],[1],[1]). app([],[2],[2]). app([],[3],[3]). app([],[4],[4]). app([1],[0],[1,0]). app([2],[1],[2,1]). app([2],[1],[2,1]). app([3],[1],[3,1]). app([4],[1],[4,1]). app([2],[2],[2,2]). app([3],[2],[3,2]). app([4],[2],[4,2]). app([2,1],[0],[2,1,0]). app([3,2],[1],[3,2,1]). app([2,3],[1],[2,3,1]). nat(0). nat(1). nat(2). nat(3). nat(4). nat(5). nat(6). nat(7). nat(8). nat(9).