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/tmpNitS1A/log2a.pl
}
{loaded in 3368.21 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 16.001 msec.}
{written file /tmp/tmpNitS1A/log2a_det_co.pl}
:- module(_1,[log2/2],[assertions]).

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

:- true pred log2(A,B)
         : ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
        => ( ground([A,B]), rt66(A), rt71(B) )
         + ( is_det, mut_exclusive ).

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

:- true pred log2(_1,0,I)
         : ( native_props:mshare([[I]]), ground([_1]), gnd(_1), term(I) )
        => ( ground([_1,I]), rt66(_1), rt71(I) )
         + ( is_det, mut_exclusive ).

:- true pred log2(_1,s(_2),I)
         : ( native_props:mshare([[I]]), ground([_1,_2]), rt21(_1), term(I), rt5(_2) )
        => ( ground([_1,I,_2]), rt57(_1), rt54(I), rt53(_2) )
         + ( is_det, mut_exclusive ).

:- true pred log2(_1,s(_2),I)
         : ( native_props:mshare([[I]]), ground([_1,_2]), rt29(_1), term(I), rt27(_2) )
        => ( ground([_1,I,_2]), rt45(_1), rt32(I), rt44(_2) )
         + ( is_det, mut_exclusive ).

log2(0,I,I).
log2(s(0),I,I).
log2(s(s(X)),I,Y) :-
        half(s(s(X)),X1),
        log2(X1,s(I),Y).

:- true pred half(s(s(_2)),_1)
         : ( native_props:mshare([[_1]]), var(_1), ground([_2]), term(_1), gnd(_2) )
        => ( ground([_1,_2]), rt21(_1), rt16(_2) )
         + ( is_det, mut_exclusive ).

:- true pred half(_1,_2)
         : ( native_props:mshare([[_2]]), var(_2), ground([_1]), gnd(_1), term(_2) )
        => ( ground([_1,_2]), rt16(_1), rt19(_2) )
         + ( is_det, mut_exclusive ).

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


:- regtype rt70/1.

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


:- regtype rt69/1.

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


:- regtype rt68/1.

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


:- regtype rt67/1.

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


:- regtype rt66/1.

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


:- regtype rt73/1.

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


:- regtype rt72/1.

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


:- regtype rt71/1.

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


:- regtype rt21/1.

rt21(s(A)) :-
        rt19(A).


:- regtype rt5/1.

rt5(0).


:- regtype rt61/1.

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


:- regtype rt60/1.

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


:- regtype rt59/1.

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


:- regtype rt58/1.

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


:- regtype rt57/1.

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


:- regtype rt56/1.

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


:- regtype rt55/1.

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


:- regtype rt54/1.

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


:- regtype rt53/1.

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


:- regtype rt31/1.

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


:- regtype rt30/1.

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


:- regtype rt29/1.

rt29(s(A)) :-
        rt30(A).


:- regtype rt28/1.

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


:- regtype rt27/1.

rt27(0).
rt27(s(A)) :-
        rt28(A).


:- regtype rt49/1.

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


:- regtype rt48/1.

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


:- regtype rt47/1.

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


:- regtype rt46/1.

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


:- regtype rt45/1.

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


:- regtype rt32/1.

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


:- regtype rt44/1.

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


:- regtype rt18/1.

rt18(0).
rt18(s(A)) :-
        rt17(A).


:- regtype rt17/1.

rt17(0).
rt17(s(A)) :-
        rt18(A).


:- regtype rt16/1.

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


:- regtype rt20/1.

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


:- regtype rt19/1.

rt19(0).
rt19(s(A)) :-
        rt20(A).