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/tmpuOBaPx/g.pl
}
{loaded in 3408.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/tmpuOBaPx/g_det_co.pl}
:- module(_1,[g/1],[assertions]).

:- entry g(A).

:- true pred g(A)
         : ( native_props:mshare([[A]]), term(A) )
        => ( native_props:mshare([[A]]), rt33(A) )
         + ( is_det, mut_exclusive ).

g(W) :-
        eq(X,[[a],[R]]),
        eq(Y,[[S,c],[]]),
        app_1(X,Y,Z),
        eq(Z,[U|V]),
        app_2(U,U,W).

:- true pred app_1(_1,X,_2)
         : ( native_props:mshare([[_1],[X],[_2]]), var(_2), rt0(_1), rt1(X), term(_2) )
        => ( native_props:mshare([[_1,_2],[X,_2]]), rt28(_1), rt1(X), rt29(_2) )
         + ( is_det, mut_exclusive ).

:- true pred app_1(_1,X,_2)
         : ( native_props:mshare([[_1],[X],[_2]]), var(_2), rt3(_1), rt1(X), term(_2) )
        => ( native_props:mshare([[_1,_2],[X,_2]]), rt26(_1), rt1(X), rt27(_2) )
         + ( is_det, mut_exclusive ).

:- true pred app_1(_1,X,_2)
         : ( native_props:mshare([[_1],[X],[_2]]), var(_2), rt7(_1), rt1(X), term(_2) )
        => ( native_props:mshare([[_1,_2],[X,_2]]), rt20(_1), rt1(X), rt22(_2) )
         + ( is_det, mut_exclusive ).

app_1([],X,X).
app_1([X|Xs],Ys,[X|Zs]) :-
        app_1(Xs,Ys,Zs).

:- true pred app_2(X,X,_1)
         : ( native_props:mshare([[X],[_1]]), rt2(X), term(_1) )
        => ( native_props:mshare([[X,_1]]), rt34(X), rt33(_1) )
         + ( is_det, mut_exclusive ).

:- true pred app_2(X,Ys,_1)
         : ( native_props:mshare([[X,Ys],[X,Ys,_1],[Ys],[Ys,_1],[_1]]), rt31(X), rt2(Ys), term(_1) )
        => ( native_props:mshare([[Ys,_1]]), ground([X]), rt32(X), rt2(Ys), rt2(_1) )
         + ( is_det, mut_exclusive ).

app_2([],X,X).
app_2([X|Xs],Ys,[X|Zs]) :-
        app_2(Xs,Ys,Zs).

:- true pred eq(X,[_1|_2])
         : ( native_props:mshare([[X],[_1],[_2]]), var(_1), var(_2), rt29(X), term(_1), term(_2) )
        => ( native_props:mshare([[X,_1],[X,_1,_2],[X,_2]]), rt29(X), rt2(_1), rt27(_2) )
         + ( is_det, mut_exclusive ).

:- true pred eq(X,[[_1,c],[]])
         : ( native_props:mshare([[X],[_1]]), var(X), var(_1), term(X), term(_1) )
        => ( native_props:mshare([[X,_1]]), rt1(X), term(_1) )
         + ( is_det, mut_exclusive ).

:- true pred eq(X,[[a],[_1]])
         : ( native_props:mshare([[X],[_1]]), var(X), var(_1), term(X), term(_1) )
        => ( native_props:mshare([[X,_1]]), rt0(X), term(_1) )
         + ( is_det, mut_exclusive ).

eq(X,X).


:- regtype rt33/1.

rt33([A|B]) :-
        rt30(A),
        rt2(B).


:- regtype rt2/1.

rt2([a]).


:- regtype rt30/1.

rt30(a).


:- regtype rt34/1.

rt34([A|B]) :-
        rt30(A),
        rt32(B).


:- regtype rt31/1.

rt31([]).


:- regtype rt32/1.

rt32([]).


:- regtype rt29/1.

rt29([A|B]) :-
        rt2(A),
        rt27(B).


:- regtype rt27/1.

rt27([A|B]) :-
        rt4(A),
        rt22(B).


:- regtype rt0/1.

rt0([[a],[A]]) :-
        term(A).


:- regtype rt1/1.

rt1([[A,c],[]]) :-
        term(A).


:- regtype rt28/1.

rt28([A|B]) :-
        rt2(A),
        rt26(B).


:- regtype rt3/1.

rt3([[A]]) :-
        term(A).


:- regtype rt4/1.

rt4([A]) :-
        term(A).


:- regtype rt26/1.

rt26([A|B]) :-
        rt4(A),
        rt20(B).


:- regtype rt8/1.

rt8([]).
rt8([[A]|B]) :-
        term(A),
        rt8(B).


:- regtype rt7/1.

rt7([]).
rt7([[A]|B]) :-
        term(A),
        rt8(B).


:- regtype rt10/1.

rt10([A]) :-
        term(A).


:- regtype rt21/1.

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


:- regtype rt20/1.

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


:- regtype rt18/1.

rt18([A|B]) :-
        term(A),
        rt19(B).


:- regtype rt19/1.

rt19([]).
rt19([c]).


:- regtype rt25/1.

rt25([]).
rt25([A|B]) :-
        term(A),
        rt19(B).


:- regtype rt24/1.

rt24([]).
rt24([A|B]) :-
        rt25(A),
        rt24(B).


:- regtype rt23/1.

rt23([A|B]) :-
        rt25(A),
        rt24(B).


:- regtype rt22/1.

rt22([A|B]) :-
        rt18(A),
        rt23(B).