app([],Ys,Ys). app([A|Xs],Ys,[A|Zs]):- app(Xs,Ys,Zs). nrev([],[]). nrev([X|Xs],Zs):- nrev(Xs,Ys), app(Ys,[X],Zs). fnrev([],[]). fnrev([X|Xs],Zs):- fnrev(Xs,Ys), det_append(Ys,[X],Zs). full_range(It,L):- range(_,1,It),nrev(L,_),fail. full_range(_,_). dummy(_,_). empty_range(It,L):-range(_,1,It),dummy(L,_),fail. empty_range(_,_). range(Min,Min,Max):-Min=