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 3324.208 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 20.001 msec.}
{written file /tmp/tmp8bLZxO/transpose_det_co.pl}
:- module(_1,[transpose/2],[assertions]).
:- entry transpose(A,B)
: ground(A).
:- true pred transpose(A,B)
: ( native_props:mshare([[B]]), ground([A]), gnd(A), term(B) )
=> ( ground([A,B]), rt81(A), rt90(B) )
+ ( is_det, mut_exclusive ).
transpose(A,B) :-
transpose_aux(A,[],B).
:- true pred transpose_aux(_1,[],X)
: ( native_props:mshare([[X]]), ground([_1]), gnd(_1), term(X) )
=> ( ground([_1,X]), rt81(_1), rt90(X) )
+ ( is_det, mut_exclusive ).
:- true pred transpose_aux(_2,_1,X)
: ( native_props:mshare([[X]]), ground([_2,_1]), gnd(_2), rt41(_1), rt52(X) )
=> ( ground([_2,_1,X]), rt63(_2), rt73(_1), rt68(X) )
+ ( is_det, mut_exclusive ).
transpose_aux([R|Rs],_1,[C|Cs]) :-
row2col(R,[C|Cs],Cols1,[],Accm),
transpose_aux(Rs,Accm,Cols1).
transpose_aux([],X,X).
:- true pred row2col(_1,[_3|_4],_2,[],B)
: ( native_props:mshare([[_2],[B],[_3],[_3,_4],[_4]]), var(_2), var(B), ground([_1]), gnd(_1), term(_2), term(B), term(_3), term(_4) )
=> ( native_props:mshare([[_2,_3],[_2,_3,_4],[_2,_4]]), ground([_1,B]), rt50(_1), rt52(_2), rt41(B), rt51(_3), rt46(_4) )
+ ( is_det, mut_exclusive ).
:- true pred row2col(_1,_2,_3,[[]|_4],B)
: ( native_props:mshare([[_2],[_3],[B]]), var(_3), var(B), ground([_1,_4]), gnd(_1), term(_2), term(_3), term(B), rt3(_4) )
=> ( native_props:mshare([[_2,_3]]), ground([_1,B,_4]), rt44(_1), rt46(_2), rt48(_3), rt41(B), rt40(_4) )
+ ( is_det, mut_exclusive ).
:- true pred row2col(_1,_2,_3,[[]|_4],B)
: ( native_props:mshare([[_2],[_3],[B]]), var(_3), var(B), ground([_1,_4]), rt12(_1), term(_2), term(_3), term(B), rt10(_4) )
=> ( native_props:mshare([[_2,_3]]), ground([_1,B,_4]), rt28(_1), rt30(_2), rt32(_3), rt13(B), rt27(_4) )
+ ( is_det, mut_exclusive ).
row2col([X|Xs],[[X|Ys]|Cols],[Ys|Cols1],A,B) :-
row2col(Xs,Cols,Cols1,[[]|A],B).
row2col([],[],[],A,A).
:- regtype rt89/1.
rt89([]).
rt89([A|B]) :-
gnd(A),
rt89(B).
:- regtype rt88/1.
rt88([]).
rt88([A|B]) :-
gnd(A),
rt89(B).
:- regtype rt87/1.
rt87([A|B]) :-
gnd(A),
rt88(B).
:- regtype rt86/1.
rt86([]).
rt86([A|B]) :-
gnd(A),
rt86(B).
:- regtype rt85/1.
rt85([]).
rt85([A|B]) :-
gnd(A),
rt86(B).
:- regtype rt84/1.
rt84([A|B]) :-
gnd(A),
rt85(B).
:- regtype rt83/1.
rt83([]).
rt83([A|B]) :-
rt84(A),
rt83(B).
:- regtype rt82/1.
rt82([]).
rt82([A|B]) :-
rt84(A),
rt83(B).
:- regtype rt81/1.
rt81([]).
rt81([A|B]) :-
rt87(A),
rt82(B).
:- regtype rt94/1.
rt94(A) :-
term(A).
rt94([A|B]) :-
gnd(A),
rt94(B).
:- regtype rt93/1.
rt93([A|B]) :-
gnd(A),
rt94(B).
:- regtype rt92/1.
rt92([]).
rt92([[A|B]|C]) :-
gnd(A),
term(B),
rt92(C).
:- regtype rt91/1.
rt91([]).
rt91([[A|B]|C]) :-
gnd(A),
term(B),
rt92(C).
:- regtype rt90/1.
rt90([]).
rt90([A|B]) :-
rt93(A),
rt91(B).
:- regtype rt43/1.
rt43([]).
rt43([[]|A]) :-
rt43(A).
:- regtype rt42/1.
rt42([]).
rt42([[]|A]) :-
rt43(A).
:- regtype rt41/1.
rt41([[]|A]) :-
rt42(A).
:- regtype rt52/1.
rt52([A|B]) :-
term(A),
rt48(B).
:- regtype rt67/1.
rt67([]).
rt67([A|B]) :-
gnd(A),
rt67(B).
:- regtype rt66/1.
rt66([]).
rt66([A|B]) :-
gnd(A),
rt67(B).
:- regtype rt65/1.
rt65([A|B]) :-
gnd(A),
rt66(B).
:- regtype rt64/1.
rt64([]).
rt64([A|B]) :-
rt65(A),
rt64(B).
:- regtype rt63/1.
rt63([]).
rt63([A|B]) :-
rt65(A),
rt64(B).
:- regtype rt76/1.
rt76([]).
:- regtype rt75/1.
rt75([]).
rt75([[]|A]) :-
rt75(A).
:- regtype rt74/1.
rt74([]).
rt74([[]|A]) :-
rt75(A).
:- regtype rt73/1.
rt73([A|B]) :-
rt76(A),
rt74(B).
:- regtype rt72/1.
rt72([]).
rt72(A) :-
term(A).
rt72([A|B]) :-
gnd(A),
rt72(B).
:- regtype rt71/1.
rt71([]).
rt71([A|B]) :-
gnd(A),
rt72(B).
:- regtype rt61/1.
rt61([]).
rt61([A|B]) :-
gnd(A),
term(B).
:- regtype rt70/1.
rt70([]).
rt70([A|B]) :-
rt61(A),
rt70(B).
:- regtype rt69/1.
rt69([]).
rt69([A|B]) :-
rt61(A),
rt70(B).
:- regtype rt68/1.
rt68([A|B]) :-
rt71(A),
rt69(B).
:- regtype rt50/1.
rt50([A|B]) :-
gnd(A),
rt44(B).
:- regtype rt51/1.
rt51([A|B]) :-
gnd(A),
term(B).
:- regtype rt47/1.
rt47([]).
rt47([[A|B]|C]) :-
gnd(A),
term(B),
rt47(C).
:- regtype rt46/1.
rt46([]).
rt46([[A|B]|C]) :-
gnd(A),
term(B),
rt47(C).
:- regtype rt3/1.
rt3([]).
:- regtype rt45/1.
rt45([]).
rt45([A|B]) :-
gnd(A),
rt45(B).
:- regtype rt44/1.
rt44([]).
rt44([A|B]) :-
gnd(A),
rt45(B).
:- regtype rt49/1.
rt49([]).
rt49([A|B]) :-
term(A),
rt49(B).
:- regtype rt48/1.
rt48([]).
rt48([A|B]) :-
term(A),
rt49(B).
:- regtype rt40/1.
rt40([]).
rt40([[]|A]) :-
rt40(A).
:- regtype rt12/1.
rt12(A) :-
gnd(A).
:- regtype rt11/1.
rt11([]).
rt11([[]|A]) :-
rt11(A).
:- regtype rt10/1.
rt10([]).
rt10([[]|A]) :-
rt11(A).
:- regtype rt29/1.
rt29([]).
rt29([A|B]) :-
gnd(A),
rt29(B).
:- regtype rt28/1.
rt28([]).
rt28([A|B]) :-
gnd(A),
rt29(B).
:- regtype rt31/1.
rt31([]).
rt31([[A|B]|C]) :-
gnd(A),
term(B),
rt31(C).
:- regtype rt30/1.
rt30([]).
rt30([[A|B]|C]) :-
gnd(A),
term(B),
rt31(C).
:- regtype rt33/1.
rt33([]).
rt33([A|B]) :-
term(A),
rt33(B).
:- regtype rt32/1.
rt32([]).
rt32([A|B]) :-
term(A),
rt33(B).
:- regtype rt13/1.
rt13([[]|A]) :-
rt10(A).
:- regtype rt27/1.
rt27([]).
rt27([[]|A]) :-
rt27(A).