-
Notifications
You must be signed in to change notification settings - Fork 273
Fix array constraints for with_exprt with >3 operands [blocks: #2068] #4232
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some out of date comments that still talk in terms of a single operand with
0dc27ad
to
9e2e7eb
Compare
9e2e7eb
to
4a60eec
Compare
src/solvers/flattening/arrays.cpp
Outdated
const index_sett &index_set, | ||
const with_exprt &expr, | ||
const exprt &index, | ||
const exprt &value) | ||
{ | ||
// we got x=(y with [i:=v]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
out of date
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated.
src/solvers/flattening/arrays.cpp
Outdated
lazy_typet::ARRAY_WITH, equal_exprt(index_expr, value)); | ||
add_array_constraint(lazy, false); // added immediately | ||
|
||
updated_indices.insert(index); | ||
} | ||
|
||
// use other array index applications for "else" case | ||
// add constraint x[I]=y[I] for I!=i |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
out of date
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also updated.
The initial support for more than 3 operands in 02e508e generated possibly inconsistent constraints. Also update comments to describe multiple update operands. The test is based on SV-COMP's array-memsafety/count_down_unsafe_false-valid-deref.c.
4a60eec
to
b7bb6a1
Compare
The initial support for more than 3 operands in 02e508e generated possibly
inconsistent constraints.
The test is based on SV-COMP's array-memsafety/count_down_unsafe_false-valid-deref.c.