Copyright | (c) Masahiro Sakai 2015 |
---|---|
License | BSD-style |
Maintainer | masahiro.sakai@gmail.com |
Stability | provisional |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Extensions |
|
ToySolver.SAT.Encoder.PBNLC
Description
Synopsis
- data Encoder m
- newEncoder :: AddPBLin m a => a -> Encoder m -> m (Encoder m)
- getTseitinEncoder :: Encoder m -> Encoder m
- addPBNLAtLeast :: AddPBNL m a => a -> PBSum -> Integer -> m ()
- addPBNLAtMost :: AddPBNL m a => a -> PBSum -> Integer -> m ()
- addPBNLExactly :: AddPBNL m a => a -> PBSum -> Integer -> m ()
- addPBNLAtLeastSoft :: AddPBNL m a => a -> Lit -> PBSum -> Integer -> m ()
- addPBNLAtMostSoft :: AddPBNL m a => a -> Lit -> PBSum -> Integer -> m ()
- addPBNLExactlySoft :: AddPBNL m a => a -> Lit -> PBSum -> Integer -> m ()
- linearizePBSum :: PrimMonad m => Encoder m -> PBSum -> m PBLinSum
- linearizePBSumWithPolarity :: PrimMonad m => Encoder m -> Polarity -> PBSum -> m PBLinSum
The encoder type
Instances
getTseitinEncoder :: Encoder m -> Encoder m Source #
Adding constraints
Add a non-linear pseudo boolean constraints c1*ls1 + c2*ls2 + … ≥ n.
Add a non-linear pseudo boolean constraints c1*ls1 + c2*ls2 + … ≥ n.
Add a non-linear pseudo boolean constraints c1*ls1 + c2*ls2 + … = n.
Arguments
:: AddPBNL m a | |
=> a | |
-> Lit | Selector literal |
-> PBSum | List of terms |
-> Integer | n |
-> m () |
Add a soft non-linear pseudo boolean constraints sel ⇒ c1*ls1 + c2*ls2 + … ≥ n.
Arguments
:: AddPBNL m a | |
=> a | |
-> Lit | Selector literal |
-> PBSum | List of terms |
-> Integer | n |
-> m () |
Add a soft non-linear pseudo boolean constraints sel ⇒ c1*ls1 + c2*ls2 + … ≤ n.
Arguments
:: AddPBNL m a | |
=> a | |
-> Lit | Selector literal |
-> PBSum | List of terms |
-> Integer | n |
-> m () |
Add a soft non-linear pseudo boolean constraints lit ⇒ c1*ls1 + c2*ls2 + … = n.