monadiccp-0.7.7: Constraint Programming

Safe HaskellNone
LanguageHaskell98

Control.CP.ComposableTransformers

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 #

type NewBound solver = solver (Bound solver) Source #

newtype Bound solver Source #

Constructors

Bound (forall a. Tree solver a -> Tree solver a) 

data Composition es ts solver a where Source #

Constructors

(:-) :: (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 

Instances

Solver solver => CTransformer (Composition es ts solver a) Source # 

Associated Types

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 #

Methods

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 CTreeState (Composition es ts solver a) = ts
type CForSolver (Composition es ts solver a) Source # 
type CForSolver (Composition es ts solver a) = solver
type CForResult (Composition es ts solver a) Source # 
type CForResult (Composition es ts solver a) = a

class Solver (CForSolver c) => CTransformer c Source #

Minimal complete definition

initCT

Associated Types

type CTreeState c :: * Source #

type CForSolver c :: * -> * Source #

type CForResult c :: * Source #

Instances

Solver solver => CTransformer (CBranchBoundST solver a) Source # 

Associated Types

type CEvalState (CBranchBoundST solver a) :: *

type CTreeState (CBranchBoundST solver a) :: * Source #

type CForSolver (CBranchBoundST solver a) :: * -> * Source #

type CForResult (CBranchBoundST solver a) :: * Source #

Methods

initCT :: CBranchBoundST solver a -> (CEvalState (CBranchBoundST solver a), CTreeState (CBranchBoundST solver a))

leftCT :: CBranchBoundST solver a -> CTreeState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a)

rightCT :: CBranchBoundST solver a -> CTreeState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a)

nextCT :: Tree (CForSolver (CBranchBoundST solver a)) (CForResult (CBranchBoundST solver a)) -> CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a) -> EVAL (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CONTINUE (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> EXIT (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CForSolver (CBranchBoundST solver a) (Int, [CForResult (CBranchBoundST solver a)])

returnCT :: CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> CONTINUE (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> EXIT (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CForSolver (CBranchBoundST solver a) (Int, [CForResult (CBranchBoundST solver a)])

completeCT :: CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> Bool

Solver solver => CTransformer (CSolutionBoundST solver a) Source # 

Associated Types

type CEvalState (CSolutionBoundST solver a) :: *

type CTreeState (CSolutionBoundST solver a) :: * Source #

type CForSolver (CSolutionBoundST solver a) :: * -> * Source #

type CForResult (CSolutionBoundST solver a) :: * Source #

Methods

initCT :: CSolutionBoundST solver a -> (CEvalState (CSolutionBoundST solver a), CTreeState (CSolutionBoundST solver a))

leftCT :: CSolutionBoundST solver a -> CTreeState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a)

rightCT :: CSolutionBoundST solver a -> CTreeState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a)

nextCT :: Tree (CForSolver (CSolutionBoundST solver a)) (CForResult (CSolutionBoundST solver a)) -> CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a) -> EVAL (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CONTINUE (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> EXIT (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CForSolver (CSolutionBoundST solver a) (Int, [CForResult (CSolutionBoundST solver a)])

returnCT :: CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> CONTINUE (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> EXIT (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CForSolver (CSolutionBoundST solver a) (Int, [CForResult (CSolutionBoundST solver a)])

completeCT :: CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> Bool

Solver solver => CTransformer (CFirstSolutionST solver a) Source # 

Associated Types

type CEvalState (CFirstSolutionST solver a) :: *

type CTreeState (CFirstSolutionST solver a) :: * Source #

type CForSolver (CFirstSolutionST solver a) :: * -> * Source #

type CForResult (CFirstSolutionST solver a) :: * Source #

Methods

initCT :: CFirstSolutionST solver a -> (CEvalState (CFirstSolutionST solver a), CTreeState (CFirstSolutionST solver a))

leftCT :: CFirstSolutionST solver a -> CTreeState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a)

rightCT :: CFirstSolutionST solver a -> CTreeState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a)

nextCT :: Tree (CForSolver (CFirstSolutionST solver a)) (CForResult (CFirstSolutionST solver a)) -> CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a) -> EVAL (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CONTINUE (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> EXIT (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CForSolver (CFirstSolutionST solver a) (Int, [CForResult (CFirstSolutionST solver a)])

returnCT :: CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> CONTINUE (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> EXIT (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CForSolver (CFirstSolutionST solver a) (Int, [CForResult (CFirstSolutionST solver a)])

completeCT :: CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> Bool

Solver solver => CTransformer (CIdentityCST solver a) Source # 

Associated Types

type CEvalState (CIdentityCST solver a) :: *

type CTreeState (CIdentityCST solver a) :: * Source #

type CForSolver (CIdentityCST solver a) :: * -> * Source #

type CForResult (CIdentityCST solver a) :: * Source #

Methods

initCT :: CIdentityCST solver a -> (CEvalState (CIdentityCST solver a), CTreeState (CIdentityCST solver a))

leftCT :: CIdentityCST solver a -> CTreeState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a)

rightCT :: CIdentityCST solver a -> CTreeState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a)

nextCT :: Tree (CForSolver (CIdentityCST solver a)) (CForResult (CIdentityCST solver a)) -> CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a) -> EVAL (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CONTINUE (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> EXIT (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CForSolver (CIdentityCST solver a) (Int, [CForResult (CIdentityCST solver a)])

returnCT :: CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> CONTINUE (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> EXIT (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CForSolver (CIdentityCST solver a) (Int, [CForResult (CIdentityCST solver a)])

completeCT :: CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> Bool

Solver solver => CTransformer (CRandomST solver a) Source # 

Associated Types

type CEvalState (CRandomST solver a) :: *

type CTreeState (CRandomST solver a) :: * Source #

type CForSolver (CRandomST solver a) :: * -> * Source #

type CForResult (CRandomST solver a) :: * Source #

Methods

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

Solver solver => CTransformer (CLimitedDiscrepancyST solver a) Source # 

Associated Types

type CEvalState (CLimitedDiscrepancyST solver a) :: *

type CTreeState (CLimitedDiscrepancyST solver a) :: * Source #

type CForSolver (CLimitedDiscrepancyST solver a) :: * -> * Source #

type CForResult (CLimitedDiscrepancyST solver a) :: * Source #

Solver solver => CTransformer (CDepthBoundedST solver a) Source # 

Associated Types

type CEvalState (CDepthBoundedST solver a) :: *

type CTreeState (CDepthBoundedST solver a) :: * Source #

type CForSolver (CDepthBoundedST solver a) :: * -> * Source #

type CForResult (CDepthBoundedST solver a) :: * Source #

Methods

initCT :: CDepthBoundedST solver a -> (CEvalState (CDepthBoundedST solver a), CTreeState (CDepthBoundedST solver a))

leftCT :: CDepthBoundedST solver a -> CTreeState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a)

rightCT :: CDepthBoundedST solver a -> CTreeState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a)

nextCT :: Tree (CForSolver (CDepthBoundedST solver a)) (CForResult (CDepthBoundedST solver a)) -> CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a) -> EVAL (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CONTINUE (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> EXIT (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CForSolver (CDepthBoundedST solver a) (Int, [CForResult (CDepthBoundedST solver a)])

returnCT :: CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> CONTINUE (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> EXIT (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CForSolver (CDepthBoundedST solver a) (Int, [CForResult (CDepthBoundedST solver a)])

completeCT :: CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> Bool

Solver solver => CTransformer (CNodeBoundedST solver a) Source # 

Associated Types

type CEvalState (CNodeBoundedST solver a) :: *

type CTreeState (CNodeBoundedST solver a) :: * Source #

type CForSolver (CNodeBoundedST solver a) :: * -> * Source #

type CForResult (CNodeBoundedST solver a) :: * Source #

Methods

initCT :: CNodeBoundedST solver a -> (CEvalState (CNodeBoundedST solver a), CTreeState (CNodeBoundedST solver a))

leftCT :: CNodeBoundedST solver a -> CTreeState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a)

rightCT :: CNodeBoundedST solver a -> CTreeState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a)

nextCT :: Tree (CForSolver (CNodeBoundedST solver a)) (CForResult (CNodeBoundedST solver a)) -> CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a) -> EVAL (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CONTINUE (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> EXIT (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CForSolver (CNodeBoundedST solver a) (Int, [CForResult (CNodeBoundedST solver a)])

returnCT :: CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> CONTINUE (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> EXIT (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CForSolver (CNodeBoundedST solver a) (Int, [CForResult (CNodeBoundedST solver a)])

completeCT :: CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> Bool

Solver solver => CTransformer (SealedCST es ts solver a) Source # 

Associated Types

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 #

Methods

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

Solver solver => CTransformer (Composition es ts solver a) Source # 

Associated Types

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 #

Methods

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

data RestartST es ts (solver :: * -> *) a Source #

Constructors

RestartST [SealedCST es ts solver a] (Tree solver a -> solver (Tree solver a)) 

Instances

Solver solver => Transformer (RestartST es ts solver a) Source # 

Associated Types

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 #

Methods

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 EvalState (RestartST es ts solver a) = (SealedCST es ts solver a, [SealedCST es ts solver a], es, Label solver, Tree solver a)
type TreeState (RestartST es ts solver a) Source # 
type TreeState (RestartST es ts solver a) = ts
type ForSolver (RestartST es ts solver a) Source # 
type ForSolver (RestartST es ts solver a) = solver
type ForResult (RestartST es ts solver a) Source # 
type ForResult (RestartST es ts solver a) = a

data SealedCST es ts solver a where Source #

Constructors

Seal :: CTransformer c => c -> SealedCST (CEvalState c) (CTreeState c) (CForSolver c) (CForResult c) 

Instances

Solver solver => CTransformer (SealedCST es ts solver a) Source # 

Associated Types

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 #

Methods

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 CTreeState (SealedCST es ts solver a) = ts
type CForSolver (SealedCST es ts solver a) Source # 
type CForSolver (SealedCST es ts solver a) = solver
type CForResult (SealedCST es ts solver a) Source # 
type CForResult (SealedCST es ts solver a) = a

newtype CNodeBoundedST (solver :: * -> *) a Source #

Constructors

CNBST Int 

Instances

Solver solver => CTransformer (CNodeBoundedST solver a) Source # 

Associated Types

type CEvalState (CNodeBoundedST solver a) :: *

type CTreeState (CNodeBoundedST solver a) :: * Source #

type CForSolver (CNodeBoundedST solver a) :: * -> * Source #

type CForResult (CNodeBoundedST solver a) :: * Source #

Methods

initCT :: CNodeBoundedST solver a -> (CEvalState (CNodeBoundedST solver a), CTreeState (CNodeBoundedST solver a))

leftCT :: CNodeBoundedST solver a -> CTreeState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a)

rightCT :: CNodeBoundedST solver a -> CTreeState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a)

nextCT :: Tree (CForSolver (CNodeBoundedST solver a)) (CForResult (CNodeBoundedST solver a)) -> CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> CTreeState (CNodeBoundedST solver a) -> EVAL (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CONTINUE (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> EXIT (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CForSolver (CNodeBoundedST solver a) (Int, [CForResult (CNodeBoundedST solver a)])

returnCT :: CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> CONTINUE (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> EXIT (CNodeBoundedST solver a) (CForResult (CNodeBoundedST solver a)) -> CForSolver (CNodeBoundedST solver a) (Int, [CForResult (CNodeBoundedST solver a)])

completeCT :: CNodeBoundedST solver a -> CEvalState (CNodeBoundedST solver a) -> Bool

type CTreeState (CNodeBoundedST solver a) Source # 
type CTreeState (CNodeBoundedST solver a) = ()
type CForSolver (CNodeBoundedST solver a) Source # 
type CForSolver (CNodeBoundedST solver a) = solver
type CForResult (CNodeBoundedST solver a) Source # 
type CForResult (CNodeBoundedST solver a) = a

newtype CDepthBoundedST (solver :: * -> *) a Source #

Constructors

CDBST Int 

Instances

Solver solver => CTransformer (CDepthBoundedST solver a) Source # 

Associated Types

type CEvalState (CDepthBoundedST solver a) :: *

type CTreeState (CDepthBoundedST solver a) :: * Source #

type CForSolver (CDepthBoundedST solver a) :: * -> * Source #

type CForResult (CDepthBoundedST solver a) :: * Source #

Methods

initCT :: CDepthBoundedST solver a -> (CEvalState (CDepthBoundedST solver a), CTreeState (CDepthBoundedST solver a))

leftCT :: CDepthBoundedST solver a -> CTreeState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a)

rightCT :: CDepthBoundedST solver a -> CTreeState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a)

nextCT :: Tree (CForSolver (CDepthBoundedST solver a)) (CForResult (CDepthBoundedST solver a)) -> CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> CTreeState (CDepthBoundedST solver a) -> EVAL (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CONTINUE (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> EXIT (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CForSolver (CDepthBoundedST solver a) (Int, [CForResult (CDepthBoundedST solver a)])

returnCT :: CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> CONTINUE (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> EXIT (CDepthBoundedST solver a) (CForResult (CDepthBoundedST solver a)) -> CForSolver (CDepthBoundedST solver a) (Int, [CForResult (CDepthBoundedST solver a)])

completeCT :: CDepthBoundedST solver a -> CEvalState (CDepthBoundedST solver a) -> Bool

type CTreeState (CDepthBoundedST solver a) Source # 
type CTreeState (CDepthBoundedST solver a) = Int
type CForSolver (CDepthBoundedST solver a) Source # 
type CForSolver (CDepthBoundedST solver a) = solver
type CForResult (CDepthBoundedST solver a) Source # 
type CForResult (CDepthBoundedST solver a) = a

newtype CBranchBoundST (solver :: * -> *) a Source #

Constructors

CBBST (NewBound solver) 

Instances

Solver solver => CTransformer (CBranchBoundST solver a) Source # 

Associated Types

type CEvalState (CBranchBoundST solver a) :: *

type CTreeState (CBranchBoundST solver a) :: * Source #

type CForSolver (CBranchBoundST solver a) :: * -> * Source #

type CForResult (CBranchBoundST solver a) :: * Source #

Methods

initCT :: CBranchBoundST solver a -> (CEvalState (CBranchBoundST solver a), CTreeState (CBranchBoundST solver a))

leftCT :: CBranchBoundST solver a -> CTreeState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a)

rightCT :: CBranchBoundST solver a -> CTreeState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a)

nextCT :: Tree (CForSolver (CBranchBoundST solver a)) (CForResult (CBranchBoundST solver a)) -> CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> CTreeState (CBranchBoundST solver a) -> EVAL (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CONTINUE (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> EXIT (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CForSolver (CBranchBoundST solver a) (Int, [CForResult (CBranchBoundST solver a)])

returnCT :: CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> CONTINUE (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> EXIT (CBranchBoundST solver a) (CForResult (CBranchBoundST solver a)) -> CForSolver (CBranchBoundST solver a) (Int, [CForResult (CBranchBoundST solver a)])

completeCT :: CBranchBoundST solver a -> CEvalState (CBranchBoundST solver a) -> Bool

type CTreeState (CBranchBoundST solver a) Source # 
type CTreeState (CBranchBoundST solver a) = Int
type CForSolver (CBranchBoundST solver a) Source # 
type CForSolver (CBranchBoundST solver a) = solver
type CForResult (CBranchBoundST solver a) Source # 
type CForResult (CBranchBoundST solver a) = a

data CFirstSolutionST (solver :: * -> *) a Source #

Constructors

CFSST 

Instances

Solver solver => CTransformer (CFirstSolutionST solver a) Source # 

Associated Types

type CEvalState (CFirstSolutionST solver a) :: *

type CTreeState (CFirstSolutionST solver a) :: * Source #

type CForSolver (CFirstSolutionST solver a) :: * -> * Source #

type CForResult (CFirstSolutionST solver a) :: * Source #

Methods

initCT :: CFirstSolutionST solver a -> (CEvalState (CFirstSolutionST solver a), CTreeState (CFirstSolutionST solver a))

leftCT :: CFirstSolutionST solver a -> CTreeState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a)

rightCT :: CFirstSolutionST solver a -> CTreeState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a)

nextCT :: Tree (CForSolver (CFirstSolutionST solver a)) (CForResult (CFirstSolutionST solver a)) -> CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> CTreeState (CFirstSolutionST solver a) -> EVAL (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CONTINUE (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> EXIT (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CForSolver (CFirstSolutionST solver a) (Int, [CForResult (CFirstSolutionST solver a)])

returnCT :: CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> CONTINUE (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> EXIT (CFirstSolutionST solver a) (CForResult (CFirstSolutionST solver a)) -> CForSolver (CFirstSolutionST solver a) (Int, [CForResult (CFirstSolutionST solver a)])

completeCT :: CFirstSolutionST solver a -> CEvalState (CFirstSolutionST solver a) -> Bool

type CTreeState (CFirstSolutionST solver a) Source # 
type CTreeState (CFirstSolutionST solver a) = ()
type CForSolver (CFirstSolutionST solver a) Source # 
type CForSolver (CFirstSolutionST solver a) = solver
type CForResult (CFirstSolutionST solver a) Source # 
type CForResult (CFirstSolutionST solver a) = a

data CSolutionBoundST (solver :: * -> *) a Source #

Constructors

CSBST Int 

Instances

Solver solver => CTransformer (CSolutionBoundST solver a) Source # 

Associated Types

type CEvalState (CSolutionBoundST solver a) :: *

type CTreeState (CSolutionBoundST solver a) :: * Source #

type CForSolver (CSolutionBoundST solver a) :: * -> * Source #

type CForResult (CSolutionBoundST solver a) :: * Source #

Methods

initCT :: CSolutionBoundST solver a -> (CEvalState (CSolutionBoundST solver a), CTreeState (CSolutionBoundST solver a))

leftCT :: CSolutionBoundST solver a -> CTreeState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a)

rightCT :: CSolutionBoundST solver a -> CTreeState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a)

nextCT :: Tree (CForSolver (CSolutionBoundST solver a)) (CForResult (CSolutionBoundST solver a)) -> CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> CTreeState (CSolutionBoundST solver a) -> EVAL (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CONTINUE (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> EXIT (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CForSolver (CSolutionBoundST solver a) (Int, [CForResult (CSolutionBoundST solver a)])

returnCT :: CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> CONTINUE (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> EXIT (CSolutionBoundST solver a) (CForResult (CSolutionBoundST solver a)) -> CForSolver (CSolutionBoundST solver a) (Int, [CForResult (CSolutionBoundST solver a)])

completeCT :: CSolutionBoundST solver a -> CEvalState (CSolutionBoundST solver a) -> Bool

type CTreeState (CSolutionBoundST solver a) Source # 
type CTreeState (CSolutionBoundST solver a) = ()
type CForSolver (CSolutionBoundST solver a) Source # 
type CForSolver (CSolutionBoundST solver a) = solver
type CForResult (CSolutionBoundST solver a) Source # 
type CForResult (CSolutionBoundST solver a) = a

data CIdentityCST (solver :: * -> *) a Source #

Constructors

CIST 

Instances

Solver solver => CTransformer (CIdentityCST solver a) Source # 

Associated Types

type CEvalState (CIdentityCST solver a) :: *

type CTreeState (CIdentityCST solver a) :: * Source #

type CForSolver (CIdentityCST solver a) :: * -> * Source #

type CForResult (CIdentityCST solver a) :: * Source #

Methods

initCT :: CIdentityCST solver a -> (CEvalState (CIdentityCST solver a), CTreeState (CIdentityCST solver a))

leftCT :: CIdentityCST solver a -> CTreeState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a)

rightCT :: CIdentityCST solver a -> CTreeState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a)

nextCT :: Tree (CForSolver (CIdentityCST solver a)) (CForResult (CIdentityCST solver a)) -> CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> CTreeState (CIdentityCST solver a) -> EVAL (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CONTINUE (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> EXIT (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CForSolver (CIdentityCST solver a) (Int, [CForResult (CIdentityCST solver a)])

returnCT :: CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> CONTINUE (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> EXIT (CIdentityCST solver a) (CForResult (CIdentityCST solver a)) -> CForSolver (CIdentityCST solver a) (Int, [CForResult (CIdentityCST solver a)])

completeCT :: CIdentityCST solver a -> CEvalState (CIdentityCST solver a) -> Bool

type CTreeState (CIdentityCST solver a) Source # 
type CTreeState (CIdentityCST solver a) = ()
type CForSolver (CIdentityCST solver a) Source # 
type CForSolver (CIdentityCST solver a) = solver
type CForResult (CIdentityCST solver a) Source # 
type CForResult (CIdentityCST solver a) = a

newtype CRandomST (solver :: * -> *) a Source #

Constructors

CRST Int 

Instances

Solver solver => CTransformer (CRandomST solver a) Source # 

Associated Types

type CEvalState (CRandomST solver a) :: *

type CTreeState (CRandomST solver a) :: * Source #

type CForSolver (CRandomST solver a) :: * -> * Source #

type CForResult (CRandomST solver a) :: * Source #

Methods

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 CTreeState (CRandomST solver a) = ()
type CForSolver (CRandomST solver a) Source # 
type CForSolver (CRandomST solver a) = solver
type CForResult (CRandomST solver a) Source # 
type CForResult (CRandomST solver a) = a

newtype CLimitedDiscrepancyST (solver :: * -> *) a Source #

Constructors

CLDST Int 

Instances

Solver solver => CTransformer (CLimitedDiscrepancyST solver a) Source # 

Associated Types

type CEvalState (CLimitedDiscrepancyST solver a) :: *

type CTreeState (CLimitedDiscrepancyST solver a) :: * Source #

type CForSolver (CLimitedDiscrepancyST solver a) :: * -> * Source #

type CForResult (CLimitedDiscrepancyST solver a) :: * Source #

type CTreeState (CLimitedDiscrepancyST solver a) Source # 
type CForSolver (CLimitedDiscrepancyST solver a) Source # 
type CForSolver (CLimitedDiscrepancyST solver a) = solver
type CForResult (CLimitedDiscrepancyST solver a) Source # 
type CForResult (CLimitedDiscrepancyST solver a) = a