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/tmpqK0CuW/divrempredef.pl
}
{loaded in 3428.214 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 12.0 msec.}
{written file /tmp/tmpqK0CuW/divrempredef_det_co.pl}
:- module(_1,[div/4],[assertions]).

:- entry div(A,B,C,D)
         : ( ground(A), ground(B) ).

:- true pred div(A,B,C,D)
         : ( native_props:mshare([[C],[C,D],[D]]), ground([A,B]), gnd(A), gnd(B), term(C), term(D) )
        => ( ground([A,B,C,D]), rt22(A), gnd(B), rt23(C), rt26(D) )
         + ( is_det, mut_exclusive ).

:- true pred div(A,B,C,D)
         : ( native_props:mshare([[C],[C,D],[D]]), ground([A,B]), gnd(A), rt8(B), term(C), term(D) )
        => ( ground([A,B,C,D]), rt19(A), rt8(B), rt17(C), rt16(D) )
         + ( is_det, mut_exclusive ).

div(X,0,Z,R) :-
        !,
        fail.
div(0,Y,Z,R) :-
        !,
        Z=0,
        R=0.
div(X,Y,s(Z),R) :-
        minus(X,Y,U),
        !,
        div(U,Y,Z,R).
div(X,Y,0,X).

:- true pred minus(X,_1,Z)
         : ( native_props:mshare([[Z]]), var(Z), ground([X,_1]), gnd(X), gnd(_1), term(Z) )
        => ( ground([X,_1,Z]), gnd(X), rt8(_1), gnd(Z) )
         + ( is_det, mut_exclusive ).

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


:- regtype rt22/1.

rt22(A) :-
        gnd(A).


:- regtype rt25/1.

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


:- regtype rt24/1.

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


:- regtype rt23/1.

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


:- regtype rt26/1.

rt26(A) :-
        gnd(A).


:- regtype rt9/1.

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


:- regtype rt8/1.

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


:- regtype rt19/1.

rt19(A) :-
        gnd(A).


:- regtype rt18/1.

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


:- regtype rt17/1.

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


:- regtype rt16/1.

rt16(A) :-
        gnd(A).