sbv: Symbolic bit vectors: Bit-precise verification and automatic C-code generation.
Express properties about bit-precise Haskell programs and automatically prove them using SMT solvers. Automatically generate C programs from Haskell functions. The SBV library adds support for symbolic bit vectors, allowing formal models of bit-precise programs to be created.
$ ghci -XScopedTypeVariables Prelude> :m Data.SBV Prelude Data.SBV> prove $ \(x::SWord8) -> x `shiftL` 2 .== 4*x Q.E.D. Prelude Data.SBV> prove $ forAll ["x"] $ \(x::SWord8) -> x `shiftL` 2 .== x Falsifiable. Counter-example: x = 128 :: SWord8
The library introduces the following types and concepts:
SBool
: Symbolic Booleans (bits)SWord8
,SWord16
,SWord32
,SWord64
: Symbolic Words (unsigned)SInt8
,SInt16
,SInt32
,SInt64
: Symbolic Ints (signed)SInteger
: Symbolic unbounded integers (signed)SArray
,SFunArray
: Flat arrays of symbolic valuesSTree
: Full binary trees of symbolic values (for fast symbolic access)Symbolic polynomials over GF(2^n), and polynomial arithmetic
Uninterpreted constants and functions over symbolic values, with user defined SMT-Lib axioms
Functions built out of these types can be:
proven correct via an external SMT solver (the
prove
function)checked for satisfiability (the
sat
, andallSat
functions)used in synthesis (the
sat
function with existential variables)optimized with respect to cost functions (the
optimize
,maximize
, andminimize
functions)quick-checked
used in concrete test case generation (the
genTest
function)
Predicates can have both existential and universal variables. Use of alternating quantifiers provides considerable expressive power. Furthermore, existential variables allow synthesis via model generation.
The SBV library can also compile Haskell functions that manipulate symbolic values directly to C, rendering them as straight-line C programs.
In addition to the library, the installation will create the
executable SBVUnitTests
. You should run it once the installation is complete,
to make sure the unit tests are run and all is well.
SBV is hosted at GitHub: http://github.com/LeventErkok/sbv. Comments, bug reports, and patches are always welcome.
The following people reported bugs, provided comments/feedback, or contributed to the development of SBV in various ways: Ian Blumenfeld, Ian Calvert, Iavor Diatchki, Tom Hawkins, Lee Pike, Austin Seipp, Don Stewart, Josef Svenningsson, and Nis Wegmann.
Release notes can be seen at: http://github.com/LeventErkok/sbv/blob/master/RELEASENOTES.
[Skip to Readme]
Modules
[Index]
- Data
- Data.SBV
- Examples
- BitPrecise
- CodeGeneration
- Crypto
- Existentials
- Polynomials
- Puzzles
- Uninterpreted
- Data.SBV.Internals
- Examples
- Data.SBV
Downloads
- sbv-0.9.24.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 0.9.9, 0.9.10, 0.9.11, 0.9.12, 0.9.13, 0.9.14, 0.9.15, 0.9.16, 0.9.17, 0.9.18, 0.9.19, 0.9.20, 0.9.21, 0.9.22, 0.9.23, 0.9.24, 1.0, 1.1, 1.2, 1.3, 1.4, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 2.10, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.10, 5.11, 5.12, 5.13, 5.14, 5.15, 6.0, 6.1, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 7.10, 7.11, 7.12, 7.13, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 8.10, 8.11, 8.12, 8.13, 8.14, 8.15, 8.16, 8.17, 9.0, 9.1, 9.2, 10.0, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 10.12, 11.0, 11.1, 11.2, 11.3, 11.4 (info) |
---|---|
Dependencies | array (>=0.3.0.1), base (>=3 && <4.8), containers (>=0.3.0.0), deepseq (>=1.1.0.2), directory (>=1.0.1.1), filepath (>=1.1.0.4), HUnit (>=1.2.4.2), mtl (>=2.0.1.0), old-time (>=1.0.0.5), pretty (>=1.0.1.1), process (>=1.0.1.3), QuickCheck (>=2.4.0.1), random (>=1.0.1.1), strict-concurrency (>=0.2.4.1) [details] |
License | BSD-3-Clause |
Copyright | Levent Erkok, 2010-2011 |
Author | Levent Erkok |
Maintainer | Levent Erkok (erkokl@gmail.com) |
Revised | Revision 1 made by Bodigrim at 2023-11-13T00:13:01Z |
Category | Formal Methods, Theorem Provers, Bit vectors, Symbolic Computation, Math, SMT |
Home page | http://github.com/LeventErkok/sbv |
Bug tracker | http://github.com/LeventErkok/sbv/issues |
Source repo | head: git clone git://github.com/LeventErkok/sbv.git |
Uploaded | by LeventErkok at 2011-12-28T08:34:12Z |
Distributions | Arch:9.2, Debian:8.7, LTSHaskell:11.0, Stackage:11.4 |
Reverse Dependencies | 12 direct, 11 indirect [details] |
Executables | SBVUnitTests |
Downloads | 80832 total (102 in the last 30 days) |
Rating | 2.75 (votes: 9) [estimated by Bayesian average] |
Your Rating | |
Status | Docs uploaded by user Build status unknown [no reports yet] |