-
Notifications
You must be signed in to change notification settings - Fork 274
[Don't Merge] TG-634 String refinement overhaul #1399
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
@jasigal GL HF |
concretize_lengths(); | ||
concretize_lengths( | ||
found_length, | ||
[](const exprt& expr){ return expr; }, |
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.
Should probably be this->get
or similar, not identity.
concretize_lengths(); | ||
concretize_lengths( | ||
found_length, | ||
[](const exprt& expr){ return expr; }, |
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.
Should probably be this->get
or similar, not identity.
What's the state of affairs of this work? Quite a lot has happened to the string solver in the meantime... |
@tautschnig several parts of this work have been isolated in individual PRs. This will be rebased once the other parts are merged. |
@LAJW Should I replace this PR by a new one, or force push on this one? |
This was reduced to a tiny refactor and would have to be reimplemented anyway, because rebasing no longer makes any sense. Closing. |
A broad collection of ideas to make string solver more comprehensible.
Notable modifications:
axt
- "alternate expression interface" - wrapper around expression allowing us to use C++ operators to build trees of logical expressions.environmentt
- language environment / factory class for creatingexprt
s from C++ objects in any language.expr_cast
- Type conversion template for castingexprt
to any type including strings, integers and types derived fromexprt
. Uses empty optional to signal an error.string_refinement
member functions into free static functions.string_constraint
s are now regular structs, function definitions relevant to them have been moved to their own module.This is an initial draft and has some obvious linter issues.
@romainbrenguier Please take a look.
Edit: I am to split this PR into smaller ones:
string_constraintt
into structexpr_cast
axt