:-module(nreverse_on_co,[],[]). '$applied_packages'([prelude,nonpure,condcomp,assertions,regtypes,nativeprops,rtchecks_shallow,predefres(res_steps),resdefs,resdefs/resources_decl,basicmodes,argnames,expander]). :-add_clause_trans(expander_tr:expand_clause/4,9910). :-pred nreverse(Xs,Ys):list*term=>list*list. :-pred appendlast(Xs,Y,Zs):list*term*var=>list*term*list. nreverse(_1,_2) :- 'nreverse$pre'(_1,_2,_3), 'nreverse$cls'(_1,_2), 'nreverse$post'(_1,_2,_3). 'nreverse$pre'(_1,_2,_5) :- reify_check(list(_1),[_1],_3), reify_check(term(_2),[_2],_4), _6 is _3/\_4, _5 is _6, _7 is _5, warn_if_false(_7,'CP'). 'nreverse$post'(_1,_2,_5) :- reify_check(list(_1),[_1],_3), reify_check(list(_2),[_2],_4), _6 is _3/\_4, _7 is _5#1\/_6, _8 is _7, warn_if_false(_8,'AP'). 'nreverse$cls'([],[]). 'nreverse$cls'([X|Xs],Ys) :- nreverse(Xs,Ys0), appendlast(Ys0,X,Ys). appendlast(_1,_2,_3) :- 'appendlast$pre'(_1,_2,_3,_4), 'appendlast$cls'(_1,_2,_3), 'appendlast$post'(_1,_2,_3,_4). 'appendlast$pre'(_1,_2,_3,_7) :- reify_check(list(_1),[_1],_5), reify_check(term(_2),[_2],_6), reify_check(var(_3),[_3],_4), _8 is _4/\(_5/\_6), _7 is _8, _9 is _7, warn_if_false(_9,'CP'). 'appendlast$post'(_1,_3,_2,_7) :- reify_check(list(_1),[_1],_5), reify_check(list(_2),[_2],_4), reify_check(term(_3),[_3],_6), _8 is _4/\(_5/\_6), _9 is _7#1\/_8, _10 is _9, warn_if_false(_10,'AP'). 'appendlast$cls'([],X,[X]). 'appendlast$cls'([E|Y],X,[E|T]) :- appendlast(Y,X,T).