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/tmptj2fo7/sicstus1.pl
}
{In /tmp/tmptj2fo7/sicstus1.pl
{loaded in 3368.211 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 8.001 msec.}
{written file /tmp/tmptj2fo7/sicstus1_det_co.pl}
:- module(_1,[reverse_concatenate/3],[assertions]).

concatenate([],L,L).
concatenate([X|L1],L2,[X|L3]) :-
        concatenate(L1,L2,L3).

member(X,[X|L]).
member(X,[Y|L]) :-
        member(X,L).

reverse(L,L1) :-
        reverse_concatenate(L,[],L1).

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

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

:- true pred reverse_concatenate(A,[_1|_2],C)
         : ( native_props:mshare([[C]]), ground([A,_1,_2]), gnd(A), term(C), gnd(_1), gnd(_2) )
        => ( ground([A,C,_1,_2]), rt11(A), rt9(C), gnd(_1), rt8(_2) )
         + ( is_det, mut_exclusive ).

reverse_concatenate([],L,L).
reverse_concatenate([X|L1],L2,L3) :-
        reverse_concatenate(L1,[X|L2],L3).


:- regtype rt17/1.

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


:- regtype rt16/1.

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


:- regtype rt15/1.

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


:- regtype rt18/1.

rt18(A) :-
        gnd(A).


:- regtype rt19/1.

rt19(A) :-
        gnd(A).


:- regtype rt12/1.

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


:- regtype rt11/1.

rt11([]).
rt11([A|B]) :-
        gnd(A),
        rt12(B).


:- regtype rt10/1.

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


:- regtype rt9/1.

rt9([A|B]) :-
        gnd(A),
        rt10(B).


:- regtype rt8/1.

rt8(A) :-
        gnd(A).