There seems to be an issue with (at least) the restricted state verification.
Using the following file (in a template-project context):
import Blarney
notId :: Bit 1 -> Bit 1
notId x = s
where
s = x .^. c
p = delay 0 $ delay 1 p
c = delay 0 (p .&. s)
prop :: Bit 1 -> Action ()
prop x = assert (notId x === x) "notId === id"
main :: IO ()
main = do
verifyWith cnfNoRestr prop
verifyWith cnfRestr prop
where
cnfRestr = dfltVerifyConf { verifyConfMode = Induction (IncreaseFrom 1) True }
cnfNoRestr = dfltVerifyConf { verifyConfMode = Induction (IncreaseFrom 1) False }
There seems to be an issue with (at least) the restricted state verification. Using the following file (in a template-project context):
I get:
The
restricted state: disabled
result is correct, but therestricted state: enabled
is incorrect.The issue might also be happening with non-restricted states induction, since on this example it is bounded that rejects the property.