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/tmpcqZVuV/factor.pl
}
{loaded in 3416.213 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 4.0 msec.}
{written file /tmp/tmpcqZVuV/factor_det_co.pl}
:- module(_1,[factor/2],[assertions]).
:- entry factor(A,B)
: ground(A).
:- true pred factor(A,B)
: ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
=> ( ground([A,B]), rt17(A), gnd(B) )
+ ( is_det, mut_exclusive ).
:- true pred factor([_1|_2],B)
: ( native_props:mshare([[B]]), ground([_1,_2]), term(B), gnd(_1), gnd(_2) )
=> ( ground([B,_1,_2]), gnd(B), gnd(_1), rt11(_2) )
+ ( is_det, mut_exclusive ).
factor([X],X).
factor([X,Y|Xs],T) :-
times(X,Y,Z),
factor([Z|Xs],T).
:- true pred times(_1,X_,Z)
: ( native_props:mshare([[Z]]), var(Z), ground([_1,X_]), gnd(_1), gnd(X_), term(Z) )
=> ( ground([_1,X_,Z]), rt6(_1), gnd(X_), gnd(Z) )
+ ( is_det, mut_exclusive ).
times(0,X_,0).
times(s(X),Y,Z) :-
times(X,Y,XY),
plus(XY,Y,Z).
:- true pred plus(_1,X,_2)
: ( native_props:mshare([[_2]]), var(_2), ground([_1,X]), rt2(_1), gnd(X), term(_2) )
=> ( ground([_1,X,_2]), rt3(_1), gnd(X), gnd(_2) )
+ ( is_det, mut_exclusive ).
plus(0,X,X).
plus(s(X),Y,s(Z)) :-
plus(X,Y,Z).
:- regtype rt23/1.
rt23(A) :-
gnd(A).
:- regtype rt22/1.
rt22(A) :-
gnd(A).
:- 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 rt18/1.
rt18([]).
rt18([A|B]) :-
rt22(A),
rt19(B).
:- regtype rt17/1.
rt17([A|B]) :-
rt23(A),
rt18(B).
:- regtype rt13/1.
rt13(A) :-
gnd(A).
:- regtype rt12/1.
rt12([]).
rt12([A|B]) :-
rt13(A),
rt12(B).
:- regtype rt11/1.
rt11([]).
rt11([A|B]) :-
rt13(A),
rt12(B).
:- regtype rt7/1.
rt7(0).
rt7(s(A)) :-
rt7(A).
:- regtype rt6/1.
rt6(0).
rt6(s(A)) :-
rt7(A).
:- regtype rt2/1.
rt2(0).
:- regtype rt3/1.
rt3(0).