Copyright | (c) Levent Erkok |
---|---|
License | BSD3 |
Maintainer | erkokl@gmail.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Data.SBV.Examples.Uninterpreted.Function
Contents
Description
Demonstrates function counter-examples
Documentation
thmGood :: SWord8 -> SWord8 -> SWord8 -> SBool Source
Asserts that f x z == f (y+2) z
whenever x == y+2
. Naturally correct:
>>>
prove thmGood
Q.E.D.
thmBad :: SWord8 -> SWord8 -> SBool Source
Asserts that f
is commutative; which is not necessarily true!
Indeed, the SMT solver returns a counter-example function that is
not commutative. (Note that we have to use Yices as Z3 function
counterexamples are not yet supported by sbv.) We have:
>>>
proveWith yicesSMT09 $ forAll ["x", "y"] thmBad
Falsifiable. Counter-example: x = 0 :: SWord8 y = 128 :: SWord8 -- uninterpreted: f f 128 0 = 32768 f _ _ = 0
Note how the counterexample function f
returned by Yices violates commutativity;
thus providing evidence that the asserted theorem is not valid.
yicesSMT09 :: SMTConfig Source
Old version of Yices, which supports nice output for uninterpreted functions.