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/tmp0uVzsR/pl8.2.1a.pl
}
{loaded in 3416.214 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 48.004 msec.}
{written file /tmp/tmp0uVzsR/pl8.2.1a_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]), rt157(A), rt164(B) )
         + ( non_det, mut_exclusive ).

:- true pred mergesort([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), rt79(_1), rt17(_2) )
        => ( ground([B,_1,_2]), rt81(B), rt79(_1), rt80(_2) )
         + ( is_det, mut_exclusive ).

:- true pred mergesort([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), gnd(_1), rt15(_2) )
        => ( ground([B,_1,_2]), rt73(B), gnd(_1), rt70(_2) )
         + ( non_det, mut_exclusive ).

:- true pred mergesort([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), gnd(_1), rt17(_2) )
        => ( ground([B,_1,_2]), rt22(B), gnd(_1), rt21(_2) )
         + ( is_det, mut_exclusive ).

mergesort([],[]).
mergesort([E],[E]).
mergesort([E,F|U],V) :-
        split(U,L2,L1),
        mergesort([E|L2],X),
        mergesort([F|L1],Z),
        merge(X,Z,V).

:- true pred merge(X,_1,_2)
         : ( native_props:mshare([[_2]]), ground([X,_1]), rt82(X), rt88(_1), term(_2) )
        => ( ground([X,_1,_2]), rt144(X), rt138(_1), rt136(_2) )
         + ( non_det, not_mut_exclusive ).

:- true pred merge([_2|_3],_1,X)
         : ( native_props:mshare([[X]]), ground([_1,_2,_3]), rt122(_1), term(X), rt117(_2), rt119(_3) )
        => ( ground([_1,X,_2,_3]), rt124(_1), rt123(X), rt117(_2), rt119(_3) )
         + ( is_det, mut_exclusive ).

:- true pred merge(X,[_2|_3],_1)
         : ( native_props:mshare([[_1]]), ground([X,_2,_3]), rt91(X), term(_1), rt95(_2), rt97(_3) )
        => ( ground([X,_1,_2,_3]), rt129(X), rt111(_1), rt95(_2), rt133(_3) )
         + ( non_det, not_mut_exclusive ).

:- true pred merge(X,_1,_2)
         : ( native_props:mshare([[_2]]), var(_2), ground([X,_1]), rt19(X), rt22(_1), term(_2) )
        => ( ground([X,_1,_2]), rt62(X), rt42(_1), rt40(_2) )
         + ( non_det, not_mut_exclusive ).

:- true pred merge([_2|_3],_1,X)
         : ( native_props:mshare([[X]]), var(X), ground([_1,_2,_3]), rt44(_1), term(X), rt51(_2), rt43(_3) )
        => ( ground([_1,X,_2,_3]), rt56(_1), rt55(X), rt51(_2), rt43(_3) )
         + ( is_det, mut_exclusive ).

:- true pred merge(X,[_2|_3],_1)
         : ( native_props:mshare([[_1]]), var(_1), ground([X,_2,_3]), rt23(X), term(_1), rt36(_2), rt24(_3) )
        => ( ground([X,_1,_2,_3]), rt39(X), rt38(_1), rt36(_2), rt24(_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(_1,_2,W)
         : ( native_props:mshare([[_2],[W]]), var(_2), var(W), ground([_1]), gnd(_1), term(_2), term(W) )
        => ( ground([_1,_2,W]), rt13(_1), rt15(_2), rt17(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]), rt51(_1), rt53(_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]), rt34(_1), rt36(_2) )
         + ( is_det, mut_exclusive ).

le(s(X),s(Y)) :-
        le(X,Y).
le(0,s(Y)).
le(0,0).


:- regtype rt163/1.

rt163(A) :-
        gnd(A).


:- regtype rt162/1.

rt162(A) :-
        gnd(A).


:- regtype rt161/1.

rt161(A) :-
        gnd(A).


:- regtype rt160/1.

rt160([]).
rt160([A|B]) :-
        rt161(A),
        rt160(B).


:- regtype rt159/1.

rt159([]).
rt159([A|B]) :-
        rt161(A),
        rt160(B).


:- regtype rt158/1.

rt158([]).
rt158([A|B]) :-
        rt162(A),
        rt159(B).


:- regtype rt157/1.

rt157([]).
rt157([A|B]) :-
        rt163(A),
        rt158(B).


:- regtype rt169/1.

rt169(A) :-
        gnd(A).


:- regtype rt168/1.

rt168(0).
rt168(A) :-
        gnd(A).
rt168(s(A)) :-
        rt96(A).


:- regtype rt167/1.

rt167(0).
rt167(s(A)) :-
        rt168(A).


:- regtype rt166/1.

rt166([]).
rt166([A|B]) :-
        rt95(A),
        rt112(B).


:- regtype rt165/1.

rt165([]).
rt165([A|B]) :-
        rt167(A),
        rt166(B).


:- regtype rt164/1.

rt164([]).
rt164([A|B]) :-
        rt169(A),
        rt165(B).


:- regtype rt87/1.

rt87(A) :-
        gnd(A).


:- regtype rt86/1.

rt86(0).
rt86(A) :-
        gnd(A).
rt86(s(A)) :-
        rt86(A).


:- regtype rt85/1.

rt85(0).
rt85(s(A)) :-
        rt86(A).


:- regtype rt84/1.

rt84([]).
rt84([A|B]) :-
        rt85(A),
        rt84(B).


:- regtype rt83/1.

rt83([]).
rt83([A|B]) :-
        rt85(A),
        rt84(B).


:- regtype rt82/1.

rt82([A|B]) :-
        rt87(A),
        rt83(B).


:- regtype rt90/1.

rt90(A) :-
        gnd(A).


:- regtype rt89/1.

rt89([]).


:- regtype rt88/1.

rt88([A|B]) :-
        rt90(A),
        rt89(B).


:- regtype rt150/1.

rt150(0).
rt150(A) :-
        gnd(A).
rt150(s(A)) :-
        rt52(A).


:- regtype rt149/1.

rt149(0).
rt149(s(A)) :-
        rt150(A).


:- regtype rt148/1.

rt148(0).
rt148(A) :-
        gnd(A).
rt148(s(A)) :-
        rt52(A).


:- regtype rt147/1.

rt147(0).
rt147(s(A)) :-
        rt148(A).


:- regtype rt146/1.

rt146([]).
rt146([A|B]) :-
        rt147(A),
        rt146(B).


:- regtype rt145/1.

rt145([]).
rt145([A|B]) :-
        rt147(A),
        rt146(B).


:- regtype rt144/1.

rt144([A|B]) :-
        rt149(A),
        rt145(B).


:- regtype rt138/1.

rt138([A|B]) :-
        rt95(A),
        rt133(B).


:- regtype rt136/1.

rt136([A|B]) :-
        rt34(A),
        rt111(B).


:- regtype rt122/1.

rt122([]).


:- regtype rt118/1.

rt118(A) :-
        gnd(A).
rt118(s(A)) :-
        rt52(A).


:- regtype rt117/1.

rt117(s(A)) :-
        rt118(A).


:- regtype rt121/1.

rt121(0).
rt121(A) :-
        gnd(A).
rt121(s(A)) :-
        rt94(A).


:- regtype rt120/1.

rt120(0).
rt120(s(A)) :-
        rt121(A).


:- regtype rt119/1.

rt119([]).
rt119([A|B]) :-
        rt120(A),
        rt119(B).


:- regtype rt124/1.

rt124([]).


:- regtype rt123/1.

rt123([A|B]) :-
        rt117(A),
        rt119(B).


:- regtype rt51/1.

rt51(s(A)) :-
        rt52(A).


:- regtype rt54/1.

rt54(0).
rt54(s(A)) :-
        rt54(A).


:- regtype rt53/1.

rt53(0).
rt53(s(A)) :-
        rt54(A).


:- regtype rt94/1.

rt94(0).
rt94(A) :-
        gnd(A).
rt94(s(A)) :-
        rt94(A).


:- regtype rt93/1.

rt93(0).
rt93(s(A)) :-
        rt94(A).


:- regtype rt92/1.

rt92([]).
rt92([A|B]) :-
        rt93(A),
        rt92(B).


:- regtype rt91/1.

rt91([]).
rt91([A|B]) :-
        rt93(A),
        rt92(B).


:- regtype rt95/1.

rt95(0).
rt95(s(A)) :-
        rt96(A).


:- regtype rt97/1.

rt97([]).


:- regtype rt52/1.

rt52(A) :-
        gnd(A).
rt52(s(A)) :-
        rt52(A).


:- regtype rt132/1.

rt132(0).
rt132(A) :-
        gnd(A).
rt132(s(A)) :-
        rt52(A).


:- regtype rt131/1.

rt131(0).
rt131(s(A)) :-
        rt132(A).


:- regtype rt130/1.

rt130([]).
rt130([A|B]) :-
        rt131(A),
        rt130(B).


:- regtype rt129/1.

rt129([]).
rt129([A|B]) :-
        rt131(A),
        rt130(B).


:- regtype rt96/1.

rt96(0).
rt96(A) :-
        gnd(A).
rt96(s(A)) :-
        rt96(A).


:- regtype rt114/1.

rt114(0).
rt114(A) :-
        gnd(A).
rt114(s(A)) :-
        rt96(A).


:- regtype rt113/1.

rt113(0).
rt113(s(A)) :-
        rt114(A).


:- regtype rt112/1.

rt112([]).
rt112([A|B]) :-
        rt95(A),
        rt112(B).


:- regtype rt111/1.

rt111([A|B]) :-
        rt113(A),
        rt112(B).


:- regtype rt133/1.

rt133([]).


:- regtype rt35/1.

rt35(0).
rt35(s(A)) :-
        rt35(A).


:- regtype rt34/1.

rt34(0).
rt34(s(A)) :-
        rt35(A).


:- regtype rt37/1.

rt37(0).
rt37(A) :-
        gnd(A).
rt37(s(A)) :-
        rt37(A).


:- regtype rt36/1.

rt36(0).
rt36(s(A)) :-
        rt37(A).


:- regtype rt79/1.

rt79(A) :-
        gnd(A).


:- regtype rt17/1.

rt17([]).


:- regtype rt81/1.

rt81([A]) :-
        rt79(A).


:- regtype rt80/1.

rt80([]).


:- regtype rt16/1.

rt16([]).
rt16([A|B]) :-
        gnd(A),
        rt16(B).


:- regtype rt15/1.

rt15([]).
rt15([A|B]) :-
        gnd(A),
        rt16(B).


:- regtype rt78/1.

rt78(A) :-
        gnd(A).


:- regtype rt77/1.

rt77(0).
rt77(A) :-
        gnd(A).
rt77(s(A)) :-
        rt77(A).


:- regtype rt76/1.

rt76(0).
rt76(s(A)) :-
        rt77(A).


:- regtype rt75/1.

rt75([]).
rt75([A|B]) :-
        rt76(A),
        rt75(B).


:- regtype rt74/1.

rt74([]).
rt74([A|B]) :-
        rt76(A),
        rt75(B).


:- regtype rt73/1.

rt73([A|B]) :-
        rt78(A),
        rt74(B).


:- regtype rt72/1.

rt72(A) :-
        gnd(A).


:- regtype rt71/1.

rt71([]).
rt71([A|B]) :-
        rt72(A),
        rt71(B).


:- regtype rt70/1.

rt70([]).
rt70([A|B]) :-
        rt72(A),
        rt71(B).


:- regtype rt19/1.

rt19([A]) :-
        gnd(A).


:- regtype rt22/1.

rt22([A]) :-
        gnd(A).


:- regtype rt65/1.

rt65(0).
rt65(A) :-
        gnd(A).
rt65(s(A)) :-
        rt65(A).


:- regtype rt64/1.

rt64(0).
rt64(s(A)) :-
        rt65(A).


:- regtype rt63/1.

rt63([]).


:- regtype rt62/1.

rt62([A|B]) :-
        rt64(A),
        rt63(B).


:- regtype rt42/1.

rt42([A|B]) :-
        rt36(A),
        rt24(B).


:- regtype rt40/1.

rt40([A|B]) :-
        rt34(A),
        rt38(B).


:- regtype rt44/1.

rt44([]).


:- regtype rt43/1.

rt43([]).


:- regtype rt56/1.

rt56([]).


:- regtype rt55/1.

rt55([A|B]) :-
        rt51(A),
        rt43(B).


:- regtype rt23/1.

rt23([]).


:- regtype rt24/1.

rt24([]).


:- regtype rt39/1.

rt39([]).


:- regtype rt38/1.

rt38([A|B]) :-
        rt36(A),
        rt24(B).


:- regtype rt21/1.

rt21([]).


:- regtype rt14/1.

rt14([]).
rt14([A|B]) :-
        gnd(A),
        rt14(B).


:- regtype rt13/1.

rt13([]).
rt13([A|B]) :-
        gnd(A),
        rt14(B).