Skip to content

Conversation

@michael-schwarz
Copy link
Member

@michael-schwarz michael-schwarz commented Dec 9, 2021

In the course of #419, I modified the invariant function to work on the entire variable instead of only on an offset. The offset is updated and after this the meet between the old and the new value happens.
This is beneficial e.g. with our new struct domains.

However, it uncovered an issue with the meet in the partitioned array domain: If two partitioned values are met and they are partitioned according to different expressions, the resulting component-wise meet is partitioned according to a bottom expression, which is an invalid value that we never create. (same goes for narrow).

This fixes the immediate problem. In the long run, I will later clean up this mess in #485.

TODO:

Closes #482.

@sim642 sim642 added the bug label Dec 9, 2021
@michael-schwarz
Copy link
Member Author

I ran sv-comp again and this fix indeed solves all 120 instances of this problem.

@sim642 sim642 added the sv-comp SV-COMP (analyses, results), witnesses label Dec 9, 2021
@michael-schwarz michael-schwarz merged commit b709e24 into master Dec 9, 2021
@michael-schwarz michael-schwarz deleted the issue-482 branch December 9, 2021 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug sv-comp SV-COMP (analyses, results), witnesses

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fatal error: exception Failure("ArrayDomain: Unallowed state (one of the partitioning expressions is bot)") for 120 programs

3 participants