monadiccp-gecode-0.1: examples/Ring.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
import Control.CP.FD.GecodeExample
main = example_sat_main_single_expr_gecode model
model :: ExampleModel ModelInt
model n = exists $ \col -> do
size col @= n
loopall (0,(n-1)) $ \i -> do
let v0 = col ! i
v1 = col ! ((i+1) `mod` n)
v2 = col ! ((i+2) `mod` n)
2 * v1 @= 2 * v2 - v0
v0 @: (cte (-10), cte 10)
return col