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

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

:- true pred transpose(A,B)
         : ( native_props:mshare([[A]]), ground([B]), term(A), gnd(B) )
        => ( ground([A,B]), rt56(A), rt65(B) )
         + ( is_det, mut_exclusive ).

transpose(A,B) :-
        transpose_aux(A,nil,B).

:- true pred transpose_aux(_1,nil,X)
         : ( native_props:mshare([[_1]]), ground([X]), term(_1), gnd(X) )
        => ( ground([_1,X]), rt56(_1), rt65(X) )
         + ( is_det, mut_exclusive ).

:- true pred transpose_aux(_2,_1,X)
         : ( native_props:mshare([[_2]]), ground([_1,X]), term(_2), rt26(_1), rt25(X) )
        => ( ground([_2,_1,X]), rt38(_2), rt48(_1), rt43(X) )
         + ( is_det, mut_exclusive ).

transpose_aux(cons(R,Rs),_1,cons(C,Cs)) :-
        row2col(R,cons(C,Cs),Cols1,Accm),
        transpose_aux(Rs,Accm,Cols1).
transpose_aux(nil,X,X).

:- true pred row2col(_1,cons(_4,_5),_2,_3)
         : ( native_props:mshare([[_1],[_2],[_3]]), var(_2), var(_3), ground([_4,_5]), term(_1), term(_2), term(_3), gnd(_4), gnd(_5) )
        => ( ground([_1,_2,_3,_4,_5]), rt23(_1), rt25(_2), rt26(_3), rt24(_4), rt17(_5) )
         + ( is_det, mut_exclusive ).

:- true pred row2col(_1,_2,_3,_4)
         : ( native_props:mshare([[_1],[_3],[_4]]), var(_3), var(_4), ground([_2]), term(_1), gnd(_2), term(_3), term(_4) )
        => ( ground([_1,_2,_3,_4]), rt15(_1), rt17(_2), rt19(_3), rt21(_4) )
         + ( is_det, mut_exclusive ).

row2col(cons(X,Xs),cons(cons(X,Ys),Cols),cons(Ys,Cols1),cons(nil,As)) :-
        row2col(Xs,Cols,Cols1,As).
row2col(nil,nil,nil,nil).


:- regtype rt64/1.

rt64(nil).
rt64(cons(A,B)) :-
        gnd(A),
        rt64(B).


:- regtype rt63/1.

rt63(nil).
rt63(cons(A,B)) :-
        gnd(A),
        rt64(B).


:- regtype rt62/1.

rt62(cons(A,B)) :-
        gnd(A),
        rt63(B).


:- regtype rt61/1.

rt61(nil).
rt61(cons(A,B)) :-
        gnd(A),
        rt61(B).


:- regtype rt60/1.

rt60(nil).
rt60(cons(A,B)) :-
        gnd(A),
        rt61(B).


:- regtype rt59/1.

rt59(cons(A,B)) :-
        gnd(A),
        rt60(B).


:- regtype rt58/1.

rt58(nil).
rt58(cons(A,B)) :-
        rt59(A),
        rt58(B).


:- regtype rt57/1.

rt57(nil).
rt57(cons(A,B)) :-
        rt59(A),
        rt58(B).


:- regtype rt56/1.

rt56(nil).
rt56(cons(A,B)) :-
        rt62(A),
        rt57(B).


:- regtype rt69/1.

rt69(A) :-
        gnd(A).
rt69(cons(A,B)) :-
        gnd(A),
        rt69(B).


:- regtype rt68/1.

rt68(cons(A,B)) :-
        gnd(A),
        rt69(B).


:- regtype rt67/1.

rt67(nil).
rt67(cons(cons(A,B),C)) :-
        gnd(A),
        gnd(B),
        rt67(C).


:- regtype rt66/1.

rt66(nil).
rt66(cons(cons(A,B),C)) :-
        gnd(A),
        gnd(B),
        rt67(C).


:- regtype rt65/1.

rt65(nil).
rt65(cons(A,B)) :-
        rt68(A),
        rt66(B).


:- regtype rt26/1.

rt26(cons(nil,A)) :-
        rt21(A).


:- regtype rt25/1.

rt25(cons(A,B)) :-
        gnd(A),
        rt19(B).


:- regtype rt42/1.

rt42(nil).
rt42(cons(A,B)) :-
        gnd(A),
        rt42(B).


:- regtype rt41/1.

rt41(nil).
rt41(cons(A,B)) :-
        gnd(A),
        rt42(B).


:- regtype rt40/1.

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


:- regtype rt39/1.

rt39(nil).
rt39(cons(A,B)) :-
        rt40(A),
        rt39(B).


:- regtype rt38/1.

rt38(nil).
rt38(cons(A,B)) :-
        rt40(A),
        rt39(B).


:- regtype rt51/1.

rt51(nil).


:- regtype rt50/1.

rt50(nil).
rt50(cons(nil,A)) :-
        rt50(A).


:- regtype rt49/1.

rt49(nil).
rt49(cons(nil,A)) :-
        rt50(A).


:- regtype rt48/1.

rt48(cons(A,B)) :-
        rt51(A),
        rt49(B).


:- regtype rt47/1.

rt47(A) :-
        gnd(A).
rt47(nil).
rt47(cons(A,B)) :-
        gnd(A),
        rt47(B).


:- regtype rt46/1.

rt46(nil).
rt46(cons(A,B)) :-
        gnd(A),
        rt47(B).


:- regtype rt36/1.

rt36(nil).
rt36(cons(A,B)) :-
        gnd(A),
        gnd(B).


:- regtype rt45/1.

rt45(nil).
rt45(cons(A,B)) :-
        rt36(A),
        rt45(B).


:- regtype rt44/1.

rt44(nil).
rt44(cons(A,B)) :-
        rt36(A),
        rt45(B).


:- regtype rt43/1.

rt43(cons(A,B)) :-
        rt46(A),
        rt44(B).


:- regtype rt23/1.

rt23(cons(A,B)) :-
        gnd(A),
        rt15(B).


:- regtype rt24/1.

rt24(cons(A,B)) :-
        gnd(A),
        gnd(B).


:- regtype rt18/1.

rt18(nil).
rt18(cons(cons(A,B),C)) :-
        gnd(A),
        gnd(B),
        rt18(C).


:- regtype rt17/1.

rt17(nil).
rt17(cons(cons(A,B),C)) :-
        gnd(A),
        gnd(B),
        rt18(C).


:- regtype rt16/1.

rt16(nil).
rt16(cons(A,B)) :-
        gnd(A),
        rt16(B).


:- regtype rt15/1.

rt15(nil).
rt15(cons(A,B)) :-
        gnd(A),
        rt16(B).


:- regtype rt20/1.

rt20(nil).
rt20(cons(A,B)) :-
        gnd(A),
        rt20(B).


:- regtype rt19/1.

rt19(nil).
rt19(cons(A,B)) :-
        gnd(A),
        rt20(B).


:- regtype rt22/1.

rt22(nil).
rt22(cons(nil,A)) :-
        rt22(A).


:- regtype rt21/1.

rt21(nil).
rt21(cons(nil,A)) :-
        rt22(A).