-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
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
Problem with engine heuristic #921
Comments
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
May I ask you to try #923 ? |
Yep! It's working on my side. Thanks a lot. To be sure, I just want to point out that before this modification, in case of an unsupported assumption, the k-induction engine would attempt to prove the property without the assumption. However, now it seems the engine always returns "UNKNOWN" in such cases. This convention can make sense. Is it the intended behavior? |
I am a bit torn on this; but yes, k-induction should still work even if an unsupported assumption is present. Will fix. |
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
Just pushed, please try! |
Thanks! I see two remaining potential problems: (that can be reproduced on
|
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
Agreed on both items, revision just pushed. |
I tried your changes on my side. It seems that the first point still holds when a design contains several assumptions, some supported by k-induction, some not. As an example, if you run |
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
Indeed, agreed, you want to see which assumption was actually used. Change pushed. |
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
I tried, but I think there is still an issue. It seems that now, if an assumption is not supported by k-induction, false assertions can be proven. This happens with both the k-induction engine and the heuristic engine. Here is a minimal example:
On this example, both engines prove p0. |
The k-induction engine now correctly reports unsupported assumptions, and is then skipped by the engine selection heuristic. Fixes #921.
Just pushed the next attempt -- this will need a refactoring to prevent interaction between the engines. |
Thanks ! Working better on my side. I am just a bit unsure of what should be output in the presence of a temporal assumption and several assertions. When some assertions are proved without the assumption by k-induction and others are proved by BMC using the assumption. |
Agreed; I think this will hit the limit of what can be communicated in a simple list of properties. |
The new basic engine heuristic seems to introduce a bug when it is applied to designs containing assumptions not supported by the k-induction engine (temporal property in my case). The assumption seems to be transformed into an assertion.
As an example, if you take
regression/ebmc/k-induction/ring_buffer.sv
, and you slightly modify the first assumption in order to add a temporal operator as follows, the engine will outputREFUTED
instead ofASSUMED
orFAILURE: property unsupported by k-induction
for the first assumption:The text was updated successfully, but these errors were encountered: