Safe Haskell | None |
---|
- module Data.Expr.Sugar
- data FDSolver s => FDInstance s a
- class (Solver s, Term s (FDIntTerm s), Term s (FDBoolTerm s), Eq (FDBoolSpecType s), Ord (FDBoolSpecType s), Enum (FDBoolSpecType s), Bounded (FDBoolSpecType s), Show (FDBoolSpecType s), Eq (FDIntSpecType s), Ord (FDIntSpecType s), Enum (FDIntSpecType s), Bounded (FDIntSpecType s), Show (FDIntSpecType s), Eq (FDColSpecType s), Ord (FDColSpecType s), Enum (FDColSpecType s), Bounded (FDColSpecType s), Show (FDColSpecType s), Show (FDIntSpec s), Show (FDColSpec s), Show (FDBoolSpec s)) => FDSolver s where
- type FDIntTerm s :: *
- type FDBoolTerm s :: *
- type FDIntSpec s :: *
- type FDBoolSpec s :: *
- type FDColSpec s :: *
- type FDIntSpecType s :: *
- type FDBoolSpecType s :: *
- type FDColSpecType s :: *
- fdIntSpec_const :: EGPar -> (FDIntSpecType s, s (FDIntSpec s))
- fdBoolSpec_const :: EGBoolPar -> (FDBoolSpecType s, s (FDBoolSpec s))
- fdColSpec_const :: EGColPar -> (FDColSpecType s, s (FDColSpec s))
- fdColSpec_list :: [FDIntSpec s] -> (FDColSpecType s, s (FDColSpec s))
- fdIntSpec_term :: FDIntTerm s -> (FDIntSpecType s, s (FDIntSpec s))
- fdBoolSpec_term :: FDBoolTerm s -> (FDBoolSpecType s, s (FDBoolSpec s))
- fdColSpec_size :: EGPar -> (FDColSpecType s, s (FDColSpec s))
- fdIntVarSpec :: FDIntSpec s -> s (Maybe (FDIntTerm s))
- fdBoolVarSpec :: FDBoolSpec s -> s (Maybe (FDBoolTerm s))
- fdTypeReqBool :: s (EGEdge -> [(EGVarId, FDBoolSpecTypeSet s)])
- fdTypeReqInt :: s (EGEdge -> [(EGVarId, FDIntSpecTypeSet s)])
- fdTypeReqCol :: s (EGEdge -> [(EGVarId, FDColSpecTypeSet s)])
- fdTypeVarInt :: s (Set (FDIntSpecType s))
- fdTypeVarBool :: s (Set (FDBoolSpecType s))
- fdSpecify :: Mixin (SpecFn s)
- fdColInspect :: FDColSpec s -> s [FDIntTerm s]
- fdProcess :: Mixin (EGConstraintSpec -> FDSpecInfo s -> FDInstance s ())
- fdEqualBool :: FDBoolSpec s -> FDBoolSpec s -> FDInstance s ()
- fdEqualInt :: FDIntSpec s -> FDIntSpec s -> FDInstance s ()
- fdEqualCol :: FDColSpec s -> FDColSpec s -> FDInstance s ()
- fdConstrainIntTerm :: FDIntTerm s -> Integer -> s (Constraint s)
- fdSplitIntDomain :: FDIntTerm s -> s ([Constraint s], Bool)
- fdSplitBoolDomain :: FDBoolTerm s -> s ([Constraint s], Bool)
- type FDSpecInfo s = ([FDSpecInfoBool s], [FDSpecInfoInt s], [FDSpecInfoCol s])
- data FDSpecInfoBool s = FDSpecInfoBool {
- fdspBoolSpec :: Maybe (FDBoolSpecType s) -> Maybe (FDBoolSpec s)
- fdspBoolVar :: Maybe EGVarId
- fdspBoolVal :: Maybe EGBoolPar
- fdspBoolTypes :: Set (FDBoolSpecType s)
- data FDSpecInfoInt s = FDSpecInfoInt {
- fdspIntSpec :: Maybe (FDIntSpecType s) -> Maybe (FDIntSpec s)
- fdspIntVar :: Maybe EGVarId
- fdspIntVal :: Maybe EGPar
- fdspIntTypes :: Set (FDIntSpecType s)
- data FDSpecInfoCol s = FDSpecInfoCol {
- fdspColSpec :: Maybe (FDColSpecType s) -> Maybe (FDColSpec s)
- fdspColVar :: Maybe EGVarId
- fdspColVal :: Maybe EGColPar
- fdspColTypes :: Set (FDColSpecType s)
- liftFD :: FDSolver s => s a -> FDInstance s a
- addFD :: (Show (Constraint s), FDSolver s) => Constraint s -> FDInstance s ()
- type SpecFn s = EGEdge -> SpecFnRes s
- type SpecFnRes s = ([(Int, EGVarId, Bool, SpecBool s)], [(Int, EGVarId, Bool, SpecInt s)], [(Int, EGVarId, Bool, SpecCol s)])
- data SpecResult t
- = SpecResNone
- | SpecResSpec t
- | SpecResUnify EGVarId
- getBoolSpec_ :: FDSolver s => EGVarId -> FDBoolSpecTypeSet s -> FDInstance s (Maybe (FDBoolSpecType s, FDBoolSpec s))
- getIntSpec_ :: FDSolver s => EGVarId -> FDIntSpecTypeSet s -> FDInstance s (Maybe (FDIntSpecType s, FDIntSpec s))
- getColSpec_ :: FDSolver s => EGVarId -> FDColSpecTypeSet s -> FDInstance s (Maybe (FDColSpecType s, FDColSpec s))
- getBoolSpec :: FDSolver s => EGVarId -> FDInstance s (Maybe (FDBoolSpec s))
- getIntSpec :: FDSolver s => EGVarId -> FDInstance s (Maybe (FDIntSpec s))
- getColSpec :: (Show (FDColSpec s), FDSolver s) => EGVarId -> FDInstance s (Maybe (FDColSpec s))
- getEdge :: FDSolver s => EGEdgeId -> FDInstance s (Maybe EGEdge)
- markEdge :: FDSolver s => EGEdgeId -> FDInstance s ()
- setFailed :: FDSolver s => FDInstance s ()
- getLevel :: FDSolver s => FDInstance s Int
- getIntVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGPar)
- getBoolVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGBoolPar)
- getColVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGColPar)
- getIntTerm :: FDSolver s => [ModelInt] -> FDInstance s [FDIntTerm s]
- getBoolTerm :: FDSolver s => [ModelBool] -> FDInstance s [FDBoolTerm s]
- getColTerm :: FDSolver s => [ModelCol] -> FDColSpecType s -> FDInstance s [FDColSpec s]
- getSingleIntTerm :: FDSolver s => ModelInt -> FDInstance s (FDIntTerm s)
- getDefBoolSpec :: FDSolver s => FDSpecInfoBool s -> FDBoolSpec s
- getDefIntSpec :: FDSolver s => FDSpecInfoInt s -> FDIntSpec s
- getDefColSpec :: FDSolver s => FDSpecInfoCol s -> FDColSpec s
- getFullBoolSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoBool s)
- getFullIntSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoInt s)
- getFullColSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoCol s)
- getColItems :: FDSolver s => ModelCol -> FDColSpecType s -> FDInstance s [FDIntTerm s]
- fdSpecInfo_spec :: FDSolver s => ([Either (FDSpecInfoBool s) (FDBoolSpecType s, FDBoolSpec s)], [Either (FDSpecInfoInt s) (FDIntSpecType s, FDIntSpec s)], [Either (FDSpecInfoCol s) (FDColSpecType s, FDColSpec s)]) -> FDSpecInfo s
- specInfoBoolTerm :: FDSolver s => FDBoolTerm s -> s (FDSpecInfoBool s)
- specInfoIntTerm :: FDSolver s => FDIntTerm s -> s (FDSpecInfoInt s)
- newInt :: FDSolver s => FDInstance s ModelInt
- newBool :: FDSolver s => FDInstance s ModelBool
- newCol :: FDSolver s => FDInstance s ModelCol
- procSubModel :: FDSolver s => EGModel -> (Int -> FDSpecInfoBool s, Int -> FDSpecInfoInt s, Int -> FDSpecInfoCol s) -> FDInstance s ()
- procSubModelEx :: FDSolver s => EGModel -> (Int -> Maybe (FDSpecInfoBool s), Int -> Maybe (FDSpecInfoInt s), Int -> Maybe (FDSpecInfoCol s)) -> FDInstance s ()
- specSubModelEx :: FDSolver s => EGModel -> (Int -> Maybe (FDSpecInfoBool s), Int -> Maybe (FDSpecInfoInt s), Int -> Maybe (FDSpecInfoCol s)) -> FDInstance s (Map EGVarId (FDSpecInfoBool s), Map EGVarId (FDSpecInfoInt s), Map EGVarId (FDSpecInfoCol s))
- runFD :: FDSolver s => FDInstance s a -> s a
- setMinimizeVar :: (Show (FDIntTerm s), FDSolver s) => ModelInt -> FDInstance s ()
- boundMinimize :: (Show (FDIntTerm s), FDSolver s, EnumTerm s (FDIntTerm s), Integral (TermBaseType s (FDIntTerm s))) => NewBound (FDInstance s)
- getMinimizeTerm :: (Show (FDIntTerm s), FDSolver s) => FDInstance s (Maybe (FDIntTerm s))
- getMinimizeVar :: (Show (FDIntTerm s), FDSolver s) => FDInstance s (Maybe ModelInt)
- fdNewvar :: (FDSolver s, Term s t) => FDInstance s (Maybe t)
Documentation
module Data.Expr.Sugar
data FDSolver s => FDInstance s a Source
definition of FDInstance, a Solver wrapper that adds power to post boolean expressions as constraints
Monad s => Monad (FDInstance s) | |
FDSolver s => Solver (FDInstance s) | |
FDSolver s => Term (FDInstance s) ModelCol | |
FDSolver s => Term (FDInstance s) ModelBool | |
FDSolver s => Term (FDInstance s) ModelInt | |
(FDSolver s, EnumTerm s (FDBoolTerm s)) => EnumTerm (FDInstance s) ModelBool | |
(FDSolver s, EnumTerm s (FDIntTerm s)) => EnumTerm (FDInstance s) ModelInt | |
Monad s => MonadState (FDState s) (FDInstance s) | |
CompilableModel (Tree (FDInstance (GecodeWrappedSolver CodegenGecodeSolver)) ModelCol) | |
CompilableModel (FDInstance (GecodeWrappedSolver CodegenGecodeSolver) ModelCol) | |
CompilableModel (FDInstance (GecodeWrappedSolver CodegenGecodeSolver) (SearchSpec ModelInt ModelCol ModelBool)) |
class (Solver s, Term s (FDIntTerm s), Term s (FDBoolTerm s), Eq (FDBoolSpecType s), Ord (FDBoolSpecType s), Enum (FDBoolSpecType s), Bounded (FDBoolSpecType s), Show (FDBoolSpecType s), Eq (FDIntSpecType s), Ord (FDIntSpecType s), Enum (FDIntSpecType s), Bounded (FDIntSpecType s), Show (FDIntSpecType s), Eq (FDColSpecType s), Ord (FDColSpecType s), Enum (FDColSpecType s), Bounded (FDColSpecType s), Show (FDColSpecType s), Show (FDIntSpec s), Show (FDColSpec s), Show (FDBoolSpec s)) => FDSolver s whereSource
A solver needs to be an instance of this FDSolver class in order to create an FDInstance around it.
type FDBoolTerm s :: *Source
type FDBoolSpec s :: *Source
type FDIntSpecType s :: *Source
type FDBoolSpecType s :: *Source
type FDColSpecType s :: *Source
fdIntSpec_const :: EGPar -> (FDIntSpecType s, s (FDIntSpec s))Source
fdBoolSpec_const :: EGBoolPar -> (FDBoolSpecType s, s (FDBoolSpec s))Source
fdColSpec_const :: EGColPar -> (FDColSpecType s, s (FDColSpec s))Source
fdColSpec_list :: [FDIntSpec s] -> (FDColSpecType s, s (FDColSpec s))Source
fdIntSpec_term :: FDIntTerm s -> (FDIntSpecType s, s (FDIntSpec s))Source
fdBoolSpec_term :: FDBoolTerm s -> (FDBoolSpecType s, s (FDBoolSpec s))Source
fdColSpec_size :: EGPar -> (FDColSpecType s, s (FDColSpec s))Source
fdIntVarSpec :: FDIntSpec s -> s (Maybe (FDIntTerm s))Source
fdBoolVarSpec :: FDBoolSpec s -> s (Maybe (FDBoolTerm s))Source
fdTypeReqBool :: s (EGEdge -> [(EGVarId, FDBoolSpecTypeSet s)])Source
fdTypeReqInt :: s (EGEdge -> [(EGVarId, FDIntSpecTypeSet s)])Source
fdTypeReqCol :: s (EGEdge -> [(EGVarId, FDColSpecTypeSet s)])Source
fdTypeVarInt :: s (Set (FDIntSpecType s))Source
fdTypeVarBool :: s (Set (FDBoolSpecType s))Source
fdSpecify :: Mixin (SpecFn s)Source
fdColInspect :: FDColSpec s -> s [FDIntTerm s]Source
fdProcess :: Mixin (EGConstraintSpec -> FDSpecInfo s -> FDInstance s ())Source
fdEqualBool :: FDBoolSpec s -> FDBoolSpec s -> FDInstance s ()Source
fdEqualInt :: FDIntSpec s -> FDIntSpec s -> FDInstance s ()Source
fdEqualCol :: FDColSpec s -> FDColSpec s -> FDInstance s ()Source
fdConstrainIntTerm :: FDIntTerm s -> Integer -> s (Constraint s)Source
fdSplitIntDomain :: FDIntTerm s -> s ([Constraint s], Bool)Source
fdSplitBoolDomain :: FDBoolTerm s -> s ([Constraint s], Bool)Source
FDSolver OvertonFD | |
(GecodeSolver s, ~ * (GecodeConstraint s) (Constraint s)) => FDSolver (GecodeWrappedSolver s) |
type FDSpecInfo s = ([FDSpecInfoBool s], [FDSpecInfoInt s], [FDSpecInfoCol s])Source
data FDSpecInfoBool s Source
FDSpecInfoBool | |
|
(Ord (FDBoolSpec s), Ord (FDBoolSpecType s)) => Eq (FDSpecInfoBool s) | |
(Ord (FDBoolSpec s), Ord (FDBoolSpecType s)) => Ord (FDSpecInfoBool s) | |
Show (FDBoolSpec s) => Show (FDSpecInfoBool s) |
data FDSpecInfoInt s Source
FDSpecInfoInt | |
|
(Ord (FDIntSpec s), Ord (FDIntSpecType s)) => Eq (FDSpecInfoInt s) | |
(Ord (FDIntSpec s), Ord (FDIntSpecType s)) => Ord (FDSpecInfoInt s) | |
Show (FDIntSpec s) => Show (FDSpecInfoInt s) |
data FDSpecInfoCol s Source
FDSpecInfoCol | |
|
(Ord (FDColSpec s), Ord (FDColSpecType s)) => Eq (FDSpecInfoCol s) | |
(Ord (FDColSpec s), Ord (FDColSpecType s)) => Ord (FDSpecInfoCol s) | |
Show (FDColSpec s) => Show (FDSpecInfoCol s) |
liftFD :: FDSolver s => s a -> FDInstance s aSource
lift a monad action for the underlying solver to a monad action for an FDInstance around it
addFD :: (Show (Constraint s), FDSolver s) => Constraint s -> FDInstance s ()Source
type SpecFnRes s = ([(Int, EGVarId, Bool, SpecBool s)], [(Int, EGVarId, Bool, SpecInt s)], [(Int, EGVarId, Bool, SpecCol s)])Source
data SpecResult t Source
SpecResNone | |
SpecResSpec t | |
SpecResUnify EGVarId |
getBoolSpec_ :: FDSolver s => EGVarId -> FDBoolSpecTypeSet s -> FDInstance s (Maybe (FDBoolSpecType s, FDBoolSpec s))Source
getIntSpec_ :: FDSolver s => EGVarId -> FDIntSpecTypeSet s -> FDInstance s (Maybe (FDIntSpecType s, FDIntSpec s))Source
getColSpec_ :: FDSolver s => EGVarId -> FDColSpecTypeSet s -> FDInstance s (Maybe (FDColSpecType s, FDColSpec s))Source
getBoolSpec :: FDSolver s => EGVarId -> FDInstance s (Maybe (FDBoolSpec s))Source
getIntSpec :: FDSolver s => EGVarId -> FDInstance s (Maybe (FDIntSpec s))Source
getColSpec :: (Show (FDColSpec s), FDSolver s) => EGVarId -> FDInstance s (Maybe (FDColSpec s))Source
getEdge :: FDSolver s => EGEdgeId -> FDInstance s (Maybe EGEdge)Source
markEdge :: FDSolver s => EGEdgeId -> FDInstance s ()Source
setFailed :: FDSolver s => FDInstance s ()Source
getLevel :: FDSolver s => FDInstance s IntSource
getIntVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGPar)Source
getBoolVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGBoolPar)Source
getColVal :: FDSolver s => EGVarId -> FDInstance s (Maybe EGColPar)Source
getIntTerm :: FDSolver s => [ModelInt] -> FDInstance s [FDIntTerm s]Source
getBoolTerm :: FDSolver s => [ModelBool] -> FDInstance s [FDBoolTerm s]Source
getColTerm :: FDSolver s => [ModelCol] -> FDColSpecType s -> FDInstance s [FDColSpec s]Source
getSingleIntTerm :: FDSolver s => ModelInt -> FDInstance s (FDIntTerm s)Source
getDefBoolSpec :: FDSolver s => FDSpecInfoBool s -> FDBoolSpec sSource
getDefIntSpec :: FDSolver s => FDSpecInfoInt s -> FDIntSpec sSource
getDefColSpec :: FDSolver s => FDSpecInfoCol s -> FDColSpec sSource
getFullBoolSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoBool s)Source
getFullIntSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoInt s)Source
getFullColSpec :: (MonadState (FDState s) m, FDSolver s) => EGVarId -> m (FDSpecInfoCol s)Source
getColItems :: FDSolver s => ModelCol -> FDColSpecType s -> FDInstance s [FDIntTerm s]Source
fdSpecInfo_spec :: FDSolver s => ([Either (FDSpecInfoBool s) (FDBoolSpecType s, FDBoolSpec s)], [Either (FDSpecInfoInt s) (FDIntSpecType s, FDIntSpec s)], [Either (FDSpecInfoCol s) (FDColSpecType s, FDColSpec s)]) -> FDSpecInfo sSource
specInfoBoolTerm :: FDSolver s => FDBoolTerm s -> s (FDSpecInfoBool s)Source
specInfoIntTerm :: FDSolver s => FDIntTerm s -> s (FDSpecInfoInt s)Source
newInt :: FDSolver s => FDInstance s ModelIntSource
newBool :: FDSolver s => FDInstance s ModelBoolSource
newCol :: FDSolver s => FDInstance s ModelColSource
procSubModel :: FDSolver s => EGModel -> (Int -> FDSpecInfoBool s, Int -> FDSpecInfoInt s, Int -> FDSpecInfoCol s) -> FDInstance s ()Source
procSubModelEx :: FDSolver s => EGModel -> (Int -> Maybe (FDSpecInfoBool s), Int -> Maybe (FDSpecInfoInt s), Int -> Maybe (FDSpecInfoCol s)) -> FDInstance s ()Source
specSubModelEx :: FDSolver s => EGModel -> (Int -> Maybe (FDSpecInfoBool s), Int -> Maybe (FDSpecInfoInt s), Int -> Maybe (FDSpecInfoCol s)) -> FDInstance s (Map EGVarId (FDSpecInfoBool s), Map EGVarId (FDSpecInfoInt s), Map EGVarId (FDSpecInfoCol s))Source
runFD :: FDSolver s => FDInstance s a -> s aSource
setMinimizeVar :: (Show (FDIntTerm s), FDSolver s) => ModelInt -> FDInstance s ()Source
boundMinimize :: (Show (FDIntTerm s), FDSolver s, EnumTerm s (FDIntTerm s), Integral (TermBaseType s (FDIntTerm s))) => NewBound (FDInstance s)Source
getMinimizeTerm :: (Show (FDIntTerm s), FDSolver s) => FDInstance s (Maybe (FDIntTerm s))Source
getMinimizeVar :: (Show (FDIntTerm s), FDSolver s) => FDInstance s (Maybe ModelInt)Source