Safe Haskell | None |
---|---|
Language | Haskell98 |
Documentation
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]) Source #
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]) Source #
data Composition es ts solver a where Source #
(:-) :: (CTransformer c1, CTransformer c2, CForSolver c1 ~ solver, CForSolver c2 ~ solver, CForResult c1 ~ a, CForResult c2 ~ a) => c1 -> c2 -> Composition (CEvalState c1, CEvalState c2) (CTreeState c1, CTreeState c2) solver a |
Solver solver => CTransformer (Composition es ts solver a) Source # | |
type CEvalState (Composition es ts solver a) :: * type CTreeState (Composition es ts solver a) :: * Source # type CForSolver (Composition es ts solver a) :: * -> * Source # type CForResult (Composition es ts solver a) :: * Source # initCT :: Composition es ts solver a -> (CEvalState (Composition es ts solver a), CTreeState (Composition es ts solver a)) leftCT :: Composition es ts solver a -> CTreeState (Composition es ts solver a) -> CTreeState (Composition es ts solver a) rightCT :: Composition es ts solver a -> CTreeState (Composition es ts solver a) -> CTreeState (Composition es ts solver a) nextCT :: Tree (CForSolver (Composition es ts solver a)) (CForResult (Composition es ts solver a)) -> Composition es ts solver a -> CEvalState (Composition es ts solver a) -> CTreeState (Composition es ts solver a) -> EVAL (Composition es ts solver a) (CForResult (Composition es ts solver a)) -> CONTINUE (Composition es ts solver a) (CForResult (Composition es ts solver a)) -> EXIT (Composition es ts solver a) (CForResult (Composition es ts solver a)) -> CForSolver (Composition es ts solver a) (Int, [CForResult (Composition es ts solver a)]) returnCT :: Composition es ts solver a -> CEvalState (Composition es ts solver a) -> CONTINUE (Composition es ts solver a) (CForResult (Composition es ts solver a)) -> EXIT (Composition es ts solver a) (CForResult (Composition es ts solver a)) -> CForSolver (Composition es ts solver a) (Int, [CForResult (Composition es ts solver a)]) completeCT :: Composition es ts solver a -> CEvalState (Composition es ts solver a) -> Bool | |
type CTreeState (Composition es ts solver a) Source # | |
type CForSolver (Composition es ts solver a) Source # | |
type CForResult (Composition es ts solver a) Source # | |
class Solver (CForSolver c) => CTransformer c Source #
initCT
data RestartST es ts (solver :: * -> *) a Source #
Solver solver => Transformer (RestartST es ts solver a) Source # | |
type EvalState (RestartST es ts solver a) :: * Source # type TreeState (RestartST es ts solver a) :: * Source # type ForSolver (RestartST es ts solver a) :: * -> * Source # leftT :: RestartST es ts solver a -> EvalState (RestartST es ts solver a) -> TreeState (RestartST es ts solver a) -> TreeState (RestartST es ts solver a) Source # rightT :: RestartST es ts solver a -> EvalState (RestartST es ts solver a) -> TreeState (RestartST es ts solver a) -> TreeState (RestartST es ts solver a) Source # nextT :: (Solver (ForSolver (RestartST es ts solver a)), Queue q, Transformer (RestartST es ts solver a), (* ~ Elem q) (Label (ForSolver (RestartST es ts solver a)), Tree (ForSolver (RestartST es ts solver a)) (ForResult (RestartST es ts solver a)), TreeState (RestartST es ts solver a)), ((* -> *) ~ ForSolver (RestartST es ts solver a)) (ForSolver (RestartST es ts solver a))) => Int -> Tree (ForSolver (RestartST es ts solver a)) (ForResult (RestartST es ts solver a)) -> q -> RestartST es ts solver a -> EvalState (RestartST es ts solver a) -> TreeState (RestartST es ts solver a) -> ForSolver (RestartST es ts solver a) (Int, [ForResult (RestartST es ts solver a)]) Source # initT :: RestartST es ts solver a -> Tree (ForSolver (RestartST es ts solver a)) (ForResult (RestartST es ts solver a)) -> ForSolver (RestartST es ts solver a) (EvalState (RestartST es ts solver a), TreeState (RestartST es ts solver a)) Source # returnT :: (Solver solver, Queue q, Transformer (RestartST es ts solver a), (* ~ Elem q) (Label solver, Tree solver (ForResult (RestartST es ts solver a)), TreeState (RestartST es ts solver a)), ((* -> *) ~ ForSolver (RestartST es ts solver a)) solver) => Int -> q -> RestartST es ts solver a -> EvalState (RestartST es ts solver a) -> solver (Int, [ForResult (RestartST es ts solver a)]) Source # endT :: (Solver solver, Queue q, Transformer (RestartST es ts solver a), (* ~ Elem q) (Label solver, Tree solver (ForResult (RestartST es ts solver a)), TreeState (RestartST es ts solver a)), ((* -> *) ~ ForSolver (RestartST es ts solver a)) solver) => Int -> q -> RestartST es ts solver a -> EvalState (RestartST es ts solver a) -> solver (Int, [ForResult (RestartST es ts solver a)]) Source # | |
type EvalState (RestartST es ts solver a) Source # | |
type TreeState (RestartST es ts solver a) Source # | |
type ForSolver (RestartST es ts solver a) Source # | |
type ForResult (RestartST es ts solver a) Source # | |
data SealedCST es ts solver a where Source #
Seal :: CTransformer c => c -> SealedCST (CEvalState c) (CTreeState c) (CForSolver c) (CForResult c) |
Solver solver => CTransformer (SealedCST es ts solver a) Source # | |
type CEvalState (SealedCST es ts solver a) :: * type CTreeState (SealedCST es ts solver a) :: * Source # type CForSolver (SealedCST es ts solver a) :: * -> * Source # type CForResult (SealedCST es ts solver a) :: * Source # initCT :: SealedCST es ts solver a -> (CEvalState (SealedCST es ts solver a), CTreeState (SealedCST es ts solver a)) leftCT :: SealedCST es ts solver a -> CTreeState (SealedCST es ts solver a) -> CTreeState (SealedCST es ts solver a) rightCT :: SealedCST es ts solver a -> CTreeState (SealedCST es ts solver a) -> CTreeState (SealedCST es ts solver a) nextCT :: Tree (CForSolver (SealedCST es ts solver a)) (CForResult (SealedCST es ts solver a)) -> SealedCST es ts solver a -> CEvalState (SealedCST es ts solver a) -> CTreeState (SealedCST es ts solver a) -> EVAL (SealedCST es ts solver a) (CForResult (SealedCST es ts solver a)) -> CONTINUE (SealedCST es ts solver a) (CForResult (SealedCST es ts solver a)) -> EXIT (SealedCST es ts solver a) (CForResult (SealedCST es ts solver a)) -> CForSolver (SealedCST es ts solver a) (Int, [CForResult (SealedCST es ts solver a)]) returnCT :: SealedCST es ts solver a -> CEvalState (SealedCST es ts solver a) -> CONTINUE (SealedCST es ts solver a) (CForResult (SealedCST es ts solver a)) -> EXIT (SealedCST es ts solver a) (CForResult (SealedCST es ts solver a)) -> CForSolver (SealedCST es ts solver a) (Int, [CForResult (SealedCST es ts solver a)]) completeCT :: SealedCST es ts solver a -> CEvalState (SealedCST es ts solver a) -> Bool | |
type CTreeState (SealedCST es ts solver a) Source # | |
type CForSolver (SealedCST es ts solver a) Source # | |
type CForResult (SealedCST es ts solver a) Source # | |
newtype CNodeBoundedST (solver :: * -> *) a Source #
newtype CDepthBoundedST (solver :: * -> *) a Source #
newtype CBranchBoundST (solver :: * -> *) a Source #
data CFirstSolutionST (solver :: * -> *) a Source #
data CSolutionBoundST (solver :: * -> *) a Source #
data CIdentityCST (solver :: * -> *) a Source #
newtype CRandomST (solver :: * -> *) a Source #
Solver solver => CTransformer (CRandomST solver a) Source # | |
type CEvalState (CRandomST solver a) :: * type CTreeState (CRandomST solver a) :: * Source # type CForSolver (CRandomST solver a) :: * -> * Source # type CForResult (CRandomST solver a) :: * Source # initCT :: CRandomST solver a -> (CEvalState (CRandomST solver a), CTreeState (CRandomST solver a)) leftCT :: CRandomST solver a -> CTreeState (CRandomST solver a) -> CTreeState (CRandomST solver a) rightCT :: CRandomST solver a -> CTreeState (CRandomST solver a) -> CTreeState (CRandomST solver a) nextCT :: Tree (CForSolver (CRandomST solver a)) (CForResult (CRandomST solver a)) -> CRandomST solver a -> CEvalState (CRandomST solver a) -> CTreeState (CRandomST solver a) -> EVAL (CRandomST solver a) (CForResult (CRandomST solver a)) -> CONTINUE (CRandomST solver a) (CForResult (CRandomST solver a)) -> EXIT (CRandomST solver a) (CForResult (CRandomST solver a)) -> CForSolver (CRandomST solver a) (Int, [CForResult (CRandomST solver a)]) returnCT :: CRandomST solver a -> CEvalState (CRandomST solver a) -> CONTINUE (CRandomST solver a) (CForResult (CRandomST solver a)) -> EXIT (CRandomST solver a) (CForResult (CRandomST solver a)) -> CForSolver (CRandomST solver a) (Int, [CForResult (CRandomST solver a)]) completeCT :: CRandomST solver a -> CEvalState (CRandomST solver a) -> Bool | |
type CTreeState (CRandomST solver a) Source # | |
type CForSolver (CRandomST solver a) Source # | |
type CForResult (CRandomST solver a) Source # | |
newtype CLimitedDiscrepancyST (solver :: * -> *) a Source #