sbv 5.2 → 5.3
raw patch · 10 files changed
+96/−56 lines, 10 filesdep +base-compatdep ~basedep ~mtl
Dependencies added: base-compat
Dependency ranges changed: base, mtl
Files
- CHANGES.md +10/−1
- Data/SBV.hs +6/−0
- Data/SBV/BitVectors/Data.hs +3/−0
- Data/SBV/BitVectors/Model.hs +5/−3
- Data/SBV/BitVectors/Symbolic.hs +5/−1
- Data/SBV/Compilers/CodeGen.hs +5/−1
- Data/SBV/Dynamic.hs +6/−2
- Data/SBV/SMT/SMTLib2.hs +2/−4
- SBVUnitTest/SBVUnitTestBuildTime.hs +1/−1
- sbv.cabal +53/−43
CHANGES.md view
@@ -1,7 +1,16 @@ * Hackage: <http://hackage.haskell.org/package/sbv> * GitHub: <http://leventerkok.github.com/sbv/> -* Latest Hackage released version: 5.2, 2015-10-12+* Latest Hackage released version: 5.3, 2015-10-20++### Version 5.3, 2015-10-20++ * Main point of this release to make SBV compile with GHC 7.8 again, to accommodate mainly+ for Cryptol. As Cryptol moves to GHC >= 7.10, we intend to remove the "compatibility" changes+ again. Thanks to Adam Foltzer for the patch.++ * Minor mods to how bitvector equality/inequality are translated to SMTLib. No user visible+ impact. ### Version 5.2, 2015-10-12
Data/SBV.hs view
@@ -107,6 +107,12 @@ {-# LANGUAGE FlexibleInstances #-} +-- TODO: remove OverlappingInstances and these warning suppressions+-- once support is dropped for GHC 7.8+{-# OPTIONS_GHC -fno-warn-deprecated-flags #-}+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}+{-# LANGUAGE OverlappingInstances #-}+ module Data.SBV ( -- * Programming with symbolic values -- $progIntro
Data/SBV/BitVectors/Data.hs view
@@ -67,6 +67,9 @@ import Data.SBV.BitVectors.Concrete import Data.SBV.BitVectors.Symbolic +import Prelude ()+import Prelude.Compat+ -- | A class for capturing values that have a sign and a size (finite or infinite) -- minimal complete definition: kindOf. This class can be automatically derived -- for data-types that have a 'Data' instance; this is useful for creating uninterpreted
Data/SBV/BitVectors/Model.hs view
@@ -854,10 +854,12 @@ -- this operation. One issue is how division by 0 behaves. The verification -- technology requires total functions, and there are several design choices -- here. We follow Isabelle/HOL approach of assigning the value 0 for division--- by 0. Therefore, we impose the following law:+-- by 0. Therefore, we impose the following pair of laws: ----- @ x `sQuotRem` 0 = (0, x) @--- @ x `sDivMod` 0 = (0, x) @+-- @+-- x `sQuotRem` 0 = (0, x)+-- x `sDivMod` 0 = (0, x)+-- @ -- -- Note that our instances implement this law even when @x@ is @0@ itself. --
Data/SBV/BitVectors/Symbolic.hs view
@@ -63,6 +63,7 @@ import Data.Maybe (isJust, fromJust, fromMaybe) import qualified Data.Generics as G (Data(..))+import qualified Data.Typeable as T (Typeable) import qualified Data.IntMap as IMap (IntMap, empty, size, toAscList, lookup, insert, insertWith) import qualified Data.Map as Map (Map, empty, toList, size, insert, lookup) import qualified Data.Set as Set (Set, empty, toList, insert)@@ -75,6 +76,9 @@ import Data.SBV.BitVectors.Kind import Data.SBV.BitVectors.Concrete +import Prelude ()+import Prelude.Compat+ -- | A symbolic node id newtype NodeId = NodeId Int deriving (Eq, Ord) @@ -1019,7 +1023,7 @@ | RoundTowardPositive -- ^ Round towards positive infinity. (Also known as rounding-up or ceiling.) | RoundTowardNegative -- ^ Round towards negative infinity. (Also known as rounding-down or floor.) | RoundTowardZero -- ^ Round towards zero. (Also known as truncation.)- deriving (Eq, Ord, Show, Read, G.Data, Bounded, Enum)+ deriving (Eq, Ord, Show, Read, T.Typeable, G.Data, Bounded, Enum) -- | Solver configuration. See also 'z3', 'yices', 'cvc4', 'boolector', 'mathSAT', etc. which are instantiations of this type for those solvers, with -- reasonable defaults. In particular, custom configuration can be created by varying those values. (Such as @z3{verbose=True}@.)
Data/SBV/Compilers/CodeGen.hs view
@@ -14,8 +14,9 @@ module Data.SBV.Compilers.CodeGen where +import Control.Monad (filterM, replicateM, unless) import Control.Monad.Trans-import Control.Monad.State.Lazy+import Control.Monad.State.Lazy (MonadState, StateT(..), modify) import Data.Char (toLower, isSpace) import Data.List (nub, isPrefixOf, intercalate, (\\)) import System.Directory (createDirectory, doesDirectoryExist, doesFileExist)@@ -26,6 +27,9 @@ import Data.SBV.BitVectors.Data import Data.SBV.BitVectors.Symbolic (svToSymSW, svMkSymVar, outputSVal)++import Prelude ()+import Prelude.Compat -- | Abstract over code generation for different languages class CgTarget a where
Data/SBV/Dynamic.hs view
@@ -62,7 +62,7 @@ -- ** Proving properties , proveWith -- ** Checking satisfiability- , satWith+ , satWith, allSatWith -- * Proving properties using multiple solvers , proveWithAll, proveWithAny, satWithAll, satWithAny -- * Model extraction@@ -130,7 +130,7 @@ import qualified Data.SBV as SBV (SBool, proveWithAll, proveWithAny, satWithAll, satWithAny) import qualified Data.SBV.BitVectors.Data as SBV (SBV(..)) import qualified Data.SBV.BitVectors.Model as SBV (isSatisfiableInCurrentPath)-import qualified Data.SBV.Provers.Prover as SBV (proveWith, satWith, compileToSMTLib, generateSMTBenchmarks)+import qualified Data.SBV.Provers.Prover as SBV (proveWith, satWith, allSatWith, compileToSMTLib, generateSMTBenchmarks) import qualified Data.SBV.SMT.SMT as SBV (Modelable(getModel, getModelDictionary)) -- | Reduce a condition (i.e., try to concretize it) under the given path@@ -170,6 +170,10 @@ -- | Find a satisfying assignment using the given SMT-solver satWith :: SMTConfig -> Symbolic SVal -> IO SatResult satWith cfg s = SBV.satWith cfg (fmap toSBool s)++-- | Find all satisfying assignments using the given SMT-solver+allSatWith :: SMTConfig -> Symbolic SVal -> IO AllSatResult+allSatWith cfg s = SBV.allSatWith cfg (fmap toSBool s) -- | Prove a property with multiple solvers, running them in separate threads. The -- results will be returned in the order produced.
Data/SBV/SMT/SMTLib2.hs view
@@ -349,10 +349,8 @@ lift1B bOp vOp | boolOp = lift1 bOp | True = lift1 vOp- eqBV sgn sbvs- | boolOp = lift2 "=" sgn sbvs- | True = "(= " ++ lift2 "bvcomp" sgn sbvs ++ " #b1)"- neqBV sgn sbvs = "(not " ++ eqBV sgn sbvs ++ ")"+ eqBV = lift2 "="+ neqBV = lift2 "distinct" equal sgn sbvs | doubleOp = lift2 "fp.eq" sgn sbvs | floatOp = lift2 "fp.eq" sgn sbvs
SBVUnitTest/SBVUnitTestBuildTime.hs view
@@ -2,4 +2,4 @@ module SBVUnitTestBuildTime (buildTime) where buildTime :: String-buildTime = "Sun Oct 11 23:08:47 PDT 2015"+buildTime = "Tue Oct 20 20:01:47 PDT 2015"
sbv.cabal view
@@ -1,5 +1,5 @@ Name: sbv-Version: 5.2+Version: 5.3 Category: Formal Methods, Theorem Provers, Bit vectors, Symbolic Computation, Math, SMT Synopsis: SMT Based Verification: Symbolic Haskell theorem prover using SMT solving. Description: Express properties about Haskell programs and automatically prove them using SMT@@ -30,7 +30,6 @@ other-extensions: BangPatterns DefaultSignatures DeriveDataTypeable- DeriveAnyClass FlexibleContexts FlexibleInstances FunctionalDependencies@@ -45,7 +44,10 @@ TupleSections TypeOperators TypeSynonymInstances- Build-Depends : base >= 4 && < 5+ if impl(ghc >= 7.10.1)+ other-extensions: DeriveAnyClass+ Build-Depends : base >= 4.7 && < 5+ , base-compat >= 0.6 , array, async, containers, deepseq, directory, filepath, old-time , pretty, process, mtl, QuickCheck, random, syb, data-binary-ieee754 , crackNum@@ -58,43 +60,44 @@ , Data.SBV.Bridge.ABC , Data.SBV.Dynamic , Data.SBV.Internals- , Data.SBV.Examples.BitPrecise.BitTricks- , Data.SBV.Examples.BitPrecise.Legato- , Data.SBV.Examples.BitPrecise.MergeSort- , Data.SBV.Examples.BitPrecise.MultMask- , Data.SBV.Examples.BitPrecise.PrefixSum- , Data.SBV.Examples.CodeGeneration.AddSub- , Data.SBV.Examples.CodeGeneration.CRC_USB5- , Data.SBV.Examples.CodeGeneration.Fibonacci- , Data.SBV.Examples.CodeGeneration.GCD- , Data.SBV.Examples.CodeGeneration.PopulationCount- , Data.SBV.Examples.CodeGeneration.Uninterpreted- , Data.SBV.Examples.Crypto.AES- , Data.SBV.Examples.Crypto.RC4- , Data.SBV.Examples.Existentials.CRCPolynomial- , Data.SBV.Examples.Existentials.Diophantine- , Data.SBV.Examples.Misc.Enumerate- , Data.SBV.Examples.Misc.Floating- , Data.SBV.Examples.Misc.ModelExtract- , Data.SBV.Examples.Misc.Word4- , Data.SBV.Examples.Polynomials.Polynomials- , Data.SBV.Examples.Puzzles.Birthday- , Data.SBV.Examples.Puzzles.Coins- , Data.SBV.Examples.Puzzles.Counts- , Data.SBV.Examples.Puzzles.DogCatMouse- , Data.SBV.Examples.Puzzles.Euler185- , Data.SBV.Examples.Puzzles.Fish- , Data.SBV.Examples.Puzzles.MagicSquare- , Data.SBV.Examples.Puzzles.NQueens- , Data.SBV.Examples.Puzzles.SendMoreMoney- , Data.SBV.Examples.Puzzles.Sudoku- , Data.SBV.Examples.Puzzles.U2Bridge- , Data.SBV.Examples.Uninterpreted.AUF- , Data.SBV.Examples.Uninterpreted.Deduce- , Data.SBV.Examples.Uninterpreted.Function- , Data.SBV.Examples.Uninterpreted.Shannon- , Data.SBV.Examples.Uninterpreted.Sort- , Data.SBV.Examples.Uninterpreted.UISortAllSat+ if impl(ghc >= 7.10.1)+ exposed-modules : Data.SBV.Examples.BitPrecise.BitTricks+ , Data.SBV.Examples.BitPrecise.Legato+ , Data.SBV.Examples.BitPrecise.MergeSort+ , Data.SBV.Examples.BitPrecise.MultMask+ , Data.SBV.Examples.BitPrecise.PrefixSum+ , Data.SBV.Examples.CodeGeneration.AddSub+ , Data.SBV.Examples.CodeGeneration.CRC_USB5+ , Data.SBV.Examples.CodeGeneration.Fibonacci+ , Data.SBV.Examples.CodeGeneration.GCD+ , Data.SBV.Examples.CodeGeneration.PopulationCount+ , Data.SBV.Examples.CodeGeneration.Uninterpreted+ , Data.SBV.Examples.Crypto.AES+ , Data.SBV.Examples.Crypto.RC4+ , Data.SBV.Examples.Existentials.CRCPolynomial+ , Data.SBV.Examples.Existentials.Diophantine+ , Data.SBV.Examples.Misc.Enumerate+ , Data.SBV.Examples.Misc.Floating+ , Data.SBV.Examples.Misc.ModelExtract+ , Data.SBV.Examples.Misc.Word4+ , Data.SBV.Examples.Polynomials.Polynomials+ , Data.SBV.Examples.Puzzles.Birthday+ , Data.SBV.Examples.Puzzles.Coins+ , Data.SBV.Examples.Puzzles.Counts+ , Data.SBV.Examples.Puzzles.DogCatMouse+ , Data.SBV.Examples.Puzzles.Euler185+ , Data.SBV.Examples.Puzzles.Fish+ , Data.SBV.Examples.Puzzles.MagicSquare+ , Data.SBV.Examples.Puzzles.NQueens+ , Data.SBV.Examples.Puzzles.SendMoreMoney+ , Data.SBV.Examples.Puzzles.Sudoku+ , Data.SBV.Examples.Puzzles.U2Bridge+ , Data.SBV.Examples.Uninterpreted.AUF+ , Data.SBV.Examples.Uninterpreted.Deduce+ , Data.SBV.Examples.Uninterpreted.Function+ , Data.SBV.Examples.Uninterpreted.Shannon+ , Data.SBV.Examples.Uninterpreted.Sort+ , Data.SBV.Examples.Uninterpreted.UISortAllSat Other-modules : Data.SBV.BitVectors.AlgReals , Data.SBV.BitVectors.Concrete , Data.SBV.BitVectors.Data@@ -131,12 +134,16 @@ Executable SBVUnitTests default-language: Haskell2010 ghc-options : -Wall- other-extensions: Rank2Types+ other-extensions: DeriveAnyClass+ Rank2Types RankNTypes ScopedTypeVariables TupleSections- Build-depends : base >= 4 && < 5+ if impl(ghc >= 7.10.1)+ Build-depends : base >= 4.8 && < 5 , HUnit, directory, filepath, process, syb, sbv, data-binary-ieee754+ else+ Buildable : False Hs-Source-Dirs : SBVUnitTest main-is : SBVUnitTest.hs Other-modules : SBVUnitTestBuildTime@@ -206,8 +213,11 @@ type : exitcode-stdio-1.0 default-language: Haskell2010 ghc-options : -Wall -with-rtsopts=-K64m- Build-depends : base >= 4 && < 5+ if impl(ghc >= 7.10.1)+ Build-depends : base >= 4.8 && < 5 , HUnit, directory, filepath, syb, sbv, data-binary-ieee754+ else+ Buildable : False Hs-Source-Dirs : SBVUnitTest main-is : SBVBasicTests.hs Other-modules : SBVBasicTests