-
Notifications
You must be signed in to change notification settings - Fork 77
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
Add PPX derivers for lattices of tuple and record types #1095
Conversation
At the Gobcon today you mentioned that there could be another attempt at this by you on this, that would be easier to maintain. Could you have a look, whether this indeed exists? |
This task is |
One of the biggest improvements (2× in time) is on In others, e.g. |
CHANGES: Functionally equivalent to Goblint in SV-COMP 2025. * Add 32bit vs 64bit architecture support (goblint/analyzer#54, goblint/analyzer#1574). * Add per-function context gas analysis (goblint/analyzer#1569, goblint/analyzer#1570, goblint/analyzer#1598). * Adapt automatic static loop unrolling (goblint/analyzer#1516, goblint/analyzer#1582, goblint/analyzer#1583, goblint/analyzer#1584, goblint/analyzer#1590, goblint/analyzer#1595, goblint/analyzer#1599). * Adapt automatic configuration tuning (goblint/analyzer#1450, goblint/analyzer#1612, goblint/analyzer#1181, goblint/analyzer#1604). * Simplify non-relational integer invariants in witnesses (goblint/analyzer#1517). * Fix excessive hash collisions (goblint/analyzer#1594, goblint/analyzer#1602). * Clean up various code (goblint/analyzer#1095, goblint/analyzer#1523, goblint/analyzer#1554, goblint/analyzer#1575, goblint/analyzer#1588, goblint/analyzer#1597, goblint/analyzer#1614).
This implements a big portion of #31 using my experimental ppx_easy_deriving library (EDIT: Necessary parts are now just vendored here for simplicity). The goal of the library is to provide a simpler ppx_type_directed_value-like interface with no performance penalty.
It is a revival of my two-year-old
ppx-lattice
branch in more polished state.This PR changes record-valued domains to use
[@@deriving lattice]
and also changes the implementation ofLattice.Prod
to do so. Over time, the amount ofLattice.Prod
usage could be reduced by using records with meaningful field names instead.TODO
Publish ppx_easy_deriving on opam.Vendored.Fix opam pin in CI.Vendored.DeriveNeedspretty_diff
.leq
to definepretty_diff
.