We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
forall
--hyperMode=on
I am working on verifying SIF for the VerifiedSCION router (using hyperGobra) with @jcp19.
requires low(b) func test1(b [2]int) { assert low(b[0]) assert low(b[1]) // Fails: assert forall i int :: { b[i] } 0 <= i && i < 2 ==> low(b[i]) }
Trying to verify the above code using --hyperMode=on fails in asserting the last assertion.
The problem: During the product-program construction, i is also duplicated (or: the duplicated i are not related to each other):
i
assert (forall i_V10: Int, i_V11: Int :: { unbox_Emb_2_Intint$$$$_E_$$$_Seq_Int(b_V0_CN00)[i_V10], unbox_Emb_2_Intint$$$$_E_$$$_Seq_Int(b_V0_CN01)[i_V11] } 0 <= i_V10 && i_V10 < 2 && (0 <= i_V11 && i_V11 < 2) ==> unbox_Emb_2_Intint$$$$_E_$$$_Seq_Int(b_V0_CN00)[i_V10] == unbox_Emb_2_Intint$$$$_E_$$$_Seq_Int(b_V0_CN01)[i_V11])
This could be fixed either by inserting i_V10 == i_V11 ==> after ==>, or by not duplicating i (which is not necessary to do, from my understanding).
i_V10 == i_V11 ==>
==>
Using --hyperMode=extended, the code verifies successfully.
--hyperMode=extended
The text was updated successfully, but these errors were encountered:
forall i int :: 0 <= i && i < len(array) ==> low(array[i])
low(array)
No branches or pull requests
I am working on verifying SIF for the VerifiedSCION router (using hyperGobra) with @jcp19.
Trying to verify the above code using
--hyperMode=on
fails in asserting the last assertion.The problem: During the product-program construction,
i
is also duplicated (or: the duplicatedi
are not related to each other):This could be fixed either by inserting
i_V10 == i_V11 ==>
after==>
, or by not duplicatingi
(which is not necessary to do, from my understanding).Using
--hyperMode=extended
, the code verifies successfully.The text was updated successfully, but these errors were encountered: