| Copyright | (c) Levent Erkok |
|---|---|
| License | BSD3 |
| Maintainer | erkokl@gmail.com |
| Stability | experimental |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.SBV
Contents
- Symbolic types
- Arrays of symbolic values
- Creating symbolic values
- Symbolic Equality and Comparisons
- Conditionals: Mergeable values
- Symbolic integral numbers
- Division and Modulus
- Bit-vector operations
- IEEE-floating point numbers
- Enumerations
- Uninterpreted sorts, constants, and functions
- Stopping unrolling: Defined functions
- Special relations
- Properties, proofs, and satisfiability
- Constraints and Quantifiers
- Checking safety
- Quick-checking
- Optimization
- Model extraction
- SMT Interface
- Abstract SBV type
- Module exports
Description
(The sbv library is hosted at http://github.com/LeventErkok/sbv. Comments, bug reports, and patches are always welcome.)
SBV: SMT Based Verification
Express properties about Haskell programs and automatically prove them using SMT solvers.
>>>prove $ \x -> x `shiftL` 2 .== 4 * (x :: SWord8)Q.E.D.
>>>prove $ \x -> x `shiftL` 2 .== 2 * (x :: SWord8)Falsifiable. Counter-example: s0 = 64 :: Word8
And similarly, sat finds a satisfying instance. The types involved are:
prove::Provablea => a ->IOThmResultsat::Satisfiablea => a ->