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 3396.212 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 20.002 msec.}
{written file /tmp/tmpv1NunA/sameleaves_det_co.pl}
:- module(_1,[sameleaves/2],[assertions]).

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

:- true pred sameleaves(A,B)
         : ( ground([A,B]), gnd(A), gnd(B) )
        => ( ground([A,B]), rt60(A), rt65(B) )
         + ( is_det, mut_exclusive ).

sameleaves(leaf(L),leaf(L)).
sameleaves(tree(T1,T2),tree(S1,S2)) :-
        getleave(T1,T2,L,T),
        getleave(S1,S2,L,S),
        sameleaves(T,S).

:- true pred getleave(_1,C,A,O)
         : ( native_props:mshare([[O]]), var(O), ground([_1,C,A]), gnd(_1), gnd(C), gnd(A), term(O) )
        => ( ground([_1,C,A,O]), rt52(_1), term(C), gnd(A), rt55(O) )
         + ( is_det, mut_exclusive ).

:- true pred getleave(_1,tree(_2,_3),A,O)
         : ( native_props:mshare([[O]]), var(O), ground([_1,A,_2,_3]), rt24(_1), term(A), term(O), gnd(_2), rt23(_3) )
        => ( ground([_1,A,O,_2,_3]), rt48(_1), gnd(A), rt46(O), term(_2), term(_3) )
         + ( is_det, mut_exclusive ).

:- true pred getleave(_1,tree(_2,_3),A,O)
         : ( native_props:mshare([[O]]), var(O), ground([_1,A,_2,_3]), rt31(_1), term(A), term(O), gnd(_2), rt29(_3) )
        => ( ground([_1,A,O,_2,_3]), rt42(_1), gnd(A), rt40(O), term(_2), term(_3) )
         + ( is_det, mut_exclusive ).

:- true pred getleave(_1,C,A,O)
         : ( native_props:mshare([[A],[O]]), var(A), var(O), ground([_1,C]), gnd(_1), gnd(C), term(A), term(O) )
        => ( ground([_1,C,A,O]), rt17(_1), rt20(C), gnd(A), rt21(O) )
         + ( is_det, mut_exclusive ).

:- true pred getleave(_1,tree(_2,_3),A,O)
         : ( native_props:mshare([[A],[O]]), var(A), var(O), ground([_1,_2,_3]), gnd(_1), term(A), term(O), gnd(_2), gnd(_3) )
        => ( ground([_1,A,O,_2,_3]), rt13(_1), gnd(A), rt11(O), gnd(_2), rt10(_3) )
         + ( is_det, mut_exclusive ).

getleave(leaf(A),C,A,C).
getleave(tree(A,B),C,L,O) :-
        getleave(A,tree(B,C),L,O).


:- regtype rt64/1.

rt64(leaf(A)) :-
        gnd(A).
rt64(tree(A,B)) :-
        rt64(A),
        gnd(B).


:- regtype rt63/1.

rt63(leaf(A)) :-
        gnd(A).
rt63(tree(A,B)) :-
        rt64(A),
        gnd(B).


:- regtype rt62/1.

rt62(leaf(A)) :-
        gnd(A).
rt62(tree(A,B)) :-
        rt63(A),
        gnd(B).


:- regtype rt61/1.

rt61(A) :-
        gnd(A).
rt61(leaf(A)) :-
        gnd(A).
rt61(tree(A,B)) :-
        rt62(A),
        rt61(B).


:- regtype rt60/1.

rt60(leaf(A)) :-
        gnd(A).
rt60(tree(A,B)) :-
        rt62(A),
        rt61(B).


:- regtype rt69/1.

rt69(leaf(A)) :-
        gnd(A).
rt69(tree(A,B)) :-
        rt69(A),
        term(B).


:- regtype rt68/1.

rt68(leaf(A)) :-
        gnd(A).
rt68(tree(A,B)) :-
        rt69(A),
        term(B).


:- regtype rt67/1.

rt67(leaf(A)) :-
        gnd(A).
rt67(tree(A,B)) :-
        rt68(A),
        term(B).


:- regtype rt66/1.

rt66(A) :-
        term(A).
rt66(leaf(A)) :-
        gnd(A).
rt66(tree(A,B)) :-
        rt67(A),
        rt66(B).


:- regtype rt65/1.

rt65(leaf(A)) :-
        gnd(A).
rt65(tree(A,B)) :-
        rt67(A),
        rt66(B).


:- regtype rt54/1.

rt54(leaf(A)) :-
        gnd(A).
rt54(tree(A,B)) :-
        rt54(A),
        term(B).


:- regtype rt53/1.

rt53(leaf(A)) :-
        gnd(A).
rt53(tree(A,B)) :-
        rt54(A),
        term(B).


:- regtype rt52/1.

rt52(leaf(A)) :-
        gnd(A).
rt52(tree(A,B)) :-
        rt53(A),
        term(B).


:- regtype rt55/1.

rt55(A) :-
        gnd(A).


:- regtype rt24/1.

rt24(A) :-
        gnd(A).


:- regtype rt23/1.

rt23(A) :-
        gnd(A).


:- regtype rt49/1.

rt49(leaf(A)) :-
        gnd(A).
rt49(tree(A,B)) :-
        rt49(A),
        term(B).


:- regtype rt48/1.

rt48(leaf(A)) :-
        gnd(A).
rt48(tree(A,B)) :-
        rt49(A),
        term(B).


:- regtype rt47/1.

rt47(A) :-
        gnd(A).
rt47(tree(A,B)) :-
        gnd(A),
        rt47(B).


:- regtype rt46/1.

rt46(tree(A,B)) :-
        gnd(A),
        rt47(B).


:- regtype rt31/1.

rt31(A) :-
        gnd(A).


:- regtype rt30/1.

rt30(A) :-
        gnd(A).
rt30(tree(A,B)) :-
        gnd(A),
        rt30(B).


:- regtype rt29/1.

rt29(A) :-
        gnd(A).
rt29(tree(A,B)) :-
        gnd(A),
        rt30(B).


:- regtype rt43/1.

rt43(leaf(A)) :-
        gnd(A).
rt43(tree(A,B)) :-
        rt43(A),
        gnd(B).


:- regtype rt42/1.

rt42(leaf(A)) :-
        gnd(A).
rt42(tree(A,B)) :-
        rt43(A),
        gnd(B).


:- regtype rt41/1.

rt41(A) :-
        gnd(A).
rt41(tree(A,B)) :-
        gnd(A),
        rt41(B).


:- regtype rt40/1.

rt40(tree(A,B)) :-
        gnd(A),
        rt41(B).


:- regtype rt19/1.

rt19(leaf(A)) :-
        gnd(A).
rt19(tree(A,B)) :-
        rt19(A),
        gnd(B).


:- regtype rt18/1.

rt18(leaf(A)) :-
        gnd(A).
rt18(tree(A,B)) :-
        rt19(A),
        gnd(B).


:- regtype rt17/1.

rt17(leaf(A)) :-
        gnd(A).
rt17(tree(A,B)) :-
        rt18(A),
        gnd(B).


:- regtype rt20/1.

rt20(A) :-
        gnd(A).


:- regtype rt21/1.

rt21(A) :-
        gnd(A).


:- regtype rt14/1.

rt14(leaf(A)) :-
        gnd(A).
rt14(tree(A,B)) :-
        rt14(A),
        gnd(B).


:- regtype rt13/1.

rt13(leaf(A)) :-
        gnd(A).
rt13(tree(A,B)) :-
        rt14(A),
        gnd(B).


:- regtype rt12/1.

rt12(A) :-
        gnd(A).
rt12(tree(A,B)) :-
        gnd(A),
        rt12(B).


:- regtype rt11/1.

rt11(tree(A,B)) :-
        gnd(A),
        rt12(B).


:- regtype rt10/1.

rt10(A) :-
        gnd(A).