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/tmpHZuA2W/rev.pl
}
{loaded in 3404.212 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 52.003 msec.}
{written file /tmp/tmpHZuA2W/rev_det_co.pl}
:- module(_1,[rev/2],[assertions]).

:- entry rev(A,B)
         : ground(A).

:- true pred rev([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), gnd(_1), rt12(_2) )
        => ( ground([B,_1,_2]), rt22(B), gnd(_1), rt9(_2) )
         + ( non_det, not_mut_exclusive ).

:- true pred rev([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), term(_1), rt12(_2) )
        => ( ground([B,_1,_2]), rt66(B), term(_1), rt53(_2) )
         + ( non_det, not_mut_exclusive ).

:- true pred rev([_1|_2],B)
         : ( native_props:mshare([[B]]), ground([_1,_2]), term(B), term(_1), rt128(_2) )
        => ( ground([B,_1,_2]), rt132(B), term(_1), rt126(_2) )
         + ( non_det, not_mut_exclusive ).

:- true pred rev(A,B)
         : ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
        => ( ground([A,B]), rt153(A), rt156(B) )
         + ( non_det, mut_exclusive ).

:- true pred rev([_1|_2],B)
         : ( native_props:mshare([[B]]), ground([_1,_2]), term(B), gnd(_1), rt112(_2) )
        => ( ground([B,_1,_2]), rt141(B), term(_1), rt137(_2) )
         + ( non_det, mut_exclusive ).

:- true pred rev(A,B)
         : ( native_props:mshare([[B]]), var(B), ground([A]), rt75(A), term(B) )
        => ( ground([A,B]), rt92(A), rt94(B) )
         + ( non_det, mut_exclusive ).

:- true pred rev(A,B)
         : ( native_props:mshare([[B]]), var(B), ground([A]), rt31(A), term(B) )
        => ( ground([A,B]), rt108(A), rt110(B) )
         + ( non_det, mut_exclusive ).

:- true pred rev([_1|_2],B)
         : ( native_props:mshare([[B]]), var(B), ground([_1,_2]), term(B), gnd(_1), rt94(_2) )
        => ( ground([B,_1,_2]), rt96(B), term(_1), rt71(_2) )
         + ( non_det, mut_exclusive ).

:- true pred rev(A,B)
         : ( native_props:mshare([[B]]), var(B), ground([A]), rt10(A), term(B) )
        => ( ground([A,B]), rt11(A), rt12(B) )
         + ( is_det, mut_exclusive ).

rev([],[]).
rev([X|XS],[Y|YS]) :-
        rev1(X,XS,Y),
        rev2(X,XS,YS).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), ground([X,_1]), term(X), rt81(_1), term(Z) )
        => ( ground([X,_1,Z]), term(X), rt122(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), ground([X,_1]), term(X), term(_1), term(Z) )
        => ( ground([X,_1,Z]), term(X), rt118(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), term(X), rt81(_1), term(Z) )
        => ( ground([X,_1,Z]), term(X), rt86(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), term(X), term(_1), term(Z) )
        => ( ground([X,_1,Z]), term(X), rt42(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), term(X), rt55(_1), term(Z) )
        => ( ground([X,_1,Z]), term(X), rt60(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), gnd(X), rt36(_1), term(Z) )
        => ( ground([X,_1,Z]), gnd(X), rt46(_1), term(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), gnd(X), rt13(_1), term(Z) )
        => ( ground([X,_1,Z]), gnd(X), rt17(_1), gnd(Z) )
         + ( is_det, mut_exclusive ).

:- true pred rev1(X,_1,Z)
         : ( native_props:mshare([[Z]]), ground([X,_1]), gnd(X), gnd(_1), term(Z) )
        => ( ground([X,_1,Z]), gnd(X), rt5(_1), gnd(Z) )
         + ( is_det, mut_exclusive ).

rev1(X,[],X).
rev1(X,[Y|YS],Z) :-
        rev1(Y,YS,Z).

:- true pred rev2(X,_1,ZS)
         : ( native_props:mshare([[ZS]]), ground([X,_1]), gnd(X), rt5(_1), term(ZS) )
        => ( ground([X,_1,ZS]), term(X), rt145(_1), rt147(ZS) )
         + ( non_det, mut_exclusive ).

:- true pred rev2(X,_1,ZS)
         : ( native_props:mshare([[ZS]]), ground([X,_1]), term(X), rt124(_1), term(ZS) )
        => ( ground([X,_1,ZS]), term(X), rt137(_1), rt139(ZS) )
         + ( non_det, mut_exclusive ).

:- true pred rev2(X,_1,ZS)
         : ( native_props:mshare([[ZS]]), var(ZS), ground([X,_1]), term(X), rt52(_1), term(ZS) )
        => ( ground([X,_1,ZS]), term(X), rt71(_1), rt73(ZS) )
         + ( non_det, mut_exclusive ).

:- true pred rev2(X,_1,ZS)
         : ( native_props:mshare([[ZS]]), var(ZS), ground([X,_1]), gnd(X), rt48(_1), term(ZS) )
        => ( ground([X,_1,ZS]), term(X), rt100(_1), rt102(ZS) )
         + ( non_det, mut_exclusive ).

:- true pred rev2(X,_1,ZS)
         : ( native_props:mshare([[ZS]]), var(ZS), ground([X,_1]), gnd(X), rt6(_1), term(ZS) )
        => ( ground([X,_1,ZS]), gnd(X), rt27(_1), rt29(ZS) )
         + ( non_det, mut_exclusive ).

rev2(X,[],[]).
rev2(X,[Y|YS],ZS) :-
        rev2(Y,YS,US),
        rev(US,VS),
        rev([X|VS],ZS).


:- regtype rt12/1.

rt12([]).


:- regtype rt23/1.

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


:- regtype rt22/1.

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


:- regtype rt9/1.

rt9([]).


:- regtype rt67/1.

rt67([]).
rt67([A|B]) :-
        term(A),
        rt67(B).


:- regtype rt66/1.

rt66([A|B]) :-
        term(A),
        rt67(B).


:- regtype rt53/1.

rt53([]).


:- regtype rt129/1.

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


:- regtype rt128/1.

rt128([]).
rt128([A|B]) :-
        term(A),
        rt129(B).


:- regtype rt133/1.

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


:- regtype rt132/1.

rt132([A|B]) :-
        term(A),
        rt133(B).


:- regtype rt126/1.

rt126([]).


:- regtype rt155/1.

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


:- regtype rt154/1.

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


:- regtype rt153/1.

rt153([]).
rt153([A|B]) :-
        term(A),
        rt154(B).


:- regtype rt158/1.

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


:- regtype rt157/1.

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


:- regtype rt156/1.

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


:- regtype rt5/1.

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


:- regtype rt146/1.

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


:- regtype rt145/1.

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


:- regtype rt148/1.

rt148([]).
rt148([A|B]) :-
        term(A),
        rt148(B).


:- regtype rt147/1.

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


:- regtype rt113/1.

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


:- regtype rt112/1.

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


:- regtype rt141/1.

rt141([A|B]) :-
        term(A),
        rt139(B).


:- regtype rt138/1.

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


:- regtype rt137/1.

rt137([]).
rt137([A|B]) :-
        term(A),
        rt138(B).


:- regtype rt125/1.

rt125([]).
rt125([A|B]) :-
        term(A),
        rt125(B).


:- regtype rt124/1.

rt124([]).
rt124([A|B]) :-
        term(A),
        rt125(B).


:- regtype rt140/1.

rt140([]).
rt140([A|B]) :-
        term(A),
        rt140(B).


:- regtype rt139/1.

rt139([]).
rt139([A|B]) :-
        term(A),
        rt140(B).


:- regtype rt82/1.

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


:- regtype rt81/1.

rt81([]).
rt81(A) :-
        gnd(A).
rt81([A|B]) :-
        term(A),
        rt82(B).


:- regtype rt123/1.

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


:- regtype rt122/1.

rt122([]).
rt122([A|B]) :-
        term(A),
        rt123(B).


:- regtype rt76/1.

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


:- regtype rt75/1.

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


:- regtype rt93/1.

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


:- regtype rt92/1.

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


:- regtype rt95/1.

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


:- regtype rt94/1.

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


:- regtype rt52/1.

rt52([]).
rt52([A|B]) :-
        term(A),
        rt52(B).


:- regtype rt71/1.

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


:- regtype rt73/1.

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


:- regtype rt119/1.

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


:- regtype rt118/1.

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


:- regtype rt32/1.

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


:- regtype rt31/1.

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


:- regtype rt109/1.

rt109([]).
rt109([A|B]) :-
        term(A),
        rt109(B).


:- regtype rt108/1.

rt108([]).
rt108([A|B]) :-
        term(A),
        rt109(B).


:- regtype rt111/1.

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


:- regtype rt110/1.

rt110([]).
rt110([A|B]) :-
        term(A),
        rt111(B).


:- regtype rt49/1.

rt49([]).
rt49([A|B]) :-
        term(A),
        rt49(B).


:- regtype rt48/1.

rt48([]).
rt48([A|B]) :-
        term(A),
        rt49(B).


:- regtype rt72/1.

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


:- regtype rt101/1.

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


:- regtype rt100/1.

rt100([]).
rt100([A|B]) :-
        term(A),
        rt101(B).


:- regtype rt74/1.

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


:- regtype rt103/1.

rt103([]).
rt103([A|B]) :-
        term(A),
        rt74(B).


:- regtype rt102/1.

rt102([]).
rt102([A|B]) :-
        term(A),
        rt103(B).


:- regtype rt96/1.

rt96([A|B]) :-
        term(A),
        rt73(B).


:- regtype rt87/1.

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


:- regtype rt86/1.

rt86([]).
rt86([A|B]) :-
        term(A),
        rt87(B).


:- regtype rt43/1.

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


:- regtype rt42/1.

rt42([]).
rt42([A|B]) :-
        term(A),
        rt43(B).


:- regtype rt56/1.

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


:- regtype rt55/1.

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


:- regtype rt61/1.

rt61([]).
rt61([A|B]) :-
        term(A),
        rt61(B).


:- regtype rt60/1.

rt60([]).
rt60([A|B]) :-
        term(A),
        rt61(B).


:- regtype rt10/1.

rt10([]).


:- regtype rt11/1.

rt11([]).


:- regtype rt37/1.

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


:- regtype rt36/1.

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


:- regtype rt47/1.

rt47([]).
rt47([A|B]) :-
        term(A),
        rt47(B).


:- regtype rt46/1.

rt46([]).
rt46([A|B]) :-
        term(A),
        rt47(B).


:- regtype rt6/1.

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


:- regtype rt28/1.

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


:- regtype rt27/1.

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


:- regtype rt30/1.

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


:- regtype rt29/1.

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


:- regtype rt13/1.

rt13(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).