{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}

{- 
 - 	Monadic Constraint Programming
 - 	http://www.cs.kuleuven.be/~toms/Haskell/
 - 	Tom Schrijvers & Pieter Wuille
 -}

import Control.CP.FD.GecodeExample

main = example_sat_main_void_gecode model

model :: ExampleModel ()
model _ = exists $ \col -> do
  [a,b] <- colList col 2
  a @: (cte 1, cte 5)
  b @: (cte 0, cte 4)
  a - b @= 1
  (a @= 2) @|| (a @= 3) @|| (a @= 4)
  return col