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.

{loaded in 3384.212 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 116.007 msec.}
{written file /tmp/tmpTjm6jS/ways_det_co.pl}
:- module(_1,[ways/3],[assertions]).

:- true pred nat(_1)
         : ( ground([_1]), term(_1) )
        => ( ground([_1]), rt9(_1) )
         + ( is_det, mut_exclusive ).

nat(0).
nat(s(X)) :-
        nat(X).

:- true pred plus(_1,s(_2),s(_3))
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,_3]), rt72(_1), term(_2), rt74(_3) )
        => ( ground([_1,_2,_3]), rt91(_1), rt10(_2), rt9(_3) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[_2]]), ground([_1,X]), rt132(_1), rt134(X), term(_2) )
        => ( ground([_1,X,_2]), rt140(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(s(_2),X,_1)
         : ( native_props:mshare([[X]]), var(X), ground([_1,_2]), term(X), rt5(_1), gnd(_2) )
        => ( ground([X,_1,_2]), rt9(X), rt17(_1), rt15(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,s(_2),s(_3))
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,_3]), rt147(_1), term(_2), rt149(_3) )
        => ( ground([_1,_2,_3]), rt161(_1), rt10(_2), rt9(_3) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[X]]), ground([_1,_2]), rt154(_1), rt152(X), term(_2) )
        => ( ground([_1,X,_2]), rt159(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,s(_2),s(_3))
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,_3]), rt13(_1), term(_2), rt15(_3) )
        => ( ground([_1,_2,_3]), rt49(_1), rt44(_2), rt47(_3) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,X]), rt106(_1), rt108(X), term(_2) )
        => ( ground([_1,X,_2]), rt114(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[X]]), ground([_1,_2]), rt77(_1), term(X), term(_2) )
        => ( ground([_1,X,_2]), rt89(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[X]]), ground([_1,_2]), term(_1), term(X), term(_2) )
        => ( ground([_1,X,_2]), rt84(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,X]), rt19(_1), rt59(X), term(_2) )
        => ( ground([_1,X,_2]), rt61(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[X]]), ground([_1,_2]), rt38(_1), term(X), term(_2) )
        => ( ground([_1,X,_2]), rt45(_1), rt43(X), rt47(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[_2]]), var(_2), ground([_1,X]), rt19(_1), rt23(X), term(_2) )
        => ( ground([_1,X,_2]), rt30(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

:- true pred plus(_1,X,_2)
         : ( native_props:mshare([[X]]), var(X), ground([_1,_2]), gnd(_1), term(X), term(_2) )
        => ( ground([_1,X,_2]), rt15(_1), rt9(X), rt9(_2) )
         + ( is_det, mut_exclusive ).

plus(0,X,X) :-
        nat(X).
plus(s(X),Y,s(Z)) :-
        plus(X,Y,Z).

:- entry ways(A,B,C)
         : ( ground(A), ground(B) ).

:- true pred ways(A,[s(_2)|_1],C)
         : ( native_props:mshare([[C]]), var(C), ground([A,_1,_2]), rt9(A), term(C), rt18(_1), rt15(_2) )
        => ( ground([A,C,_1,_2]), rt55(A), rt57(C), rt52(_1), rt53(_2) )
         + ( is_det, mut_exclusive ).

:- true pred ways(A,B,C)
         : ( native_props:mshare([[C]]), ground([A,B]), gnd(A), gnd(B), term(C) )
        => ( ground([A,B,C]), rt184(A), gnd(B), rt186(C) )
         + ( is_det, mut_exclusive ).

:- true pred ways(A,B,C)
         : ( native_props:mshare([[C]]), ground([A,B]), rt162(A), gnd(B), term(C) )
        => ( ground([A,B,C]), rt180(A), rt175(B), rt173(C) )
         + ( is_det, mut_exclusive ).

:- true pred ways(A,[s(_2)|_1],C)
         : ( native_props:mshare([[C]]), var(C), ground([A,_1,_2]), rt9(A), term(C), rt66(_1), rt15(_2) )
        => ( ground([A,C,_1,_2]), rt128(A), rt130(C), rt66(_1), rt126(_2) )
         + ( is_det, mut_exclusive ).

:- true pred ways(A,B,C)
         : ( native_props:mshare([[C]]), var(C), ground([A,B]), rt17(A), gnd(B), term(C) )
        => ( ground([A,B,C]), rt93(A), rt66(B), rt95(C) )
         + ( is_det, mut_exclusive ).

:- true pred ways(A,B,C)
         : ( native_props:mshare([[C]]), var(C), ground([A,B]), rt49(A), rt18(B), term(C) )
        => ( ground([A,B,C]), rt49(A), rt51(B), rt50(C) )
         + ( is_det, mut_exclusive ).

ways(0,_1,s(0)).
ways(_1,[],0).
ways(Amount,[s(C)|Coins],N) :-
        Amount=s(_1),
        plus(s(C),NewAmount,Amount),
        ways(Amount,Coins,N1),
        ways(NewAmount,[s(C)|Coins],N2),
        plus(N1,N2,N).
ways(Amount,[s(C)|Coins],N) :-
        Amount=s(_1),
        plus(Amount,s(_2),s(C)),
        ways(Amount,Coins,N).


:- regtype rt9/1.

rt9(0).
rt9(s(A)) :-
        rt10(A).


:- regtype rt18/1.

rt18([]).


:- regtype rt16/1.

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


:- regtype rt15/1.

rt15(0).
rt15(s(A)) :-
        rt16(A).


:- regtype rt56/1.

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


:- regtype rt55/1.

rt55(0).
rt55(s(A)) :-
        rt56(A).


:- regtype rt58/1.

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


:- regtype rt57/1.

rt57(0).
rt57(s(A)) :-
        rt58(A).


:- regtype rt52/1.

rt52([]).


:- regtype rt54/1.

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


:- regtype rt53/1.

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


:- regtype rt185/1.

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


:- regtype rt184/1.

rt184(A) :-
        gnd(A).
rt184(s(A)) :-
        rt185(A).


:- regtype rt187/1.

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


:- regtype rt186/1.

rt186(0).
rt186(s(A)) :-
        rt187(A).


:- regtype rt163/1.

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


:- regtype rt162/1.

rt162(s(A)) :-
        rt163(A).


:- regtype rt181/1.

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


:- regtype rt180/1.

rt180(s(A)) :-
        rt181(A).


:- regtype rt178/1.

rt178(0).
rt178(s(A)) :-
        rt48(A).


:- regtype rt177/1.

rt177(0).
rt177(s(A)) :-
        rt178(A).


:- regtype rt176/1.

rt176([]).
rt176([s(A)|B]) :-
        rt68(A),
        rt67(B).


:- regtype rt175/1.

rt175([]).
rt175([s(A)|B]) :-
        rt177(A),
        rt176(B).


:- regtype rt174/1.

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


:- regtype rt173/1.

rt173(0).
rt173(s(A)) :-
        rt174(A).


:- regtype rt73/1.

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


:- regtype rt72/1.

rt72(s(A)) :-
        rt73(A).


:- regtype rt74/1.

rt74(A) :-
        gnd(A).


:- regtype rt91/1.

rt91(s(A)) :-
        rt89(A).


:- regtype rt10/1.

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


:- regtype rt133/1.

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


:- regtype rt132/1.

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


:- regtype rt135/1.

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


:- regtype rt134/1.

rt134(0).
rt134(s(A)) :-
        rt135(A).


:- regtype rt141/1.

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


:- regtype rt140/1.

rt140(0).
rt140(s(A)) :-
        rt141(A).


:- regtype rt69/1.

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


:- regtype rt68/1.

rt68(0).
rt68(s(A)) :-
        rt69(A).


:- regtype rt67/1.

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


:- regtype rt66/1.

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


:- regtype rt129/1.

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


:- regtype rt128/1.

rt128(0).
rt128(s(A)) :-
        rt129(A).


:- regtype rt131/1.

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


:- regtype rt130/1.

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


:- regtype rt127/1.

rt127(0).
rt127(s(A)) :-
        rt48(A).


:- regtype rt126/1.

rt126(0).
rt126(s(A)) :-
        rt127(A).


:- regtype rt17/1.

rt17(s(A)) :-
        rt9(A).


:- regtype rt94/1.

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


:- regtype rt93/1.

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


:- regtype rt95/1.

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


:- regtype rt5/1.

rt5(s(A)) :-
        term(A).


:- regtype rt148/1.

rt148(A) :-
        term(A).
rt148(s(A)) :-
        rt148(A).


:- regtype rt147/1.

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


:- regtype rt149/1.

rt149(A) :-
        gnd(A).


:- regtype rt161/1.

rt161(s(A)) :-
        rt159(A).


:- regtype rt154/1.

rt154(A) :-
        term(A).
rt154(s(A)) :-
        rt154(A).


:- regtype rt153/1.

rt153(0).
rt153(A) :-
        term(A).
rt153(s(A)) :-
        rt153(A).


:- regtype rt152/1.

rt152(0).
rt152(s(A)) :-
        rt153(A).


:- regtype rt160/1.

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


:- regtype rt159/1.

rt159(0).
rt159(s(A)) :-
        rt160(A).


:- regtype rt13/1.

rt13(s(A)) :-
        rt9(A).


:- regtype rt49/1.

rt49(s(A)) :-
        rt45(A).


:- regtype rt44/1.

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


:- regtype rt48/1.

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


:- regtype rt47/1.

rt47(0).
rt47(s(A)) :-
        rt48(A).


:- regtype rt96/1.

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


:- regtype rt107/1.

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


:- regtype rt106/1.

rt106(0).
rt106(s(A)) :-
        rt107(A).


:- regtype rt109/1.

rt109(0).
rt109(s(A)) :-
        rt60(A).


:- regtype rt108/1.

rt108(0).
rt108(s(A)) :-
        rt109(A).


:- regtype rt115/1.

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


:- regtype rt114/1.

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


:- regtype rt78/1.

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


:- regtype rt77/1.

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


:- regtype rt90/1.

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


:- regtype rt89/1.

rt89(0).
rt89(s(A)) :-
        rt90(A).


:- regtype rt85/1.

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


:- regtype rt84/1.

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


:- regtype rt19/1.

rt19(0).


:- regtype rt60/1.

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


:- regtype rt59/1.

rt59(0).
rt59(s(A)) :-
        rt60(A).


:- regtype rt61/1.

rt61(0).


:- regtype rt51/1.

rt51([]).


:- regtype rt50/1.

rt50(0).


:- regtype rt38/1.

rt38(A) :-
        gnd(A).


:- regtype rt46/1.

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


:- regtype rt45/1.

rt45(0).
rt45(s(A)) :-
        rt46(A).


:- regtype rt43/1.

rt43(0).
rt43(s(A)) :-
        rt44(A).


:- regtype rt23/1.

rt23(s(0)).


:- regtype rt30/1.

rt30(0).