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 3396.212 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 12.001 msec.}
{written file /tmp/tmp4A76IQ/log_det_co.pl}
:- module(_1,[log/2],[assertions]).

:- true pred half(s(_2),_1)
         : ( native_props:mshare([[_1]]), var(_1), ground([_2]), term(_1), gnd(_2) )
        => ( ground([_1,_2]), rt27(_1), rt23(_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]), rt14(_1), rt17(_2) )
         + ( is_det, mut_exclusive ).

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

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

:- true pred log(A,B)
         : ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
        => ( ground([A,B]), rt50(A), rt55(B) )
         + ( is_det, mut_exclusive ).

:- true pred log(A,B)
         : ( native_props:mshare([[B]]), ground([A]), rt27(A), term(B) )
        => ( ground([A,B]), rt40(A), rt38(B) )
         + ( is_det, mut_exclusive ).

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


:- regtype rt54/1.

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


:- regtype rt53/1.

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


:- regtype rt52/1.

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


:- regtype rt51/1.

rt51(0).
rt51(s(A)) :-
        rt52(A).


:- regtype rt50/1.

rt50(0).
rt50(s(A)) :-
        rt51(A).


:- regtype rt57/1.

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


:- regtype rt56/1.

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


:- regtype rt55/1.

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


:- regtype rt29/1.

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


:- regtype rt28/1.

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


:- regtype rt27/1.

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


:- regtype rt44/1.

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


:- regtype rt43/1.

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


:- regtype rt42/1.

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


:- regtype rt41/1.

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


:- regtype rt40/1.

rt40(0).
rt40(s(A)) :-
        rt41(A).


:- regtype rt39/1.

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


:- regtype rt38/1.

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


:- regtype rt26/1.

rt26(0).
rt26(s(A)) :-
        rt25(A).


:- regtype rt25/1.

rt25(0).
rt25(s(A)) :-
        rt26(A).


:- regtype rt24/1.

rt24(0).
rt24(s(A)) :-
        rt25(A).


:- regtype rt23/1.

rt23(0).
rt23(s(A)) :-
        rt24(A).


:- regtype rt16/1.

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


:- regtype rt15/1.

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


:- regtype rt14/1.

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


:- regtype rt18/1.

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


:- regtype rt17/1.

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