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/tmpmDlwV7/log2a-oi.pl
}
{loaded in 3404.212 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 20.001 msec.}
{written file /tmp/tmpmDlwV7/log2a-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]), rt80(A), rt85(B) )
         + ( is_det, mut_exclusive ).

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

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

:- true pred log2(_1,s(_2),I)
         : ( ground([_1,I,_2]), rt21(_1), gnd(I), rt5(_2) )
        => ( ground([_1,I,_2]), rt71(_1), rt68(I), rt67(_2) )
         + ( is_det, mut_exclusive ).

:- true pred log2(_1,s(_2),I)
         : ( ground([_1,I,_2]), rt44(_1), gnd(I), rt42(_2) )
        => ( ground([_1,I,_2]), rt59(_1), rt47(I), rt58(_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), term(_2) )
        => ( ground([_1,_2]), rt40(_1), rt35(_2) )
         + ( is_det, mut_exclusive ).

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

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

:- true pred half(_1,_2)
         : ( native_props:mshare([[_1],[_2]]), var(_2), term(_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 rt84/1.

rt84(0).
rt84(s(A)) :-
        rt83(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 rt80/1.

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


:- regtype rt87/1.

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


:- regtype rt86/1.

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


:- regtype rt85/1.

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


:- regtype rt21/1.

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


:- regtype rt5/1.

rt5(0).


:- regtype rt75/1.

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


:- regtype rt74/1.

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


:- regtype rt73/1.

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


:- regtype rt72/1.

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


:- regtype rt71/1.

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


:- regtype rt70/1.

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


:- regtype rt69/1.

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


:- regtype rt68/1.

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


:- regtype rt67/1.

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


:- regtype rt46/1.

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


:- regtype rt45/1.

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


:- regtype rt44/1.

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


:- regtype rt43/1.

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


:- regtype rt42/1.

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


:- regtype rt63/1.

rt63(0).
rt63(s(A)) :-
        rt62(A).


:- regtype rt62/1.

rt62(0).
rt62(s(A)) :-
        rt63(A).


:- regtype rt61/1.

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


:- regtype rt60/1.

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


:- regtype rt59/1.

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


:- regtype rt47/1.

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


:- regtype rt58/1.

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


:- regtype rt40/1.

rt40(s(A)) :-
        rt38(A).


:- regtype rt37/1.

rt37(0).
rt37(s(A)) :-
        rt36(A).


:- regtype rt36/1.

rt36(0).
rt36(s(A)) :-
        rt37(A).


:- regtype rt35/1.

rt35(0).
rt35(s(A)) :-
        rt36(A).


:- regtype rt39/1.

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


:- regtype rt38/1.

rt38(0).
rt38(s(A)) :-
        rt39(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).