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 3424.214 msec.}
{preprocessed for plai in 4.0 msec.}
{analyzed by plai using det with local-control off in 8.001 msec.}
{written file /tmp/tmpIWJBk3/preorder_dl_det_co.pl}
:- module(_1,[preorder/2],[assertions]).

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

:- true pred preorder(A,B)
         : ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
        => ( native_props:mshare([[B]]), ground([A]), rt22(A), rt29(B) )
         + ( is_det, mut_exclusive ).

preorder(T,Xs) :-
        preorder_dl(T,Xs-[]).

:- true pred preorder_dl(_1,_2-[])
         : ( native_props:mshare([[_2]]), ground([_1]), gnd(_1), term(_2) )
        => ( native_props:mshare([[_2]]), ground([_1]), rt22(_1), rt29(_2) )
         + ( is_det, mut_exclusive ).

:- true pred preorder_dl(_1,_2-_3)
         : ( native_props:mshare([[_2]]), ground([_1,_3]), rt10(_1), term(_2), term(_3) )
        => ( native_props:mshare([[_2]]), ground([_1,_3]), rt15(_1), term(_2), term(_3) )
         + ( is_det, mut_exclusive ).

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

preorder_dl(nil,X-X).
preorder_dl(tree(L,X,R),[X|Xs]-Zs) :-
        preorder_dl(L,Xs-Ys),
        preorder_dl(R,Ys-Zs).


:- regtype rt28/1.

rt28(nil).
rt28(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt27/1.

rt27(nil).
rt27(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt26/1.

rt26(nil).
rt26(tree(A,B,C)) :-
        rt28(A),
        gnd(B),
        rt27(C).


:- regtype rt25/1.

rt25(nil).
rt25(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt24/1.

rt24(nil).
rt24(tree(A,B,C)) :-
        rt25(A),
        gnd(B),
        rt24(C).


:- regtype rt23/1.

rt23(nil).
rt23(tree(A,B,C)) :-
        rt25(A),
        gnd(B),
        rt24(C).


:- regtype rt22/1.

rt22(nil).
rt22(tree(A,B,C)) :-
        rt26(A),
        gnd(B),
        rt23(C).


:- regtype rt30/1.

rt30(A) :-
        term(A).


:- regtype rt29/1.

rt29([]).
rt29([A|B]) :-
        gnd(A),
        rt30(B).


:- regtype rt10/1.

rt10(A) :-
        gnd(A).


:- regtype rt17/1.

rt17(nil).
rt17(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt16/1.

rt16(nil).
rt16(tree(A,B,C)) :-
        rt17(A),
        gnd(B),
        rt16(C).


:- regtype rt15/1.

rt15(nil).
rt15(tree(A,B,C)) :-
        rt17(A),
        gnd(B),
        rt16(C).


:- regtype rt9/1.

rt9(nil).
rt9(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt8/1.

rt8(nil).
rt8(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).


:- regtype rt7/1.

rt7(nil).
rt7(tree(A,B,C)) :-
        rt9(A),
        gnd(B),
        rt8(C).