-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Constraint Programming
--
-- Monadic Constraint Programming framework
@package monadiccp
@version 0.6
module Control.CP.PriorityQueue
data (Ord k) => PriorityQueue k a
empty :: (Ord k) => PriorityQueue k a
is_empty :: PriorityQueue t t1 -> Bool
minKey :: (Ord k) => PriorityQueue k a -> k
minKeyValue :: (Ord k) => PriorityQueue k a -> (k, a)
insert :: (Ord k) => k -> a -> PriorityQueue k a -> PriorityQueue k a
deleteMin :: (Ord k) => PriorityQueue k a -> ((k, a), PriorityQueue k a)
deleteMinAndInsert :: (Ord k) => k -> a -> PriorityQueue k a -> PriorityQueue k a
module Control.CP.Queue
class Queue q where { type family Elem q :: *; }
emptyQ :: (Queue q) => q -> q
isEmptyQ :: (Queue q) => q -> Bool
popQ :: (Queue q) => q -> (Elem q, q)
pushQ :: (Queue q) => Elem q -> q -> q
instance (Ord a) => Queue (PriorityQueue a (a, b, c))
instance Queue (Seq a)
instance Queue [a]
module Control.CP.Mixin
type Mixin a = a -> a -> a
(<@>) :: Mixin a -> Mixin a -> Mixin a
mixin :: Mixin a -> a
mixinConst :: a -> a -> a -> a
mixinId :: Mixin a
module Control.CP.Solver
class (Monad solver) => Solver solver where { type family Constraint solver :: *; type family Label solver :: *; }
add :: (Solver solver) => Constraint solver -> solver Bool
run :: (Solver solver) => solver a -> a
mark :: (Solver solver) => solver (Label solver)
goto :: (Solver solver) => Label solver -> solver ()
class (Solver solver) => Term solver term where { type family Help solver term; }
newvar :: (Term solver term) => solver term
help :: (Term solver term) => solver () -> term -> Help solver term
instance (Monoid w, Term s t) => Term (WriterT w s) t
instance (Monoid w, Solver s) => Solver (WriterT w s)
-- | This module provides a Herbrand solver.
--
-- The type of terms is parameterized by the HTerm type class.
module Control.CP.Herbrand.Herbrand
-- | Herbrand terms
class (Ord (VarId t)) => HTerm t where { type family VarId t :: *; data family VarSupply t :: *; }
varSupply :: (HTerm t) => VarSupply t
supplyVar :: (HTerm t) => VarSupply t -> (t, VarSupply t)
mkVar :: (HTerm t) => VarId t -> t
isVar :: (HTerm t) => t -> Maybe (VarId t)
children :: (HTerm t) => t -> ([t], [t] -> t)
nonvar_unify :: (HTerm t, MonadState (HState t m) m) => t -> t -> m Bool
-- | Herbrand monad
data Herbrand t a
Herbrand :: State (HState t (Herbrand t)) a -> Herbrand t a
unH :: Herbrand t a -> State (HState t (Herbrand t)) a
failure :: (Monad m) => m Bool
success :: (Monad m) => m Bool
-- | unify two arbitrary terms
unify :: (HTerm t, MonadState (HState t m) m) => t -> t -> m Bool
shallow_normalize :: (HTerm t, MonadState (HState t m) m) => t -> m t
registerAction :: (HTerm t, MonadState (HState t m) m) => t -> m Bool -> m ()
data HState t m
data Unify t
initState :: (HTerm t) => HState t m
addH :: (HTerm t, MonadState (HState t m) m) => Unify t -> m Bool
newvarH :: (HTerm t, MonadState (HState t m) m) => m t
instance (HTerm t) => Term (Herbrand t) t
instance (HTerm t) => Solver (Herbrand t)
instance Applicative (Herbrand t)
instance Functor (Herbrand t)
instance MonadState (HState t (Herbrand t)) (Herbrand t)
instance Monad (Herbrand t)
module Control.CP.Herbrand.PrologTerm
data PrologTerm
PTerm :: String -> [PrologTerm] -> PrologTerm
PVar :: Int -> PrologTerm
instance Eq PrologTerm
instance Show PrologTerm
instance HTerm PrologTerm
module Control.CP.Herbrand.Prolog
data Prolog a
data PConstraint
(:=) :: PrologTerm -> PrologTerm -> PConstraint
NotFunctor :: PrologTerm -> String -> PConstraint
(:/=) :: PrologTerm -> PrologTerm -> PConstraint
instance Monad Prolog
instance Term Prolog PrologTerm
instance Solver Prolog
-- | This module provides a Herbrand solver as a monad transformer.
--
-- The constraints offered are Either (Unify t) (Constraint m)
-- where m is the transformed solver. Hence, both unification and
-- the underlying solver's constraints are available.
--
-- The terms offered are L t1 where t1 is the Herbrand
-- solver's terms and R t2 where t2 are the underlying
-- solver's types.
module Control.CP.Herbrand.HerbrandT
newtype HerbrandT t s a
HerbrandT :: StateT (HState t (HerbrandT t s)) s a -> HerbrandT t s a
unHT :: HerbrandT t s a -> StateT (HState t (HerbrandT t s)) s a
data L a
L :: a -> L a
data R a
R :: a -> R a
instance (HTerm t, Solver s, Term s st) => Term (HerbrandT t s) (R st)
instance (HTerm t, Solver s) => Term (HerbrandT t s) (L t)
instance (Solver s, HTerm t) => Solver (HerbrandT t s)
instance (Solver s) => MonadState (HState t (HerbrandT t s)) (HerbrandT t s)
instance MonadTrans (HerbrandT t)
instance (Monad s) => Monad (HerbrandT t s)
module Control.CP.SearchTree
data Tree s a
Fail :: Tree s a
Return :: a -> Tree s a
Try :: Tree s a -> Tree s a -> Tree s a
Add :: Constraint s -> Tree s a -> Tree s a
NewVar :: (t -> Tree s a) -> Tree s a
Label :: s (Tree s a) -> Tree s a
transformTree :: (Solver s) => Mixin (Tree s a -> Tree s a)
bindTree :: (Solver s) => Tree s a -> (a -> Tree s b) -> Tree s b
insertTree :: (Solver s) => Tree s a -> Tree s () -> Tree s a
(/\) :: (MonadTree tree) => tree a -> tree b -> tree b
true :: (MonadTree tree) => tree ()
disj :: (MonadTree tree) => [tree a] -> tree a
conj :: (MonadTree tree) => [tree ()] -> tree ()
disj2 :: (MonadTree tree) => [tree a] -> tree a
prim :: (MonadTree tree) => TreeSolver tree a -> tree a
addC :: (MonadTree tree) => Constraint (TreeSolver tree) -> tree ()
addT :: (MonadTree tree) => Constraint (TreeSolver tree) -> tree Bool
exist :: (MonadTree tree, Term (TreeSolver tree) t) => Int -> ([t] -> tree a) -> tree a
forall :: (MonadTree tree, Term (TreeSolver tree) t) => [t] -> (t -> tree ()) -> tree ()
-- | show
indent :: Int -> String
showTree :: (Show (Constraint s), Show a, Solver s) => Int -> Tree s a -> s String
-- | Generalization of the search tree data type, allowing monad
-- transformer decoration.
class (Monad m, Solver (TreeSolver m)) => MonadTree m
addTo :: (MonadTree m) => Constraint (TreeSolver m) -> m a -> m a
false :: (MonadTree m) => m a
(\/) :: (MonadTree m) => m a -> m a -> m a
exists :: (MonadTree m, Term (TreeSolver m) t) => (t -> m a) -> m a
label :: (MonadTree m) => (TreeSolver m) (m a) -> m a
untree :: (Solver s) => v -> Tree s v -> s v
instance (MonadTree t) => MonadTree (StateT s t)
instance (Monoid w, MonadTree t) => MonadTree (WriterT w t)
instance (MonadTree t) => MonadTree (ReaderT env t)
instance Show (Tree s a)
instance (Solver solver) => MonadTree (Tree solver)
instance (Solver s) => Monad (Tree s)
instance (Solver s) => Functor (Tree s)
module Control.CP.Transformers
eval :: (Solver solver, Queue q, (Elem q) ~ (Label solver, Tree solver (ForResult t), TreeState t), Transformer t, (ForSolver t) ~ solver) => Tree solver (ForResult t) -> q -> t -> solver (Int, [ForResult t])
eval' :: SearchSig solver q t (ForResult t)
continue :: ContinueSig solver q t (ForResult t)
data NodeBoundedST solver :: (* -> *) a
data DepthBoundedST solver :: (* -> *) a
class Transformer t where { type family EvalState t :: *; type family TreeState t :: *; type family ForSolver t :: * -> *; type family ForResult t :: *; { endT i wl t es = return (i, []) returnT i wl t es = continue i wl t es nextT = eval' rightT = leftT leftT _ _ = id } }
leftT :: (Transformer t) => t -> EvalState t -> TreeState t -> TreeState t
rightT :: (Transformer t) => t -> EvalState t -> TreeState t -> TreeState t
nextT :: (Transformer t) => SearchSig (ForSolver t) q t (ForResult t)
initT :: (Transformer t) => t -> Tree (ForSolver t) (ForResult t) -> (ForSolver t) (EvalState t, TreeState t)
returnT :: (Transformer t) => ContinueSig solver q t (ForResult t)
endT :: (Transformer t) => ContinueSig solver q t (ForResult t)
instance (Solver solver) => Transformer (NodeBoundedST solver a)
instance (Solver solver) => Transformer (DepthBoundedST solver a)
module Control.CP.ComposableTransformers
solve :: (Queue q, Solver solver, CTransformer c, (CForSolver c) ~ solver, (Elem q) ~ (Label solver, Tree solver (CForResult c), CTreeState c)) => q -> c -> Tree solver (CForResult c) -> (Int, [CForResult c])
type NewBound solver = solver (Bound solver)
class (Solver (CForSolver c)) => CTransformer c where { type family CTreeState c :: *; type family CForSolver c :: * -> *; type family CForResult c :: *; { completeCT _ _ = True returnCT = continueCT nextCT = evalCT rightCT = leftCT leftCT _ = id } }
data RestartST es ts solver :: (* -> *) a
RestartST :: [SealedCST es ts solver a] -> (Tree solver a -> solver (Tree solver a)) -> RestartST es ts a
data SealedCST es ts solver a
Seal :: c -> SealedCST (CEvalState c) (CTreeState c) (CForSolver c) (CForResult c)
newtype CNodeBoundedST solver :: (* -> *) a
CNBST :: Int -> CNodeBoundedST a
newtype CDepthBoundedST solver :: (* -> *) a
CDBST :: Int -> CDepthBoundedST a
newtype CBranchBoundST solver :: (* -> *) a
CBBST :: (NewBound solver) -> CBranchBoundST a
data CFirstSolutionST solver :: (* -> *) a
CFSST :: CFirstSolutionST a
data CIdentityCST solver :: (* -> *) a
CIST :: CIdentityCST a
newtype CRandomST solver :: (* -> *) a
CRST :: Int -> CRandomST a
newtype CLimitedDiscrepancyST solver :: (* -> *) a
CLDST :: Int -> CLimitedDiscrepancyST a
instance (Solver solver) => Transformer (RestartST es ts solver a)
instance (Solver solver) => CTransformer (SealedCST es ts solver a)
instance (Solver solver) => CTransformer (CBranchBoundST solver a)
instance (Solver solver) => CTransformer (Composition es ts solver a)
instance (Solver solver) => CTransformer (CFirstSolutionST solver a)
instance (Solver solver) => CTransformer (CIdentityCST solver a)
instance (Solver solver) => CTransformer (CRandomST solver a)
instance (Solver solver) => CTransformer (CLimitedDiscrepancyST solver a)
instance (Solver solver) => CTransformer (CDepthBoundedST solver a)
instance (Solver solver) => CTransformer (CNodeBoundedST solver a)
instance (Solver solver) => Transformer (TStack es ts solver a)
module Control.CP.EnumTerm
class (Term s t, Enum (TermDomain s t)) => EnumTerm s t where { type family TermDomain s t :: *; { enumerate l = label firstfail l label o l = Label $ do { x <- o l; split_domains x } split_domains [] = return $ return () split_domains [a] = split_domain a split_domains (a : b) = do { ta <- split_domain a; tb <- split_domains b; return $ ta /\ tb } split_domain v = do { let rec tree = do { tree; Label $ do { x <- get_value v; case x of { Nothing -> split_domain v Just _ -> return $ return () } } }; lst <- split_domain_partial v; return $ levelList $ map rec lst } } }
get_domain_size :: (EnumTerm s t) => t -> s Int
get_value :: (EnumTerm s t) => t -> s (Maybe (TermDomain s t))
split_domain_partial :: (EnumTerm s t) => t -> s [Tree s ()]
split_domain :: (EnumTerm s t) => t -> s (Tree s ())
split_domains :: (EnumTerm s t) => [t] -> s (Tree s ())
label :: (EnumTerm s t) => ([t] -> s [t]) -> [t] -> Tree s ()
enumerate :: (EnumTerm s t) => [t] -> Tree s ()
in_order :: (Monad m) => a -> m a
firstfail :: (EnumTerm m a) => [a] -> m [a]
middleout :: [a] -> [a]
endsout :: [a] -> [a]
interleave :: [t] -> [t] -> [t]
assignment :: (EnumTerm s t) => t -> Tree s (TermDomain s t)
assignments :: (EnumTerm s t) => [t] -> Tree s [TermDomain s t]
module Control.CP.FD.Expr
data Expr t
Term :: t -> Expr t
Const :: Integer -> Expr t
Plus :: (Expr t) -> (Expr t) -> Expr t
Minus :: (Expr t) -> (Expr t) -> Expr t
Mult :: (Expr t) -> (Expr t) -> Expr t
Div :: (Expr t) -> (Expr t) -> Expr t
Mod :: (Expr t) -> (Expr t) -> Expr t
Abs :: (Expr t) -> Expr t
class ToExpr tt t
toExpr :: (ToExpr tt t) => t -> Expr tt
newtype ExprKey s
ExprKey :: (Expr s) -> ExprKey s
unExprKey :: ExprKey s -> Expr s
instance (Eq s) => Eq (ExprKey s)
instance (Show s) => Show (ExprKey s)
instance (Show t) => Show (Expr t)
instance (Eq t) => Eq (Expr t)
instance (Ord s) => Ord (ExprKey s)
instance ToExpr t t
instance ToExpr t (Expr t)
instance ToExpr tt Int
instance ToExpr tt Integer
instance (Eq s, Show s) => Integral (Expr s)
instance (Eq s, Show s) => Enum (Expr s)
instance (Eq s, Show s) => Real (Expr s)
instance (Eq s, Show s) => Ord (Expr s)
instance (Eq s, Show s) => Num (Expr s)
module Control.CP.FD.FD
class (Show (FDTerm s), Eq (FDTerm s), Term s (FDTerm s)) => FDSolver s where { type family FDTerm s :: *; { specific_fresh_var = mixinId specific_decompose = mixinId } }
specific_compile_constraint :: (FDSolver s) => Mixin (FDConstraint s -> Tree s Bool)
specific_decompose :: (FDSolver s) => Mixin (Expr (FDTerm s) -> Tree s (FDTerm s))
specific_fresh_var :: (FDSolver s) => Mixin (Tree s (FDTerm s))
fresh_var :: (FDSolver s) => Tree s (FDTerm s)
decompose :: (FDSolver s) => Expr (FDTerm s) -> Tree s (FDTerm s)
compile_constraint :: (FDSolver s) => FDConstraint s -> Tree s Bool
type FDExpr s = Expr (FDTerm s)
data (Show (FDTerm s)) => FDConstraint s
Less :: (Expr (FDTerm s)) -> (Expr (FDTerm s)) -> FDConstraint s
Diff :: (Expr (FDTerm s)) -> (Expr (FDTerm s)) -> FDConstraint s
Same :: (Expr (FDTerm s)) -> (Expr (FDTerm s)) -> FDConstraint s
Dom :: (Expr (FDTerm s)) -> Integer -> Integer -> FDConstraint s
AllDiff :: [Expr (FDTerm s)] -> FDConstraint s
Sorted :: [Expr (FDTerm s)] -> Bool -> FDConstraint s
newtype FDWrapper s a
FDWrapper :: s a -> FDWrapper s a
subFD :: FDWrapper s a -> s a
type FDTree s a = Tree (FDWrapper s) a
newtype FDLabel s
FDLabel :: (Label s) -> FDLabel s
wrap :: (FDSolver s) => Tree s a -> Tree (FDWrapper s) a
unwrap :: (FDSolver s) => Tree (FDWrapper s) a -> Tree s a
(@:) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Integral t, Integral t1, Show (FDTerm s)) => Expr (FDTerm s) -> (t, t1) -> tree ()
(@<) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@>) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@<=) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Eq (FDTerm s), Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@>=) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Eq (FDTerm s), Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@=) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@/=) :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => Expr (FDTerm s) -> Expr (FDTerm s) -> tree ()
(@+) :: (ToExpr tt t, ToExpr tt t1, Eq tt, Show tt) => t -> t1 -> Expr tt
(@-) :: (ToExpr tt t, ToExpr tt t1, Eq tt, Show tt) => t -> t1 -> Expr tt
(@*) :: (ToExpr tt t, ToExpr tt t1, Eq tt, Show tt) => t -> t1 -> Expr tt
(@/) :: (ToExpr tt t, ToExpr tt t1, Eq tt, Show tt) => t -> t1 -> Expr tt
(@%) :: (ToExpr tt t, ToExpr tt t1, Eq tt, Show tt) => t -> t1 -> Expr tt
cte :: (Num a, Integral a1) => a1 -> a
allDiff :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => [Expr (FDTerm s)] -> tree ()
sorted :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => [Expr (FDTerm s)] -> tree ()
sSorted :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Show (FDTerm s)) => [Expr (FDTerm s)] -> tree ()
allin :: ((FDConstraint s) ~ (Constraint (TreeSolver tree)), MonadTree tree, Integral t, Integral t1, Show (FDTerm s)) => [Expr (FDTerm s)] -> (t, t1) -> tree ()
instance (Show (FDTerm s)) => Show (FDConstraint s)
instance (FDTerm s ~ t, FDSolver s, Eq t, EnumTerm s t, Integral (TermDomain s t)) => EnumTerm (FDWrapper s) (Expr t)
instance (t ~ Expr (FDTerm s), FDSolver s) => Term (FDWrapper s) t
instance (FDSolver s) => Solver (FDWrapper s)
instance (FDSolver s) => Monad (FDWrapper s)
module Control.CP.FD.Gecode.Common
-- | Gecode terms
class GTerm t
getVarId :: (GTerm t) => t -> Maybe Int
getIntValue :: (GTerm t) => t -> Maybe Integer
getDefBounds :: (GTerm t) => t -> (Integer, Integer)
data GType
TypeInt :: GType
TypeBool :: GType
-- | integer terms
data IntTerm
IntVar :: Int -> IntTerm
IntConst :: Integer -> IntTerm
-- | boolean terms
data BoolTerm
BoolVar :: Int -> BoolTerm
BoolConst :: Bool -> BoolTerm
-- | Gecode constraints
data GConstraint
CDiff :: t -> t -> GConstraint
CSame :: t -> t -> GConstraint
CRel :: IntTerm -> GOperator -> IntTerm -> GConstraint
CMult :: IntTerm -> IntTerm -> IntTerm -> GConstraint
CAbs :: IntTerm -> IntTerm -> GConstraint
CDiv :: IntTerm -> IntTerm -> IntTerm -> GConstraint
CMod :: IntTerm -> IntTerm -> IntTerm -> GConstraint
CValue :: IntTerm -> Integer -> GConstraint
CDom :: IntTerm -> Integer -> Integer -> GConstraint
CLinear :: [(IntTerm, Integer)] -> GOperator -> Integer -> GConstraint
CAllDiff :: [IntTerm] -> GConstraint
CSorted :: [IntTerm] -> Bool -> GConstraint
data GOperator
OEqual :: GOperator
ODiff :: GOperator
OLess :: GOperator
-- | Gecode FDSolver instance
class (Solver s, Term s IntTerm) => GecodeSolver s
setVarImplicit :: (GecodeSolver s) => IntTerm -> Bool -> s ()
caching_decompose :: (GecodeSolver s, GecodeSolver s) => Mixin (Expr (FDTerm s) -> Tree s IntTerm)
-- | utility
orElse :: Maybe a -> Maybe a -> Maybe a
-- | linear constraint compilation
linearCompile :: (FDSolver s, (Constraint s) ~ GConstraint, (FDTerm s) ~ IntTerm) => Mixin (FDConstraint s -> Tree s Bool)
-- | basic compilation
basicCompile :: (FDSolver s, (Constraint s) ~ GConstraint, (FDTerm s) ~ IntTerm) => Mixin (FDConstraint s -> Tree s Bool)
instance Eq BoolTerm
instance Eq IntTerm
instance Show GType
instance Eq GType
instance Show GOperator
instance Show GConstraint
instance GTerm BoolTerm
instance Show BoolTerm
instance GTerm IntTerm
instance Show IntTerm
instance Ord IntTerm
module Control.CP.FD.Gecode.CodegenSolver
-- | CodegenSolver monad definition
newtype CodegenSolver a
CodegenSolver :: State Store a -> CodegenSolver a
state :: CodegenSolver a -> State Store a
-- | CodegenSolver compilation
compile :: Tree CodegenSolver a -> Store
data Store
Store :: Int -> [VarData] -> StoreNode -> [Bool] -> Map (ExprKey (FDTerm CodegenSolver)) Int -> Store
vars :: Store -> Int
vardata :: Store -> [VarData]
ctree :: Store -> StoreNode
cpath :: Store -> [Bool]
cexpr :: Store -> Map (ExprKey (FDTerm CodegenSolver)) Int
-- | StoreNode represents a node in the search tree. * Each node adds new
-- constraints and variables. * A node is a leaf node or an internal node
data StoreNode
StoreNode :: [GConstraint] -> [VarBoundPropagator] -> [Int] -> StoreNodeType -> StoreNode
-- | new constraints added in this node
cons :: StoreNode -> [GConstraint]
-- | new bound-generator functions in this node
nbounds :: StoreNode -> [VarBoundPropagator]
-- | id's of variables added in this node
nvars :: StoreNode -> [Int]
-- | either no children, or one left and one right child
dis :: StoreNode -> StoreNodeType
data StoreNodeType
SNLeaf :: StoreNodeType
SNIntl :: StoreNode -> StoreNode -> StoreNodeType
getVarType :: Store -> Int -> GType
isVarImplicit :: Store -> Int -> Bool
data VarBound
VarBound :: VarId -> LowerBound -> UpperBound -> VarBound
varid :: VarBound -> VarId
lbound :: VarBound -> LowerBound
ubound :: VarBound -> UpperBound
getAllBounds :: Store -> VarBoundMap
instance Show Store
instance Show VarData
instance Show StoreNodeType
instance Show VarBound
instance Eq VarBound
instance Monad CodegenSolver
instance MonadState Store CodegenSolver
instance FDSolver CodegenSolver
instance GecodeSolver CodegenSolver
instance Show StoreNode
instance Term CodegenSolver BoolTerm
instance Term CodegenSolver IntTerm
instance Solver CodegenSolver
module Control.CP.FD.Gecode.Translate
generate_gecode :: Tree CodegenSolver a -> String
module Control.CP.FD.OvertonFD.OvertonFD
data OvertonFD a
fd_objective :: OvertonFD FDVar
fd_domain :: FDVar -> OvertonFD [Int]
data FDVar
data OConstraint
OHasValue :: FDVar -> Int -> OConstraint
OSame :: FDVar -> FDVar -> OConstraint
ODiff :: FDVar -> FDVar -> OConstraint
OLess :: FDVar -> FDVar -> OConstraint
OAdd :: FDVar -> FDVar -> FDVar -> OConstraint
OSub :: FDVar -> FDVar -> FDVar -> OConstraint
OMult :: FDVar -> FDVar -> FDVar -> OConstraint
OAbs :: FDVar -> FDVar -> OConstraint
instance Show FDState
instance Ord FDVar
instance Eq FDVar
instance Show FDVar
instance Monad OvertonFD
instance MonadState FDState OvertonFD
instance MonadPlus OvertonFD
instance Ord FDState
instance Eq FDState
instance Show VarInfo
instance EnumTerm OvertonFD FDVar
instance Term OvertonFD FDVar
instance Solver OvertonFD
module Control.CP.FD.OvertonFD.Sugar
newBound :: NewBound OvertonFD
newBoundBis :: NewBound OvertonFD
restart :: (Queue q, Solver solver, CTransformer c, (CForSolver c) ~ solver, (Elem q) ~ (Label solver, Tree solver (CForResult c), CTreeState c)) => q -> [c] -> Tree solver (CForResult c) -> (Int, [CForResult c])
restartOpt :: (Queue q, CTransformer c, (CForSolver c) ~ OvertonFD, (Elem q) ~ (Label OvertonFD, Tree OvertonFD (CForResult c), CTreeState c)) => q -> [c] -> Tree OvertonFD (CForResult c) -> (Int, [CForResult c])
instance FDSolver OvertonFD
module Control.CP.FD.Solvers
as_overtonfd :: Tree (FDWrapper OvertonFD) a -> Tree (FDWrapper OvertonFD) a
as_gecode_codegen :: Tree (FDWrapper CodegenSolver) a -> Tree CodegenSolver a
pfs :: (Ord a) => PriorityQueue a (a, b, c)
nb :: Int -> CNodeBoundedST s a
db :: Int -> CDepthBoundedST s a
bb :: NewBound s -> CBranchBoundST s a
fs :: CFirstSolutionST s a
it :: CIdentityCST s a
ra :: Int -> CRandomST s a
ld :: Int -> CLimitedDiscrepancyST s a
module Control.CP.FD.Example.Example
example_main :: (forall s. (FDSolver s) => [String] -> FDTree s [FDExpr s]) -> IO ()
example_main_void :: (forall s. (FDSolver s) => FDTree s [FDExpr s]) -> IO ()
example_main_single :: (Read n) => (forall s. (FDSolver s) => n -> FDTree s [FDExpr s]) -> IO ()
type FDModel = (FDSolver s) => Tree (FDWrapper s) [FDExpr s]