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 3388.212 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 4.001 msec.}
{written file /tmp/tmpHXfbMY/even_det_co.pl}
:- module(_1,[even/1],[assertions]).

:- entry even(A)
         : ground(A).

:- true pred even(A)
         : ( ground([A]), gnd(A) )
        => ( ground([A]), rt23(A) )
         + ( is_det, mut_exclusive ).

even(X) :-
        eq(Y,f(e,f(o,Y))),
        c(Y,X).

:- true pred c(_1,_2)
         : ( native_props:mshare([[_1]]), ground([_2]), rt0(_1), gnd(_2) )
        => ( native_props:mshare([[_1]]), ground([_2]), rt3(_1), rt23(_2) )
         + ( is_det, mut_exclusive ).

:- true pred c(_1,_2)
         : ( native_props:mshare([[_1]]), ground([_2]), rt5(_1), gnd(_2) )
        => ( native_props:mshare([[_1]]), ground([_2]), rt18(_1), rt19(_2) )
         + ( is_det, mut_exclusive ).

:- true pred c(_1,_2)
         : ( native_props:mshare([[_1]]), ground([_2]), term(_1), rt7(_2) )
        => ( native_props:mshare([[_1]]), ground([_2]), rt14(_1), rt16(_2) )
         + ( is_det, mut_exclusive ).

c(f(e,_1),0).
c(f(_1,X),s(Y)) :-
        c(X,Y).

:- true pred eq(X,f(e,f(o,X)))
         : ( native_props:mshare([[X]]), var(X), term(X) )
        => ( native_props:mshare([[X]]), rt0(X) )
         + ( is_det, mut_exclusive ).

eq(X,X).


:- regtype rt25/1.

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


:- regtype rt24/1.

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


:- regtype rt23/1.

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


:- regtype rt0/1.

rt0(f(e,f(o,A))) :-
        term(A).


:- regtype rt1/1.

rt1(f(o,A)) :-
        term(A).


:- regtype rt3/1.

rt3(f(e,A)) :-
        rt1(A).


:- regtype rt5/1.

rt5(f(o,A)) :-
        term(A).


:- regtype rt6/1.

rt6(o).


:- regtype rt18/1.

rt18(f(A,B)) :-
        rt6(A),
        rt14(B).


:- regtype rt19/1.

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


:- regtype rt7/1.

rt7(A) :-
        gnd(A).


:- regtype rt15/1.

rt15(A) :-
        term(A).
rt15(f(A,B)) :-
        term(A),
        rt15(B).


:- regtype rt14/1.

rt14(f(A,B)) :-
        term(A),
        rt15(B).


:- regtype rt17/1.

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


:- regtype rt16/1.

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