Skip to content
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

Optimize and refactor "Hoare" domains #809

Merged
merged 81 commits into from Sep 20, 2022
Merged

Optimize and refactor "Hoare" domains #809

merged 81 commits into from Sep 20, 2022

Conversation

sim642
Copy link
Member

@sim642 sim642 commented Aug 2, 2022

Related to issues #101 and #803.

TODO

  • Benchmark on sv-benchmarks.
  • Check performance on SQLite.
  • Fix termination issue when SetDomain.Joined is used inside AddressDomain?
  • Reimplement HoareDomain.MapBot for witness generation?
  • Adapt to Limit address sets to include at most one string pointer  #808.
  • Rename SensitiveDomain to BucketSetDomain or something?

@sim642 sim642 self-assigned this Aug 2, 2022
Copy link
Member

@michael-schwarz michael-schwarz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a few minor comments here and there, but overall I think this is a great step in the right direction. It looks like our various HoareDomains now have a sound footing in theory, so they'll hopefully cause no more issues (or if they do, it is much better understood than what we currently had)

@michael-schwarz
Copy link
Member

Does this PR also attempt to fix tests 02/{91, 92, 92} that are also closely related to the address domain?

@sim642
Copy link
Member Author

sim642 commented Sep 2, 2022

Does this PR also attempt to fix tests 02/{91, 92, 92} that are also closely related to the address domain?

Not at all. On the contrary, it makes the problem even worse since previously a and a[0] were more-or-less handled equivalently but now they're split into separate buckets. Same with the a and a.fst pairing. So this makes #822 even more obvious and urgent.

@sim642
Copy link
Member Author

sim642 commented Sep 2, 2022

On the contrary, it makes the problem even worse since previously a and a[0] were more-or-less handled equivalently but now they're split into separate buckets. Same with the a and a.fst pairing.

I just added the tests for these easier cases as well, which aren't listed in #822. Turns out that the first field one actually accidentally still works due to some of those special cases in lval domain still being present (and thus considering the two buckets, which are represented by themselves, equal). It doesn't work for the zero index since there the index gets turned into top for the bucket representative.

@sim642 sim642 merged commit 3150a33 into master Sep 20, 2022
@sim642 sim642 deleted the hoaredomain-new branch September 20, 2022 11:34
@sim642 sim642 linked an issue Sep 20, 2022 that may be closed by this pull request
sim642 added a commit that referenced this pull request Sep 20, 2022
@sim642 sim642 added this to the v2.1.0 milestone Sep 22, 2022
@sim642 sim642 mentioned this pull request Sep 29, 2022
6 tasks
sim642 added a commit to sim642/opam-repository that referenced this pull request Nov 25, 2022
CHANGES:

Functionally equivalent to Goblint in SV-COMP 2023.

* Add automatic configuration tuning (goblint/analyzer#772).
* Add many library function specifications (goblint/analyzer#865, goblint/analyzer#868, goblint/analyzer#878, goblint/analyzer#884, goblint/analyzer#886).
* Reorganize library stubs (goblint/analyzer#814, goblint/analyzer#845).
* Add Trace Event Format output to timing (goblint/analyzer#844).
* Optimize domains for address and path sets (goblint/analyzer#803, goblint/analyzer#809).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve HoarePO.equal and leq performance
3 participants