Copyright | (c) Joel Burget Levent Erkok |
---|---|
License | BSD3 |
Maintainer | erkokl@gmail.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
A basic tuple use case, also demonstrating regular expressions, strings, etc. This is a basic template for getting SBV to produce valid data for applications that require inputs that satisfy arbitrary criteria.
Documentation
type Dict a b = SBV [(a, b)] Source #
A dictionary is a list of lookup values. Note that we
store the type [(a, b)]
as a symbolic value here, mixing
sequences and tuples.
example :: IO [(String, Integer)] Source #
Create a dictionary of length 5, such that each element has an string key and each value is the length of the key. We impose a few more constraints to make the output interesting. For instance, you might get:
ghci> example [("nt_",3),("dHAk",4),("kzkk0",5),("mZxs9s",6),("c32'dPM",7)]
Depending on your version of z3, a different answer might be provided. Here, we check that it satisfies our length conditions:
>>>
import Data.List (genericLength)
>>>
example >>= \ex -> return (length ex == 5 && all (\(l, i) -> genericLength l == i) ex)
True