Safe Haskell | Safe-Inferred |
---|
- type Var = Int
- type VarSet = IntSet
- type VarMap = IntMap
- validVar :: Var -> Bool
- type Model = UArray Var Bool
- type Lit = Int
- type LitSet = IntSet
- type LitMap = IntMap
- litUndef :: Lit
- validLit :: Lit -> Bool
- literal :: Var -> Bool -> Lit
- litNot :: Lit -> Lit
- litVar :: Lit -> Var
- litPolarity :: Lit -> Bool
- evalLit :: Model -> Lit -> Bool
- type Clause = [Lit]
- normalizeClause :: Clause -> Maybe Clause
- normalizeAtLeast :: ([Lit], Int) -> ([Lit], Int)
- normalizePBSum :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)
- normalizePBAtLeast :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)
- normalizePBExactly :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)
- cutResolve :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer) -> Var -> ([(Integer, Lit)], Integer)
- cardinalityReduction :: ([(Integer, Lit)], Integer) -> ([Lit], Int)
- negatePBAtLeast :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)
- pbEval :: Model -> [(Integer, Lit)] -> Integer
- pbLowerBound :: [(Integer, Lit)] -> Integer
- pbUpperBound :: [(Integer, Lit)] -> Integer
Variable
Model
Literal
Positive (resp. negative) literals are represented as positive (resp. negative) integers. (DIMACS format).
litPolarity :: Lit -> BoolSource
Clause
normalizeClause :: Clause -> Maybe ClauseSource
Normalizing clause
Nothing
if the clause is trivially true.
Cardinality Constraint
Pseudo Boolean Constraint
normalizePBSum :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)Source
normalizing PB term of the form c1 x1 + c2 x2 ... cn xn + c into d1 x1 + d2 x2 ... dm xm + d where d1,...,dm ≥ 1.
normalizePBAtLeast :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)Source
normalizing PB constraint of the form c1 x1 + c2 cn ... cn xn >= b.
normalizePBExactly :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer)Source
normalizing PB constraint of the form c1 x1 + c2 cn ... cn xn = b.
cutResolve :: ([(Integer, Lit)], Integer) -> ([(Integer, Lit)], Integer) -> Var -> ([(Integer, Lit)], Integer)Source
pbLowerBound :: [(Integer, Lit)] -> IntegerSource
pbUpperBound :: [(Integer, Lit)] -> IntegerSource