mios 1.5.4 → 1.6.0
raw patch · 8 files changed
+108/−551 lines, 8 filesdep ~basenew-component:exe:mios-1.6.0PVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- MultiConflict/utils/averagecsv.hs +0/−13
- MultiConflict/utils/dump2csv.hs +0/−10
- MultiConflict/utils/numbers.hs +0/−119
- MultiConflict/utils/pickup.hs +0/−123
- MultiConflict/utils/stat2csv.hs +0/−10
- MultiConflict/utils/summary.hs +0/−104
- mios.cabal +107/−171
- src/SAT/Mios.hs +1/−1
− MultiConflict/utils/averagecsv.hs
@@ -1,13 +0,0 @@--- | Usage:--- > mios-averagecsv < a.csv > ave.csv-module Main where--import Data.List (sort)-import SAT.Mios.Util.Stat--main :: IO ()-main = do- putStrLn $ fst (header :: (String, MergedDump))- d <- parseBy [(fst (header :: (String, MiosDump)), fromCSV)] <$> getContents- mapM_ (putStrLn . toCSV) . sort =<< merge d-
− MultiConflict/utils/dump2csv.hs
@@ -1,10 +0,0 @@--- | Usage:--- > mios --dump ... | mios-dump2csv > a.csv-module Main where--import SAT.Mios.Util.Stat--main :: IO ()-main = do- putStrLn $ fst (header :: (String, MiosDump))- mapM_ (putStrLn . toCSV) =<< parseBy [("", fromDump)] <$> getContents
− MultiConflict/utils/numbers.hs
@@ -1,119 +0,0 @@--- | Usage:--- > mios-summary < average.csv > summary.tbl (for org-mode or github-flavored markdown)-{-# LANGUAGE ViewPatterns #-}-module Main where--import Data.List (intercalate, lookup, minimumBy, nub)-import Data.Maybe (fromMaybe)-import Data.Ord (comparing)-import Numeric (showFFloat)-import System.Console.GetOpt (ArgDescr(..), ArgOrder(..), getOpt, OptDescr(..), usageInfo)-import System.Environment (getArgs)-import SAT.Mios.Types-import SAT.Mios.Util.Stat--data Opt = Opt- {- threshold :: Double- , p1 :: (Double, Double)- , p2 :: (Double, Double)- , p3 :: (Int, Int)- , p4 :: (Int, Int)- , message :: String- , help :: Bool- }--optDefault :: Opt-optDefault = Opt 0 (0, 10) (0, 10) (0, 10) (0, 10) "#-*-mode:org-*-" False--options ::[OptDescr (Opt -> Opt)]-options =- [- Option ['t'] ["threshold"]- (ReqArg (\v c -> c { threshold = read v }) "0.0") "threshold for p1"- , Option [] ["UF250"]- (NoArg (\c -> c { threshold = 12109075.01 })) "threshold for UF250; 12109075.01 (7.083)"- , Option [] ["38bits"]- (NoArg (\c -> c { threshold = 191761341.00 })) "threshold for 38bits; 191761341.00 (8.283)"- , Option [] ["44bits"]- (NoArg (\c -> c { threshold = 5204447789.00 })) "threshold for 44bits; 5204447789.00 (9.716)"- , Option ['1'] ["p1"]- (ReqArg (\v c -> c { p1 = read v }) "\"(0,10)\"") "range of p1"- , Option ['2'] ["p2"]- (ReqArg (\v c -> c { p2 = read v }) "\"(0,10)\"") "range of p2"- , Option ['3'] ["p3"]- (ReqArg (\v c -> c { p3 = read v }) "\"(0,10)\"") "range of p3"- , Option ['4'] ["p4"]- (ReqArg (\v c -> c { p4 = read v }) "\"(0,10)\"") "range of p4"- , Option ['m'] ["message"]- (ReqArg (\v c -> c { message = undecodeNewline v }) "\"\"") "extra message embeded into output"- , Option ['h'] ["help"]- (NoArg (\c -> c { help = True })) "display help message"- ]--parseOptions :: String -> [String] -> IO Opt-parseOptions mes argv =- case getOpt Permute options argv of- (o, [], []) -> return $ foldl (flip id) optDefault o- (o, _, []) -> return $ foldl (flip id) optDefault o- (_, _, err) -> ioError (userError (concat err ++ usageInfo mes options))---- | builds "MiosProgramOption" from a String-parseOptionsFromArgs :: String -> IO Opt-parseOptionsFromArgs mes = parseOptions mes =<< getArgs--undecodeNewline :: String -> String-undecodeNewline [] = []-undecodeNewline [a] = [a]-undecodeNewline ('\\' : 'n' : x) = '\n' : undecodeNewline x-undecodeNewline (a : x) = a : undecodeNewline x--showf :: Double -> String-showf x = showFFloat (Just 2) x ""--main :: IO ()-main = do- opts <- parseOptionsFromArgs "gp-summary"- if help opts- then putStrLn $ usageInfo "" options- else do putStrLn $ message opts- putStrLn ""- putStrLn "| p1 | good | bad |"- putStrLn "| ---- | ---- | --- |"- result <- pickup opts . parseBy [(fst (header :: (String, MergedDump)), fromMergedCSV)] <$> getContents- mapM_ (putStrLn . toString) result- let ngs = sum $ map (fst . snd) result- nbs = sum $ map (snd . snd) result- putStrLn $ intercalate "," [showf (fromIntegral ngs / fromIntegral (ngs + nbs)), show (ngs + nbs) ++ "/" ++ show (ngs, nbs)]--toString :: (Double, (Int, Int)) -> String-toString (p1, (ng, nb)) = "| " ++ intercalate " | " [showf p1, show ng, show nb] ++ " |"--pickup :: Opt -> [MergedDump] -> [(Double, (Int, Int))]-pickup opts l = filter notEmpty $ map gather keys- where- notEmpty (_, (0, 0)) = False- notEmpty _ = True- thr = threshold opts- keys = nub $ map (gpParameter1 . snd. _mergedConf) l- gather :: Double -> (Double, (Int, Int))- gather key = (key, (ng, length targets - ng))- where- targets' :: [MergedDump]- targets' = filter ((key ==) . gpParameter1 . snd. _mergedConf) l- inBand :: MergedDump -> Bool- inBand (_mergedConf -> snd -> conf) = c1 && c2 && c3 && c4- where- c1 = inPair (p1 opts) (gpParameter1 conf)- c2 = inPair (p2 opts) (gpParameter2 conf)- c3 = inPair (p3 opts) (extraParameter3 conf)- c4 = inPair (p4 opts) (extraParameter4 conf)- inPair :: (Num a, Ord a) => (a, a) -> a -> Bool- inPair (b, t) x = b <= x && x <= t- targets = filter inBand targets'- ng = length $ filter (< thr) (map value targets)- value :: MergedDump -> Double- value m = case lookup PropagationS . (\(MiosStats s) -> s) . _mergedStat $ m of- Just (Right v) -> fromIntegral v- Just (Left v) -> v- Nothing -> 10000000
− MultiConflict/utils/pickup.hs
@@ -1,123 +0,0 @@--- | Usage:--- > mios-summary < average.csv > summary.tbl (for org-mode or github-flavored markdown)-module Main where--import Data.List (intercalate, lookup, maximumBy, minimumBy, nub)-import Data.Maybe (fromMaybe)-import Data.Ord (comparing)-import Numeric (showFFloat)-import System.Console.GetOpt (ArgDescr(..), ArgOrder(..), getOpt, OptDescr(..), usageInfo)-import System.Environment (getArgs)-import SAT.Mios.Types-import SAT.Mios.Util.Stat--data Opt = Opt- {- message :: String- , useLog :: Bool- , help :: Bool- }--optDefault :: Opt-optDefault = Opt "#-*-mode:org-*-" False False--options ::[OptDescr (Opt -> Opt)]-options =- [- Option ['m'] ["message"]- (ReqArg (\v c -> c { message = undecodeNewline v }) "\"string\"") "extra message embeded into output"- , Option ['l'] ["useLog"]- (NoArg (\c -> c { useLog = True })) "use Logarithmic value for propagation"- , Option ['h'] ["help"]- (NoArg (\c -> c { help = True })) "display help message"- ]--parseOptions :: String -> [String] -> IO Opt-parseOptions mes argv =- case getOpt Permute options argv of- (o, [], []) -> return $ foldl (flip id) optDefault o- (o, _, []) -> return $ foldl (flip id) optDefault o- (_, _, err) -> ioError (userError (concat err ++ usageInfo mes options))---- | builds "MiosProgramOption" from a String-parseOptionsFromArgs :: String -> IO Opt-parseOptionsFromArgs mes = parseOptions mes =<< getArgs--undecodeNewline :: String -> String-undecodeNewline [] = []-undecodeNewline [a] = [a]-undecodeNewline ('\\' : 'n' : x) = '\n' : undecodeNewline x-undecodeNewline (a : x) = a : undecodeNewline x--showf :: Double -> String-showf x = showFFloat (Just 2) x ""--showi :: Int -> String-showi x- | 3 <= length s = s- | otherwise = reverse . take 3 . (++ " ") . reverse $ s- where s = show x--showl :: Either Double Int -> String-showl (Left x) = showf x-showl (Right x) = showf (fromIntegral x)--main :: IO ()-main = do- opts <- parseOptionsFromArgs "gp-summary"- if help opts- then putStrLn $ usageInfo "" options- else do let parsers = [ (fst (header :: (String, MiosDump)), toMerge <$> fromCSV)- , (fst (header :: (String, MergedDump)), fromMergedCSV)]- putStrLn $ message opts- putStrLn ""- if useLog opts- then do putStrLn "| n | p1 | p2 | p3 | p4 | log(P) | conflict | learnt | backjump | re-st | rate | extra | pr/bj |"- putStrLn "| --- | ---- | ---- | --- | --- | ------ | -------- | -------- | -------- | ----- | ---- | ----- | ----- |"- else do putStrLn "| n | p1 | p2 | p3 | p4 | propagation | conflict | learnt | backjump | re-st | rate | extra | pr/bj |"- putStrLn "| --- | ---- | ---- | --- | --- | ----------- | -------- | -------- | -------- | ----- | ---- | ----- | ----- |"- d <- parseBy parsers <$> getContents- mapM_ (putStrLn . toSummary (useLog opts)) $ pickup True d- putStrLn ""- mapM_ (putStrLn . toSummary (useLog opts)) $ pickup False d- putStrLn ""--toSummary :: Bool -> MergedDump -> String-toSummary uLog (MergedDump (_, MiosConfiguration _ _ p1 p2 p3 p4) n (MiosStats l) _) =- "| " ++ intercalate " | " [show n, m', s', showf pr] ++ " |"- where- m' = intercalate " | " [showf p1, showf p2, showi p3, showi p4]- s' = intercalate " | " $ map (showl . snd) (convert uLog l) -- (tail . init $ l)- convert :: Bool -> [DumpedValue] -> [DumpedValue]- convert uL ks- | uL = logOf PropagationS : map valOf [ConflictS .. ExtraS]- | otherwise = map valOf [PropagationS .. ExtraS]- where- logOf :: DumpTag -> DumpedValue- logOf key = (key, Left $ logBase 10 (val key))- valOf key = (key, Left $ val key)- val :: DumpTag -> Double- val key- | Just (Left x) <- lookup key ks = x- | Just (Right x) <- lookup key ks = fromIntegral x- | otherwise = 0- pr = fromMaybe 0 $ div' <$> lookup PropagationS l <*> lookup BackjumpS l- div' :: Either Double Int -> Either Double Int -> Double- div' (Right a) (Right b) = fromIntegral a / fromIntegral b- div' (Right a) (Left b) = fromIntegral a / b- div' (Left a) (Right b) = a / fromIntegral b- div' (Left a) (Left b) = a / b--pickup :: Bool -> [MergedDump] -> [MergedDump]-pickup good l = map selectData keys- where- keys = nub $ map (gpParameter1 . snd. _mergedConf) l- selectData :: Double -> MergedDump- selectData key- | good = minimumBy (comparing value) $ filter ((key ==) . gpParameter1 . snd. _mergedConf) l- | otherwise = maximumBy (comparing value) $ filter ((key ==) . gpParameter1 . snd. _mergedConf) l- value :: MergedDump -> Double- value m = case lookup PropagationS . (\(MiosStats s) -> s) . _mergedStat $ m of- Just (Right v) -> fromIntegral v- Just (Left v) -> v- Nothing -> 10000000
− MultiConflict/utils/stat2csv.hs
@@ -1,10 +0,0 @@--- | Usage:--- > mios --stat -X ... | mios-stat2csv > a.csv-module Main where--import SAT.Mios.Util.Stat--main :: IO ()-main = do- putStrLn $ fst (header :: (String, MiosDump))- mapM_ (putStrLn . toCSV) =<< parseBy [("", fromStat)] <$> getContents
− MultiConflict/utils/summary.hs
@@ -1,104 +0,0 @@--- | Usage:--- > mios-summary < average.csv > summary.tbl (for org-mode or github-flavored markdown)-module Main where--import Data.List (intercalate, lookup)-import Data.Maybe (fromMaybe)-import Numeric (showFFloat)-import System.Console.GetOpt (ArgDescr(..), ArgOrder(..), getOpt, OptDescr(..), usageInfo)-import System.Environment (getArgs)-import SAT.Mios.Types-import SAT.Mios.Util.Stat--data Opt = Opt- {- message :: String- , useLog :: Bool- , help :: Bool- }--optDefault :: Opt-optDefault = Opt "#-*-mode:org-*-" False False--options ::[OptDescr (Opt -> Opt)]-options =- [- Option ['m'] ["message"]- (ReqArg (\v c -> c { message = undecodeNewline v }) "\"string\"") "extra message embeded into output"- , Option ['l'] ["useLog"]- (NoArg (\c -> c { useLog = True })) "use Logarithmic value for propagation"- , Option ['h'] ["help"]- (NoArg (\c -> c { help = True })) "display help message"- ]--parseOptions :: String -> [String] -> IO Opt-parseOptions mes argv =- case getOpt Permute options argv of- (o, [], []) -> return $ foldl (flip id) optDefault o- (o, _, []) -> return $ foldl (flip id) optDefault o- (_, _, err) -> ioError (userError (concat err ++ usageInfo mes options))---- | builds "MiosProgramOption" from a String-parseOptionsFromArgs :: String -> IO Opt-parseOptionsFromArgs mes = parseOptions mes =<< getArgs--undecodeNewline :: String -> String-undecodeNewline [] = []-undecodeNewline [a] = [a]-undecodeNewline ('\\' : 'n' : x) = '\n' : undecodeNewline x-undecodeNewline (a : x) = a : undecodeNewline x--showf :: Double -> String-showf x = showFFloat (Just 2) x ""--showi :: Int -> String-showi x- | 3 <= length s = s- | otherwise = reverse . take 3 . (++ " ") . reverse $ s- where s = show x--showl :: Either Double Int -> String-showl (Left x) = showf x-showl (Right x) = showf (fromIntegral x)--main :: IO ()-main = do- opts <- parseOptionsFromArgs "gp-summary"- if help opts- then putStrLn $ usageInfo "" options- else do let parsers = [ (fst (header :: (String, MiosDump)), toMerge <$> fromCSV)- , (fst (header :: (String, MergedDump)), fromMergedCSV)]- putStrLn $ message opts- putStrLn ""- if useLog opts- then do putStrLn "| n | p1 | p2 | p3 | p4 | log(P) | conflict | learnt | backjump | re-st | rate | extra | pr/bj |"- putStrLn "| --- | ---- | ---- | --- | --- | ------ | -------- | -------- | -------- | ----- | ---- | ----- | ----- |"- else do putStrLn "| n | p1 | p2 | p3 | p4 | propagation | conflict | learnt | backjump | re-st | rate | extra | pr/bj |"- putStrLn "| --- | ---- | ---- | --- | --- | ----------- | -------- | -------- | -------- | ----- | ---- | ----- | ----- |"- mapM_ (putStrLn . toSummary (useLog opts)) . parseBy parsers =<< getContents--toSummary :: Bool -> MergedDump -> String-toSummary uLog (MergedDump (_, MiosConfiguration _ _ p1 p2 p3 p4) n (MiosStats l) _) =- "| " ++ intercalate " | " [show n, m', s', showf pr] ++ " |"- where- m' = intercalate " | " [showf p1, showf p2, showi p3, showi p4]- s' = intercalate " | " $ map (showl . snd) (convert uLog l) -- (tail . init $ l)- convert :: Bool -> [DumpedValue] -> [DumpedValue]- convert uL ks- | uL = logOf PropagationS : map valOf [ConflictS .. ExtraS]- | otherwise = map valOf [PropagationS .. ExtraS]- where- logOf :: DumpTag -> DumpedValue- logOf key = (key, Left $ logBase 10 (val key))- valOf key = (key, Left $ val key)- val :: DumpTag -> Double- val key- | Just (Left x) <- lookup key ks = x- | Just (Right x) <- lookup key ks = fromIntegral x- | otherwise = 0- pr = fromMaybe 0 $ div' <$> lookup PropagationS l <*> lookup BackjumpS l- div' :: Either Double Int -> Either Double Int -> Double- div' (Right a) (Right b) = fromIntegral a / fromIntegral b- div' (Right a) (Left b) = fromIntegral a / b- div' (Left a) (Right b) = a / fromIntegral b- div' (Left a) (Left b) = a / b
mios.cabal view
@@ -1,190 +1,126 @@--- Initial mios.cabal generated by cabal init. For further documentation,--- see http://haskell.org/cabal/users-guide/--name: mios-version: 1.5.4-synopsis: A Minisat-based CDCL SAT solver in Haskell-description:+-- This file has been generated from package.yaml by hpack version 0.20.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 1a93fd2f2b1b1d0ba5e203ac6b48c5ca8abd31384c1955776cfb00969c311cbb - A modern and very fast SAT solver written in Haskell, using CDCL, watch literals, VSIDS,- blocking-literals, phase saving, LBD, Glucose-like restart and so on.- 'Mios' is an abbreviation of 'Minisat-based Implementation and Optimization Study on SAT solver'.- .+name: mios+version: 1.6.0+synopsis: A Minisat-based CDCL SAT solver in Haskell+description: A modern and very fast SAT solver written in Haskell, using CDCL, watch literals, VSIDS, blocking-literals, phase saving, LBD, Glucose-like restart and so on. 'Mios' is an abbreviation of 'Minisat-based Implementation and Optimization Study on SAT solver'.+category: Artificial Intelligence, Constraints+homepage: https://github.com/shnarazk/mios+bug-reports: https://github.com/shnarazk/mios/issues+author: Shuji Narazaki+maintainer: narazaki@nagasaki-u.ac.jp+copyright: 2017 Shuji Narazaki+license: GPL-3+license-file: LICENSE+build-type: Simple+cabal-version: >= 1.10 -homepage: https://github.com/shnarazk/mios-license: GPL-3-license-file: LICENSE-author: Shuji Narazaki <narazaki@nagasaki-u.ac.jp>-maintainer: Shuji Narazaki <narazaki@nagasaki-u.ac.jp>-category: Artificial Intelligence, Constraints-build-type: Simple-cabal-version: >=1.16-extra-source-files: app/sample.hs+extra-source-files:+ app/sample.hs source-repository head- type: git- location: https://github.com/shnarazk/mios--Flag llvm- Description: Compile with llvm- Default: False+ type: git+ location: https://github.com/shnarazk/mios -Flag MultiConflict- Description: Build tools in MultiConflict- Default: False+flag llvm+ description: Compile with llvm+ manual: True+ default: False -Flag utils- Description: Build misc utilities for developer- Default: False+flag utils+ description: Build misc utilities for developer+ manual: True+ default: False library- hs-source-dirs: src- default-language: Haskell2010- default-extensions: Strict- other-extensions: BangPatterns- FlexibleContexts- FlexibleInstances- FunctionalDependencies- MagicHash- MultiParamTypeClasses- RecordWildCards- ScopedTypeVariables- TypeFamilies- Trustworthy- TupleSections- Safe- UndecidableInstances- ViewPatterns- exposed-modules:- SAT.Mios.Clause- SAT.Mios.ClauseManager- SAT.Mios.ClausePool- SAT.Mios.Criteria- SAT.Mios.Main- SAT.Mios.OptionParser- SAT.Mios.Solver- SAT.Mios.Vec- SAT.Mios.Types- SAT.Mios.Validator- SAT.Mios.Util.DIMACS.MinisatReader- SAT.Mios.Util.DIMACS.Reader- SAT.Mios.Util.DIMACS.Writer- SAT.Mios.Util.DIMACS- SAT.Mios.Util.BoolExp- SAT.Mios- build-depends: base >=4.10 && < 5, vector >=0.12, ghc-prim >=0.5, bytestring >=0.10, primitive >=0.6+ hs-source-dirs:+ src+ default-extensions: Strict+ build-depends:+ base >=4.7 && <5+ , bytestring >=0.10+ , ghc-prim >=0.5+ , primitive >=0.6+ , vector >=0.12 if flag(llvm)- ghc-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -optlc-O3 -fwarn-missing-signatures+ ghc-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -optlc-O3 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -fprof-auto else- ghc-options: -O2 -funbox-strict-fields -msse2 -fwarn-missing-signatures+ ghc-options: -O2 -funbox-strict-fields -msse2 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fprof-auto+ exposed-modules:+ SAT.Mios+ SAT.Mios.Clause+ SAT.Mios.ClauseManager+ SAT.Mios.ClausePool+ SAT.Mios.Criteria+ SAT.Mios.Main+ SAT.Mios.OptionParser+ SAT.Mios.Solver+ SAT.Mios.Types+ SAT.Mios.Util.BoolExp+ SAT.Mios.Util.DIMACS+ SAT.Mios.Util.DIMACS.MinisatReader+ SAT.Mios.Util.DIMACS.Reader+ SAT.Mios.Util.DIMACS.Writer+ SAT.Mios.Validator+ SAT.Mios.Vec+ other-modules:+ Paths_mios+ default-language: Haskell2010 -executable mios-1.5.4- hs-source-dirs: app- main-is: mios.hs- buildable: True- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios+executable cnf-stat+ main-is: cnf-stat.hs+ hs-source-dirs:+ utils+ default-extensions: Strict+ build-depends:+ base >=4.7 && <5+ , bytestring >=0.10+ , ghc-prim >=0.5+ , mios+ , primitive >=0.6+ , vector >=0.12 if flag(llvm)- ghc-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -optlc-O3 -rtsopts -fwarn-missing-signatures+ ghc-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -optlc-O3 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -fprof-auto else- ghc-options: -O2 -funbox-strict-fields -msse2 -rtsopts -fwarn-missing-signatures--executable cnf-stat- hs-source-dirs: utils- main-is: cnf-stat.hs+ ghc-options: -O2 -funbox-strict-fields -msse2 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fprof-auto if flag(utils)- buildable: True+ buildable: True else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields+ buildable: False+ other-modules:+ Paths_mios+ default-language: Haskell2010 -executable mios-mc- hs-source-dirs: MultiConflict app- main-is: mios.hs- if flag(MultiConflict)- buildable: True- else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10+executable mios-1.6.0+ main-is: mios.hs+ hs-source-dirs:+ app+ default-extensions: Strict+ build-depends:+ base >=4.7 && <5+ , bytestring >=0.10+ , ghc-prim >=0.5+ , mios+ , primitive >=0.6+ , vector >=0.12 if flag(llvm)- ghc-options: -O2 -ignore-asserts -funbox-strict-fields -fllvm -optlo-O2 -optlc-O2- else- ghc-options: -O2 -ignore-asserts -funbox-strict-fields--executable mc-dump2csv- hs-source-dirs: MultiConflict- main-is: utils/dump2csv.hs- if flag(MultiConflict) && flag(utils)- buildable: True- else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields--executable mc-averagecsv- hs-source-dirs: MultiConflict- main-is: utils/averagecsv.hs- if flag(MultiConflict) && flag(utils)- buildable: True- else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields--executable mc-summary- hs-source-dirs: MultiConflict- main-is: utils/summary.hs- if flag(MultiConflict) && flag(utils)- buildable: True- else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields--executable mc-stat2csv- hs-source-dirs: MultiConflict- main-is: utils/stat2csv.hs- if flag(MultiConflict) && flag(utils)- buildable: True- else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields--executable mc-pickup- hs-source-dirs: MultiConflict- main-is: utils/pickup.hs- if flag(MultiConflict) && flag(utils)- buildable: True+ ghc-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -optlc-O3 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -fprof-auto else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields--executable mc-numbers- hs-source-dirs: MultiConflict- main-is: utils/numbers.hs- if flag(MultiConflict) && flag(utils)- buildable: True+ ghc-options: -O2 -funbox-strict-fields -msse2 -fwarn-missing-signatures+ ghc-prof-options: -O2 -funbox-strict-fields -fprof-auto+ if flag(llvm)+ ghc-prof-options: -O2 -funbox-strict-fields -fllvm -optlo-O3 -fprof-auto -rtsopts else- buildable: False- default-language: Haskell2010- default-extensions: Strict- build-depends: base >=4.10 && < 5, mios, bytestring >=0.10- ghc-options: -O1 -ignore-asserts -funbox-strict-fields+ ghc-prof-options: -O2 -funbox-strict-fields -fprof-auto -rtsopts+ other-modules:+ Paths_mios+ default-language: Haskell2010
src/SAT/Mios.hs view
@@ -52,7 +52,7 @@ -- | version name versionId :: String-versionId = "mios-1.5.4 -- https://github.com/shnarazk/mios"+versionId = "mios-1.6.0 -- https://github.com/shnarazk/mios" reportElapsedTime :: Bool -> String -> Integer -> IO Integer reportElapsedTime False _ 0 = return 0