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/tmplIX2KC/log2b-oi.pl
}
{loaded in 3384.211 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 64.004 msec.}
{written file /tmp/tmplIX2KC/log2b-oi_det_co.pl}
:- module(_1,[log2/2],[assertions]).

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

:- true pred log2(A,B)
         : ( native_props:mshare([[A]]), ground([B]), term(A), gnd(B) )
        => ( ground([A,B]), rt105(A), rt108(B) )
         + ( non_det, mut_exclusive ).

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

:- true pred log2(X,s(0),s(_1),Y)
         : ( ground([X,Y,_1]), rt47(X), rt46(Y), rt44(_1) )
        => ( ground([X,Y,_1]), rt25(X), rt48(Y), rt50(_1) )
         + ( is_det, mut_exclusive ).

:- true pred log2(X,0,s(0),Y)
         : ( native_props:mshare([[X]]), ground([Y]), term(X), gnd(Y) )
        => ( ground([X,Y]), rt105(X), rt108(Y) )
         + ( non_det, not_mut_exclusive ).

:- true pred log2(X,s(_1),Acc,Y)
         : ( native_props:mshare([[X]]), ground([Acc,Y,_1]), term(X), rt7(Acc), gnd(Y), rt6(_1) )
        => ( ground([X,Acc,Y,_1]), rt99(X), rt96(Acc), rt97(Y), rt93(_1) )
         + ( non_det, not_mut_exclusive ).

:- true pred log2(X,s(_1),Acc,Y)
         : ( native_props:mshare([[X]]), ground([Acc,Y,_1]), term(X), rt7(Acc), gnd(Y), rt13(_1) )
        => ( ground([X,Acc,Y,_1]), rt89(X), rt86(Acc), rt87(Y), rt81(_1) )
         + ( non_det, not_mut_exclusive ).

:- true pred log2(X,s(0),s(_1),Y)
         : ( ground([X,Y,_1]), rt14(X), gnd(Y), rt7(_1) )
        => ( ground([X,Y,_1]), rt74(X), rt72(Y), rt71(_1) )
         + ( non_det, not_mut_exclusive ).

:- true pred log2(X,s(_1),Acc,Y)
         : ( ground([X,Acc,Y,_1]), term(X), rt32(Acc), rt34(Y), rt30(_1) )
        => ( ground([X,Acc,Y,_1]), rt39(X), rt63(Acc), rt65(Y), rt60(_1) )
         + ( non_det, not_mut_exclusive ).

log2(s(s(X)),Half,Acc,Y) :-
        log2(X,s(Half),Acc,Y).
log2(X,s(s(Half)),Acc,Y) :-
        small(X),
        log2(Half,s(0),s(Acc),Y).
log2(X,Half,Y,Y) :-
        small(X),
        small(Half).

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

:- true pred small(_1)
         : ( ground([_1]), rt14(_1) )
        => ( ground([_1]), rt25(_1) )
         + ( is_det, mut_exclusive ).

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

:- true pred small(_1)
         : ( ground([_1]), rt15(_1) )
        => ( ground([_1]), rt16(_1) )
         + ( is_det, mut_exclusive ).

:- true pred small(_1)
         : ( native_props:mshare([[_1]]), term(_1) )
        => ( ground([_1]), rt4(_1) )
         + ( is_det, mut_exclusive ).

:- true pred small(_1)
         : ( ground([_1]), rt0(_1) )
        => ( ground([_1]), rt5(_1) )
         + ( is_det, mut_exclusive ).

small(0).
small(s(0)).


:- regtype rt47/1.

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


:- regtype rt46/1.

rt46(A) :-
        gnd(A).


:- regtype rt44/1.

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


:- regtype rt25/1.

rt25(0).
rt25(s(0)).


:- regtype rt48/1.

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


:- regtype rt45/1.

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


:- regtype rt50/1.

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


:- regtype rt107/1.

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


:- regtype rt106/1.

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


:- regtype rt105/1.

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


:- regtype rt109/1.

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


:- regtype rt108/1.

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


:- regtype rt7/1.

rt7(s(0)).


:- regtype rt6/1.

rt6(0).


:- regtype rt101/1.

rt101(0).
rt101(s(A)) :-
        rt100(A).


:- regtype rt100/1.

rt100(0).
rt100(s(A)) :-
        rt101(A).


:- regtype rt99/1.

rt99(0).
rt99(s(A)) :-
        rt100(A).


:- regtype rt96/1.

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


:- regtype rt98/1.

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


:- regtype rt97/1.

rt97(s(A)) :-
        rt98(A).


:- regtype rt95/1.

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


:- regtype rt94/1.

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


:- regtype rt93/1.

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


:- regtype rt13/1.

rt13(0).
rt13(s(A)) :-
        rt14(A).


:- regtype rt89/1.

rt89(0).
rt89(s(0)).


:- regtype rt86/1.

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


:- regtype rt88/1.

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


:- regtype rt87/1.

rt87(s(A)) :-
        rt88(A).


:- regtype rt85/1.

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


:- regtype rt84/1.

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


:- regtype rt83/1.

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


:- regtype rt82/1.

rt82(0).
rt82(s(A)) :-
        rt83(A).


:- regtype rt81/1.

rt81(0).
rt81(s(A)) :-
        rt82(A).


:- regtype rt14/1.

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


:- regtype rt77/1.

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


:- regtype rt76/1.

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


:- regtype rt75/1.

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


:- regtype rt74/1.

rt74(0).
rt74(s(A)) :-
        rt75(A).


:- regtype rt73/1.

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


:- regtype rt72/1.

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


:- regtype rt71/1.

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


:- regtype rt33/1.

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


:- regtype rt32/1.

rt32(s(A)) :-
        rt33(A).


:- regtype rt34/1.

rt34(A) :-
        gnd(A).


:- regtype rt31/1.

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


:- regtype rt30/1.

rt30(0).
rt30(s(A)) :-
        rt31(A).


:- regtype rt39/1.

rt39(0).
rt39(s(0)).


:- regtype rt64/1.

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


:- regtype rt63/1.

rt63(s(A)) :-
        rt64(A).


:- regtype rt66/1.

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


:- regtype rt65/1.

rt65(s(A)) :-
        rt66(A).


:- regtype rt61/1.

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


:- regtype rt60/1.

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


:- regtype rt8/1.

rt8(s(A)) :-
        rt6(A).


:- regtype rt9/1.

rt9(s(0)).


:- regtype rt15/1.

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


:- regtype rt16/1.

rt16(s(0)).


:- regtype rt4/1.

rt4(0).
rt4(s(0)).


:- regtype rt0/1.

rt0(0).


:- regtype rt5/1.

rt5(0).