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 3408.212 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 4.0 msec.}
{written file /tmp/tmpPk4pPI/sum-ioi_det_co.pl}
:- module(_1,[sum/3],[assertions]).

:- entry sum(A,B,C)
         : ( ground(A), ground(C) ).

:- true pred sum(A,B,C)
         : ( native_props:mshare([[B]]), ground([A,C]), gnd(A), term(B), gnd(C) )
        => ( ground([A,B,C]), rt15(A), rt19(B), rt22(C) )
         + ( is_det, mut_exclusive ).

sum([],[],[]).
sum([X1|Y1],[X2|Y2],[X3|Y3]) :-
        add(X1,X2,X3),
        sum(Y1,Y2,Y3).

:- true pred add(_1,X,_2)
         : ( native_props:mshare([[X]]), ground([_1,_2]), gnd(_1), term(X), gnd(_2) )
        => ( ground([_1,X,_2]), rt7(_1), gnd(X), gnd(_2) )
         + ( is_det, mut_exclusive ).

add(0,X,X).
add(s(X),Y,s(Z)) :-
        add(X,Y,Z).


:- regtype rt18/1.

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


:- regtype rt17/1.

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


:- regtype rt16/1.

rt16([]).
rt16([A|B]) :-
        rt17(A),
        rt16(B).


:- regtype rt15/1.

rt15([]).
rt15([A|B]) :-
        rt17(A),
        rt16(B).


:- regtype rt21/1.

rt21(A) :-
        gnd(A).


:- regtype rt20/1.

rt20([]).
rt20([A|B]) :-
        rt21(A),
        rt20(B).


:- regtype rt19/1.

rt19([]).
rt19([A|B]) :-
        rt21(A),
        rt20(B).


:- regtype rt24/1.

rt24(A) :-
        gnd(A).


:- regtype rt23/1.

rt23([]).
rt23([A|B]) :-
        rt24(A),
        rt23(B).


:- regtype rt22/1.

rt22([]).
rt22([A|B]) :-
        rt24(A),
        rt23(B).


:- regtype rt8/1.

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


:- regtype rt7/1.

rt7(0).
rt7(s(A)) :-
        rt8(A).