(0) Obligation:
Clauses:
color_map([], X1).
color_map(.(Region, Regions), Colors) :- ','(color_region(Region, Colors), color_map(Regions, Colors)).
color_region(region(X2, 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([], X3).
subset(.(X, Xs), Ys) :- ','(member(X, Ys), subset(Xs, Ys)).
member(X, .(X, X4)).
member(X, .(X5, Xs)) :- member(X, Xs).
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, []))))).
Query: map(a)
(1) PrologToPiTRSViaGraphTransformerProof (SOUND transformation)
Transformed Prolog program to (Pi-)TRS.
(2) Obligation:
Pi-finite rewrite system:
The TRS R consists of the following rules:
mapA_in_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), [])))))))) → mapA_out_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), []))))))))
The argument filtering Pi contains the following mapping:
mapA_in_a(
x1) =
mapA_in_a
mapA_out_a(
x1) =
mapA_out_a
(3) DependencyPairsProof (EQUIVALENT transformation)
Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
P is empty.
The TRS R consists of the following rules:
mapA_in_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), [])))))))) → mapA_out_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), []))))))))
The argument filtering Pi contains the following mapping:
mapA_in_a(
x1) =
mapA_in_a
mapA_out_a(
x1) =
mapA_out_a
We have to consider all (P,R,Pi)-chains
(4) Obligation:
Pi DP problem:
P is empty.
The TRS R consists of the following rules:
mapA_in_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), [])))))))) → mapA_out_a(.(region(belize, T9, .(T10, [])), .(region(guatemala, T10, .(T9, .(T11, .(T12, [])))), .(region(el_salvador, T11, .(T10, .(T12, []))), .(region(honduras, T12, .(T10, .(T11, .(T13, [])))), .(region(nicaragua, T13, .(T12, .(T14, []))), .(region(costa_rica, T14, .(T13, .(T15, []))), .(region(panama, T15, .(T14, [])), []))))))))
The argument filtering Pi contains the following mapping:
mapA_in_a(
x1) =
mapA_in_a
mapA_out_a(
x1) =
mapA_out_a
We have to consider all (P,R,Pi)-chains
(5) PisEmptyProof (EQUIVALENT transformation)
The TRS P is empty. Hence, there is no (P,R,Pi) chain.
(6) YES