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.
{In /tmp/tmpoW0ub5/map_color.pl
{loaded in 3360.21 msec.}
{preprocessed for plai in 0.0 msec.}
{analyzed by plai using det with local-control off in 4.001 msec.}
{written file /tmp/tmpoW0ub5/map_color_det_co.pl}
:- module(_1,[map/1],[assertions]).
color_map([],_1).
color_map([Region|Regions],Colors) :-
color_region(Region,Colors),
color_map(Regions,Colors).
color_region(region(_1,Color,Neighbors),Colors) :-
select(Color,Colors,Colors1),
subset(Neighbors,Colors1).
select(X,[X|Xs],Xs).
select(X,[Y|Xs],[Y|Zs]) :-
select(X,Xs,Zs).
subset([],_1).
subset([X|Xs],Ys) :-
member(X,Ys),
subset(Xs,Ys).
member(X,[X|_1]).
member(X,[_1|Xs]) :-
member(X,Xs).
:- entry map(A).
:- true pred map(A)
: ( native_props:mshare([[A]]), term(A) )
=> ( native_props:mshare([[A]]), rt0(A) )
+ ( is_det, mut_exclusive ).
map([region(belize,Belize,[Guatemala]),region(guatemala,Guatemala,[Belize,El_Salvador,Honduras]),region(el_salvador,El_Salvador,[Guatemala,Honduras]),region(honduras,Honduras,[Guatemala,El_Salvador,Nicaragua]),region(nicaragua,Nicaragua,[Honduras,Costa_rica]),region(costa_rica,Costa_rica,[Nicaragua,Panama]),region(panama,Panama,[Costa_rica])]).
query :-
map(X),
color_map(X,[red,blue,green]).
:- regtype rt0/1.
rt0([region(belize,A,[B]),region(guatemala,C,[D,E,F]),region(el_salvador,G,[H,I]),region(honduras,J,[K,L,M]),region(nicaragua,N,[O,P]),region(costa_rica,Q,[R,S]),region(panama,T,[U])]) :-
term(A),
term(B),
term(C),
term(D),
term(E),
term(F),
term(G),
term(H),
term(I),
term(J),
term(K),
term(L),
term(M),
term(N),
term(O),
term(P),
term(Q),
term(R),
term(S),
term(T),
term(U).