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