monadiccp-0.7.7: Constraint Programming

Safe HaskellSafe
LanguageHaskell98

Data.Expr.Util

Synopsis

Documentation

data Expr t c b Source #

Data types | --

Instances

ModelTermType ModelInt Source # 
(Eq b, Eq a, Eq t) => ToColExpr t a b [Expr t a b] Source # 

Methods

toColExpr :: [Expr t a b] -> ColExpr t a b Source #

(Eq t, Eq c, Eq b) => ExprRange t c b (Expr t c b, Expr t c b) Source # 

Methods

(@:) :: Expr t c b -> (Expr t c b, Expr t c b) -> BoolExpr t c b Source #

(Eq t, Eq c, Eq b) => ExprClass t c b (Expr t c b) Source #

relational operators/functions | --

Methods

(@=) :: Expr t c b -> Expr t c b -> BoolExpr t c b Source #

(@/=) :: Expr t c b -> Expr t c b -> BoolExpr t c b Source #

(Eq t, Eq a, Eq b) => ToColExpr t a b (Expr t a b) Source # 

Methods

toColExpr :: Expr t a b -> ColExpr t a b Source #

ToExpr t a b (Expr t a b) Source # 

Methods

toExpr :: Expr t a b -> Expr t a b Source #

FDSolver s => Term (FDInstance s) ModelInt Source # 

Associated Types

type Help (FDInstance s :: * -> *) ModelInt :: * Source #

(FDSolver s, EnumTerm s (FDIntTerm s)) => EnumTerm (FDInstance s) ModelInt Source # 
Eq (EGPar -> EGPar) # 

Methods

(==) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

(/=) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

Ord (EGPar -> EGPar) # 

Methods

compare :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Ordering #

(<) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

(<=) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

(>) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

(>=) :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> Bool #

max :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> EGPar -> EGPar #

min :: (EGPar -> EGPar) -> (EGPar -> EGPar) -> EGPar -> EGPar #

Show (EGPar -> EGPar) # 

Methods

showsPrec :: Int -> (EGPar -> EGPar) -> ShowS #

show :: (EGPar -> EGPar) -> String #

showList :: [EGPar -> EGPar] -> ShowS #

(Eq t, Eq c, Eq b) => Eq (Expr t c b) Source # 

Methods

(==) :: Expr t c b -> Expr t c b -> Bool #

(/=) :: Expr t c b -> Expr t c b -> Bool #

(Ord s, Ord c, Ord b) => Ord (Expr s c b) Source # 

Methods

compare :: Expr s c b -> Expr s c b -> Ordering #

(<) :: Expr s c b -> Expr s c b -> Bool #

(<=) :: Expr s c b -> Expr s c b -> Bool #

(>) :: Expr s c b -> Expr s c b -> Bool #

(>=) :: Expr s c b -> Expr s c b -> Bool #

max :: Expr s c b -> Expr s c b -> Expr s c b #

min :: Expr s c b -> Expr s c b -> Expr s c b #

(Show t, Show c, Show b) => Show (Expr t c b) Source # 

Methods

showsPrec :: Int -> Expr t c b -> ShowS #

show :: Expr t c b -> String #

showList :: [Expr t c b] -> ShowS #

type Help (FDInstance s) ModelInt Source # 
type Help (FDInstance s) ModelInt = ()
type TermBaseType (FDInstance s) ModelInt Source # 

data BoolExpr t c b Source #

Instances

ModelTermType ModelBool Source # 
(Eq t, Eq c, Eq b) => ExprClass t c b (BoolExpr t c b) Source # 

Methods

(@=) :: BoolExpr t c b -> BoolExpr t c b -> BoolExpr t c b Source #

(@/=) :: BoolExpr t c b -> BoolExpr t c b -> BoolExpr t c b Source #

ToBoolExpr t a b (BoolExpr t a b) Source # 

Methods

toBoolExpr :: BoolExpr t a b -> BoolExpr t a b Source #

(Eq t, Eq a, Eq b) => ToExpr t a b (BoolExpr t a b) Source # 

Methods

toExpr :: BoolExpr t a b -> Expr t a b Source #

FDSolver s => Term (FDInstance s) ModelBool Source # 

Associated Types

type Help (FDInstance s :: * -> *) ModelBool :: * Source #

(FDSolver s, EnumTerm s (FDBoolTerm s)) => EnumTerm (FDInstance s) ModelBool Source # 
(Eq t, Eq c, Eq b) => Eq (BoolExpr t c b) Source # 

Methods

(==) :: BoolExpr t c b -> BoolExpr t c b -> Bool #

(/=) :: BoolExpr t c b -> BoolExpr t c b -> Bool #

(Ord s, Ord c, Ord b) => Ord (BoolExpr s c b) Source # 

Methods

compare :: BoolExpr s c b -> BoolExpr s c b -> Ordering #

(<) :: BoolExpr s c b -> BoolExpr s c b -> Bool #

(<=) :: BoolExpr s c b -> BoolExpr s c b -> Bool #

(>) :: BoolExpr s c b -> BoolExpr s c b -> Bool #

(>=) :: BoolExpr s c b -> BoolExpr s c b -> Bool #

max :: BoolExpr s c b -> BoolExpr s c b -> BoolExpr s c b #

min :: BoolExpr s c b -> BoolExpr s c b -> BoolExpr s c b #

(Show t, Show c, Show b) => Show (BoolExpr t c b) Source # 

Methods

showsPrec :: Int -> BoolExpr t c b -> ShowS #

show :: BoolExpr t c b -> String #

showList :: [BoolExpr t c b] -> ShowS #

type Help (FDInstance s) ModelBool Source # 
type Help (FDInstance s) ModelBool = ()
type TermBaseType (FDInstance s) ModelBool Source # 

data ColExpr t c b Source #

Instances

ModelTermType ModelCol Source # 
(Eq t, Eq c, Eq b) => ExprRange t c b (ColExpr t c b) Source # 

Methods

(@:) :: Expr t c b -> ColExpr t c b -> BoolExpr t c b Source #

(Eq t, Eq c, Eq b) => ExprClass t c b (ColExpr t c b) Source # 

Methods

(@=) :: ColExpr t c b -> ColExpr t c b -> BoolExpr t c b Source #

(@/=) :: ColExpr t c b -> ColExpr t c b -> BoolExpr t c b Source #

ToColExpr t a b (ColExpr t a b) Source # 

Methods

toColExpr :: ColExpr t a b -> ColExpr t a b Source #

FDSolver s => Term (FDInstance s) ModelCol Source # 

Associated Types

type Help (FDInstance s :: * -> *) ModelCol :: * Source #

(Eq t, Eq c, Eq b) => Eq (ColExpr t c b) Source # 

Methods

(==) :: ColExpr t c b -> ColExpr t c b -> Bool #

(/=) :: ColExpr t c b -> ColExpr t c b -> Bool #

(Ord s, Ord c, Ord b) => Ord (ColExpr s c b) Source # 

Methods

compare :: ColExpr s c b -> ColExpr s c b -> Ordering #

(<) :: ColExpr s c b -> ColExpr s c b -> Bool #

(<=) :: ColExpr s c b -> ColExpr s c b -> Bool #

(>) :: ColExpr s c b -> ColExpr s c b -> Bool #

(>=) :: ColExpr s c b -> ColExpr s c b -> Bool #

max :: ColExpr s c b -> ColExpr s c b -> ColExpr s c b #

min :: ColExpr s c b -> ColExpr s c b -> ColExpr s c b #

(Show t, Show c, Show b) => Show (ColExpr t c b) Source # 

Methods

showsPrec :: Int -> ColExpr t c b -> ShowS #

show :: ColExpr t c b -> String #

showList :: [ColExpr t c b] -> ShowS #

type Help (FDInstance s) ModelCol Source # 
type Help (FDInstance s) ModelCol = ()

transform :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> b, c -> d, e -> f, b -> a, d -> c, f -> e) -> Expr a c e -> Expr b d f Source #

Transform expressions over one type to expressions over another | --

colTransform :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> b, c -> d, e -> f, b -> a, d -> c, f -> e) -> ColExpr a c e -> ColExpr b d f Source #

boolTransform :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> b, c -> d, e -> f, b -> a, d -> c, f -> e) -> BoolExpr a c e -> BoolExpr b d f Source #

transformEx :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> Expr b d f, c -> ColExpr b d f, e -> BoolExpr b d f, b -> Expr a c e, d -> ColExpr a c e, f -> BoolExpr a c e) -> Expr a c e -> Expr b d f Source #

colTransformEx :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> Expr b d f, c -> ColExpr b d f, e -> BoolExpr b d f, b -> Expr a c e, d -> ColExpr a c e, f -> BoolExpr a c e) -> ColExpr a c e -> ColExpr b d f Source #

boolTransformEx :: (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => (a -> Expr b d f, c -> ColExpr b d f, e -> BoolExpr b d f, b -> Expr a c e, d -> ColExpr a c e, f -> BoolExpr a c e) -> BoolExpr a c e -> BoolExpr b d f Source #

property :: (a -> Bool) -> (b -> Bool) -> (c -> Bool) -> Expr a b c -> Bool Source #

colProperty :: (a -> Bool) -> (b -> Bool) -> (c -> Bool) -> ColExpr a b c -> Bool Source #

boolProperty :: (a -> Bool) -> (b -> Bool) -> (c -> Bool) -> BoolExpr a b c -> Bool Source #

propertyEx :: (Expr a b c -> Maybe Bool, ColExpr a b c -> Maybe Bool, BoolExpr a b c -> Maybe Bool) -> Expr a b c -> Bool Source #

Check whether an expression is possibly referring to terms with a given property | --

colPropertyEx :: (Expr a b c -> Maybe Bool, ColExpr a b c -> Maybe Bool, BoolExpr a b c -> Maybe Bool) -> ColExpr a b c -> Bool Source #

boolPropertyEx :: (Expr a b c -> Maybe Bool, ColExpr a b c -> Maybe Bool, BoolExpr a b c -> Maybe Bool) -> BoolExpr a b c -> Bool Source #

collapse :: (Eq t, Eq c, Eq b) => Expr (Expr t c b) (ColExpr t c b) (BoolExpr t c b) -> Expr t c b Source #

Turn expressions over expressions into simply expressions | --

colCollapse :: (Eq t, Eq c, Eq b) => ColExpr (Expr t c b) (ColExpr t c b) (BoolExpr t c b) -> ColExpr t c b Source #

boolCollapse :: (Eq t, Eq c, Eq b) => BoolExpr (Expr t c b) (ColExpr t c b) (BoolExpr t c b) -> BoolExpr t c b Source #

simplify :: (Eq s, Eq c, Eq b) => Expr s c b -> Expr s c b Source #

Simplify expressions | --

colSimplify :: (Eq s, Eq c, Eq b) => ColExpr s c b -> ColExpr s c b Source #

boolSimplify :: (Eq s, Eq c, Eq b) => BoolExpr s c b -> BoolExpr s c b Source #

walk :: (Eq t, Eq c, Eq b, Monad m) => Expr t c b -> (Expr t c b -> WalkPhase -> m WalkResult, ColExpr t c b -> WalkPhase -> m WalkResult, BoolExpr t c b -> WalkPhase -> m WalkResult) -> m () Source #

colWalk :: (Monad m, Eq b, Eq c, Eq t) => ColExpr t c b -> (Expr t c b -> WalkPhase -> m WalkResult, ColExpr t c b -> WalkPhase -> m WalkResult, BoolExpr t c b -> WalkPhase -> m WalkResult) -> m () Source #

boolWalk :: (Monad m, Eq b, Eq c, Eq t) => BoolExpr t c b -> (Expr t c b -> WalkPhase -> m WalkResult, ColExpr t c b -> WalkPhase -> m WalkResult, BoolExpr t c b -> WalkPhase -> m WalkResult) -> m () Source #