Ciao Preprocessor (integrated Alpha version)
| This is an alpha distribution, meant only for testing. Please do let us
| know at ciaopp-bugclip.dia.fi.upm.es any problems you may have.
{Reading /tmp/tmp3_SbWB/pl8.2.1.pl
}
{loaded in 3340.209 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 60.003 msec.}
{written file /tmp/tmp3_SbWB/pl8.2.1_det_co.pl}
:- module(_1,[mergesort/2],[assertions]).
:- entry mergesort(A,B)
: ground(A).
:- true pred mergesort(A,B)
: ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
=> ( ground([A,B]), rt161(A), rt168(B) )
+ ( non_det, mut_exclusive ).
:- true pred mergesort(A,B)
: ( native_props:mshare([[B]]), var(B), ground([A]), rt20(A), term(B) )
=> ( ground([A,B]), rt89(A), rt90(B) )
+ ( is_det, mut_exclusive ).
:- true pred mergesort(A,B)
: ( native_props:mshare([[B]]), var(B), ground([A]), rt22(A), term(B) )
=> ( ground([A,B]), rt76(A), rt83(B) )
+ ( non_det, mut_exclusive ).
:- true pred mergesort(A,B)
: ( native_props:mshare([[B]]), var(B), ground([A]), rt20(A), term(B) )
=> ( ground([A,B]), rt26(A), rt27(B) )
+ ( is_det, mut_exclusive ).
mergesort([],[]).
mergesort([E],[E]).
mergesort([E,F|U],V) :-
split([E,F|U],W,Y),
mergesort(W,X),
mergesort(Y,Z),
merge(X,Z,V).
:- true pred merge(X,_1,_2)
: ( native_props:mshare([[_2]]), ground([X,_1]), rt91(X), rt97(_1), term(_2) )
=> ( ground([X,_1,_2]), rt148(X), rt142(_1), rt140(_2) )
+ ( non_det, not_mut_exclusive ).
:- true pred merge([_2|_3],_1,X)
: ( native_props:mshare([[X]]), ground([_1,_2,_3]), rt125(_1), term(X), rt56(_2), rt121(_3) )
=> ( ground([_1,X,_2,_3]), rt127(_1), rt126(X), rt56(_2), rt121(_3) )
+ ( is_det, mut_exclusive ).
:- true pred merge(X,[_2|_3],_1)
: ( native_props:mshare([[_1]]), ground([X,_2,_3]), rt100(X), term(_1), rt41(_2), rt104(_3) )
=> ( ground([X,_1,_2,_3]), rt132(X), rt117(_1), rt41(_2), rt136(_3) )
+ ( non_det, not_mut_exclusive ).
:- true pred merge(X,_1,_2)
: ( native_props:mshare([[_2]]), var(_2), ground([X,_1]), rt24(X), rt27(_1), term(_2) )
=> ( ground([X,_1,_2]), rt67(X), rt47(_1), rt45(_2) )
+ ( non_det, not_mut_exclusive ).
:- true pred merge([_2|_3],_1,X)
: ( native_props:mshare([[X]]), var(X), ground([_1,_2,_3]), rt49(_1), term(X), rt56(_2), rt48(_3) )
=> ( ground([_1,X,_2,_3]), rt61(_1), rt60(X), rt56(_2), rt48(_3) )
+ ( is_det, mut_exclusive ).
:- true pred merge(X,[_2|_3],_1)
: ( native_props:mshare([[_1]]), var(_1), ground([X,_2,_3]), rt28(X), term(_1), rt41(_2), rt29(_3) )
=> ( ground([X,_1,_2,_3]), rt44(X), rt43(_1), rt41(_2), rt29(_3) )
+ ( is_det, mut_exclusive ).
merge(X,[],X).
merge([],X,X).
merge([A|X],[B|Y],[A|Z]) :-
le(A,B),
merge(X,[B|Y],Z).
merge([A|X],[B|Y],[B|Z]) :-
gt(A,B),
merge([A|X],Y,Z).
:- true pred split([_2,_3|_4],_1,W)
: ( native_props:mshare([[_1],[W]]), var(_1), var(W), ground([_2,_3,_4]), term(_1), term(W), gnd(_2), gnd(_3), gnd(_4) )
=> ( ground([_1,W,_2,_3,_4]), rt22(_1), rt20(W), gnd(_2), gnd(_3), rt17(_4) )
+ ( is_det, mut_exclusive ).
:- true pred split(_1,_2,W)
: ( native_props:mshare([[_2],[W]]), var(_2), var(W), ground([_1]), rt6(_1), term(_2), term(W) )
=> ( ground([_1,_2,W]), rt21(_1), rt20(_2), rt15(W) )
+ ( is_det, mut_exclusive ).
:- true pred split(_1,_2,W)
: ( native_props:mshare([[_2],[W]]), var(_2), var(W), ground([_1]), rt7(_1), term(_2), term(W) )
=> ( ground([_1,_2,W]), rt17(_1), rt15(_2), rt19(W) )
+ ( is_det, mut_exclusive ).
split([],[],[]).
split([E|U],[E|V],W) :-
split(U,W,V).
:- true pred gt(_1,_2)
: ( ground([_1,_2]), gnd(_1), gnd(_2) )
=> ( ground([_1,_2]), rt56(_1), rt58(_2) )
+ ( is_det, mut_exclusive ).
gt(s(X),s(Y)) :-
gt(X,Y).
gt(s(X),0).
:- true pred le(_1,_2)
: ( ground([_1,_2]), gnd(_1), gnd(_2) )
=> ( ground([_1,_2]), rt39(_1), rt41(_2) )
+ ( is_det, mut_exclusive ).
le(s(X),s(Y)) :-
le(X,Y).
le(0,s(Y)).
le(0,0).
:- regtype rt167/1.
rt167(A) :-
gnd(A).
:- regtype rt166/1.
rt166(A) :-
gnd(A).
:- regtype rt165/1.
rt165(A) :-
gnd(A).
:- regtype rt164/1.
rt164([]).
rt164([A|B]) :-
rt165(A),
rt164(B).
:- regtype rt163/1.
rt163([]).
rt163([A|B]) :-
rt165(A),
rt164(B).
:- regtype rt162/1.
rt162([]).
rt162([A|B]) :-
rt166(A),
rt163(B).
:- regtype rt161/1.
rt161([]).
rt161([A|B]) :-
rt167(A),
rt162(B).
:- regtype rt173/1.
rt173(A) :-
gnd(A).
:- regtype rt172/1.
rt172(0).
rt172(A) :-
gnd(A).
rt172(s(A)) :-
rt42(A).
:- regtype rt171/1.
rt171(0).
rt171(s(A)) :-
rt172(A).
:- regtype rt170/1.
rt170([]).
rt170([A|B]) :-
rt41(A),
rt118(B).
:- regtype rt169/1.
rt169([]).
rt169([A|B]) :-
rt171(A),
rt170(B).
:- regtype rt168/1.
rt168([]).
rt168([A|B]) :-
rt173(A),
rt169(B).
:- regtype rt96/1.
rt96(A) :-
gnd(A).
:- regtype rt92/1.
rt92([]).
rt92([A|B]) :-
rt94(A),
rt93(B).
:- regtype rt91/1.
rt91([A|B]) :-
rt96(A),
rt92(B).
:- regtype rt99/1.
rt99(A) :-
gnd(A).
:- regtype rt98/1.
rt98([]).
:- regtype rt97/1.
rt97([A|B]) :-
rt99(A),
rt98(B).
:- regtype rt154/1.
rt154(0).
rt154(A) :-
gnd(A).
rt154(s(A)) :-
rt57(A).
:- regtype rt153/1.
rt153(0).
rt153(s(A)) :-
rt154(A).
:- regtype rt152/1.
rt152(0).
rt152(A) :-
gnd(A).
rt152(s(A)) :-
rt95(A).
:- regtype rt151/1.
rt151(0).
rt151(s(A)) :-
rt152(A).
:- regtype rt150/1.
rt150([]).
rt150([A|B]) :-
rt94(A),
rt93(B).
:- regtype rt149/1.
rt149([]).
rt149([A|B]) :-
rt151(A),
rt150(B).
:- regtype rt148/1.
rt148([A|B]) :-
rt153(A),
rt149(B).
:- regtype rt142/1.
rt142([A|B]) :-
rt41(A),
rt136(B).
:- regtype rt140/1.
rt140([A|B]) :-
rt39(A),
rt117(B).
:- regtype rt125/1.
rt125([]).
:- regtype rt56/1.
rt56(s(A)) :-
rt57(A).
:- regtype rt124/1.
rt124(0).
rt124(A) :-
gnd(A).
rt124(s(A)) :-
rt95(A).
:- regtype rt123/1.
rt123(0).
rt123(s(A)) :-
rt124(A).
:- regtype rt122/1.
rt122([]).
rt122([A|B]) :-
rt94(A),
rt93(B).
:- regtype rt121/1.
rt121([]).
rt121([A|B]) :-
rt123(A),
rt122(B).
:- regtype rt127/1.
rt127([]).
:- regtype rt126/1.
rt126([A|B]) :-
rt56(A),
rt121(B).
:- regtype rt59/1.
rt59(0).
rt59(s(A)) :-
rt59(A).
:- regtype rt58/1.
rt58(0).
rt58(s(A)) :-
rt59(A).
:- regtype rt103/1.
rt103(0).
rt103(A) :-
gnd(A).
rt103(s(A)) :-
rt95(A).
:- regtype rt102/1.
rt102(0).
rt102(s(A)) :-
rt103(A).
:- regtype rt95/1.
rt95(0).
rt95(A) :-
gnd(A).
rt95(s(A)) :-
rt95(A).
:- regtype rt94/1.
rt94(0).
rt94(s(A)) :-
rt95(A).
:- regtype rt93/1.
rt93([]).
rt93([A|B]) :-
rt94(A),
rt93(B).
:- regtype rt101/1.
rt101([]).
rt101([A|B]) :-
rt94(A),
rt93(B).
:- regtype rt100/1.
rt100([]).
rt100([A|B]) :-
rt102(A),
rt101(B).
:- regtype rt41/1.
rt41(0).
rt41(s(A)) :-
rt42(A).
:- regtype rt104/1.
rt104([]).
:- regtype rt57/1.
rt57(A) :-
gnd(A).
rt57(s(A)) :-
rt57(A).
:- regtype rt135/1.
rt135(0).
rt135(A) :-
gnd(A).
rt135(s(A)) :-
rt57(A).
:- regtype rt134/1.
rt134(0).
rt134(s(A)) :-
rt135(A).
:- regtype rt133/1.
rt133([]).
rt133([A|B]) :-
rt134(A),
rt133(B).
:- regtype rt132/1.
rt132([]).
rt132([A|B]) :-
rt134(A),
rt133(B).
:- regtype rt42/1.
rt42(0).
rt42(A) :-
gnd(A).
rt42(s(A)) :-
rt42(A).
:- regtype rt120/1.
rt120(0).
rt120(A) :-
gnd(A).
rt120(s(A)) :-
rt42(A).
:- regtype rt119/1.
rt119(0).
rt119(s(A)) :-
rt120(A).
:- regtype rt118/1.
rt118([]).
rt118([A|B]) :-
rt41(A),
rt118(B).
:- regtype rt117/1.
rt117([A|B]) :-
rt119(A),
rt118(B).
:- regtype rt136/1.
rt136([]).
:- regtype rt40/1.
rt40(0).
rt40(s(A)) :-
rt40(A).
:- regtype rt39/1.
rt39(0).
rt39(s(A)) :-
rt40(A).
:- regtype rt20/1.
rt20([A|B]) :-
gnd(A),
rt19(B).
:- regtype rt89/1.
rt89([A]) :-
gnd(A).
:- regtype rt90/1.
rt90([A]) :-
gnd(A).
:- regtype rt22/1.
rt22([A|B]) :-
gnd(A),
rt15(B).
:- regtype rt82/1.
rt82(A) :-
gnd(A).
:- regtype rt81/1.
rt81(A) :-
gnd(A).
:- regtype rt78/1.
rt78([]).
rt78([A|B]) :-
rt81(A),
rt78(B).
:- regtype rt77/1.
rt77([]).
rt77([A|B]) :-
rt81(A),
rt78(B).
:- regtype rt76/1.
rt76([A|B]) :-
rt82(A),
rt77(B).
:- regtype rt88/1.
rt88(A) :-
gnd(A).
:- regtype rt87/1.
rt87(0).
rt87(A) :-
gnd(A).
rt87(s(A)) :-
rt87(A).
:- regtype rt86/1.
rt86(0).
rt86(s(A)) :-
rt87(A).
:- regtype rt85/1.
rt85([]).
rt85([A|B]) :-
rt86(A),
rt85(B).
:- regtype rt84/1.
rt84([]).
rt84([A|B]) :-
rt86(A),
rt85(B).
:- regtype rt83/1.
rt83([A|B]) :-
rt88(A),
rt84(B).
:- regtype rt24/1.
rt24([A]) :-
gnd(A).
:- regtype rt27/1.
rt27([A]) :-
gnd(A).
:- regtype rt70/1.
rt70(0).
rt70(A) :-
gnd(A).
rt70(s(A)) :-
rt70(A).
:- regtype rt69/1.
rt69(0).
rt69(s(A)) :-
rt70(A).
:- regtype rt68/1.
rt68([]).
:- regtype rt67/1.
rt67([A|B]) :-
rt69(A),
rt68(B).
:- regtype rt47/1.
rt47([A|B]) :-
rt41(A),
rt29(B).
:- regtype rt45/1.
rt45([A|B]) :-
rt39(A),
rt43(B).
:- regtype rt49/1.
rt49([]).
:- regtype rt48/1.
rt48([]).
:- regtype rt61/1.
rt61([]).
:- regtype rt60/1.
rt60([A|B]) :-
rt56(A),
rt48(B).
:- regtype rt28/1.
rt28([]).
:- regtype rt29/1.
rt29([]).
:- regtype rt44/1.
rt44([]).
:- regtype rt43/1.
rt43([A|B]) :-
rt41(A),
rt29(B).
:- regtype rt26/1.
rt26([A]) :-
gnd(A).
:- regtype rt18/1.
rt18([]).
rt18([A|B]) :-
gnd(A),
rt18(B).
:- regtype rt17/1.
rt17([]).
rt17([A|B]) :-
gnd(A),
rt18(B).
:- regtype rt6/1.
rt6([A|B]) :-
gnd(A),
gnd(B).
:- regtype rt21/1.
rt21([A|B]) :-
gnd(A),
rt17(B).
:- regtype rt16/1.
rt16([]).
rt16([A|B]) :-
gnd(A),
rt16(B).
:- regtype rt15/1.
rt15([]).
rt15([A|B]) :-
gnd(A),
rt16(B).
:- regtype rt7/1.
rt7(A) :-
gnd(A).
:- regtype rt19/1.
rt19([]).