Skip to content

[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

Closed
wants to merge 7 commits into from
Closed

[Don't Merge] TG-634 String refinement overhaul #1399

wants to merge 7 commits into from

Conversation

LAJW
Copy link
Contributor

@LAJW LAJW commented Sep 17, 2017

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 creating exprts from C++ objects in any language.
  • expr_cast - Type conversion template for casting exprt to any type including strings, integers and types derived from exprt. Uses empty optional to signal an error.
  • Turn all private string_refinement member functions into free static functions.
  • string_constraints 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:

  1. Functional style
  2. Turn string_constraintt into struct
  3. expr_cast
  4. axt

@LAJW
Copy link
Contributor Author

LAJW commented Sep 18, 2017

@jasigal GL HF

concretize_lengths();
concretize_lengths(
found_length,
[](const exprt& expr){ return expr; },
Copy link
Contributor

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; },
Copy link
Contributor

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.

@LAJW LAJW changed the title TG-634 String refinement overhaul [Don't Merge] TG-634 String refinement overhaul Sep 19, 2017
@tautschnig
Copy link
Collaborator

What's the state of affairs of this work? Quite a lot has happened to the string solver in the meantime...

@romainbrenguier
Copy link
Contributor

@tautschnig several parts of this work have been isolated in individual PRs. This will be rebased once the other parts are merged.

@romainbrenguier
Copy link
Contributor

@LAJW
I rebased this branch on develop:
develop...romainbrenguier:string-refinement-overhaul

Should I replace this PR by a new one, or force push on this one?

@LAJW
Copy link
Contributor Author

LAJW commented Jan 2, 2018

This was reduced to a tiny refactor and would have to be reimplemented anyway, because rebasing no longer makes any sense. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants