-- auxiliary functions: -- MAIN is used to mark the initial goal -- SCC is ised to mark cost centers MAIN x = x SCC _ x = x -- constraint solving (simple generate and test) in Curry: -- graph coloring -- negation of ==: diff :: a -> a -> Success diff x y = (x == y) =:= False {- This is our actual map: ------------------ | | | | | L2 | | | | | L1 |--------| | | | | | L3 | | | | ------------------ -} data Color = Red | Green | Yellow isColor :: Color -> Success isColor Red = success isColor Yellow = success isColor Green = success -- possible colorings: coloring :: Color -> Color -> Color -> Success coloring l1 l2 l3 = isColor l1 & isColor l2 & isColor l3 -- correct coloring: correct :: Color -> Color -> Color -> Success correct l1 l2 l3 = diff l1 l2 & diff l1 l3 & diff l2 l3 -------Main goals-------------------------------------------- -- generate+test solution: goal1 l1 l2 l3 = MAIN (coloring l1 l2 l3 & correct l1 l2 l3) -- test+generate solution: --goal2 l1 l2 l3 = MAIN (correct l1 l2 l3 & coloring l1 l2 l3)