-
Notifications
You must be signed in to change notification settings - Fork 6
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
Model generation fixing #156
Conversation
… extra debug output
The impact of changes (with models turned off):
I think that by turning model generation off for LIA, we became faster. I will need to run Z3 without model generation to see how it behaves too. |
Note that there are still some incorrect models and some bugs I need to handle, but I want to first merge all these changes. |
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.
Nice work. Just a few remarks.
This PR fixes a lot of stuff for model generation for the main decision, mainly:
to_code
/from_code
also can replace dummy symbol)skip_len_sat
preprocessing rule, the length vars needs to be propagated if we want to compute model (and the equation that the two sides have to have equal length was missing)sat
, we propagate the lengths of all lenght vars from the arith model, so that z3 does not do some stupid stuffWe also use new functions from mata (VeriFIT/mata#420 and VeriFIT/mata#424) in multiple-memberships heuristic to get models from language difference and complement.
I also added new trace output for preprocessing (
str-prep
) which will print the current rule that is gonna be used and after it was used, the current state of preprocessor (if you want to print NFAs in assignment, use alsostr-nfa
).This can be very useful in debugging preprocessing.
I also changed the parameter
str.produce_model
to the parametermodel
, which is already in Z3 and I made it by defaultfalse
(it also turns off models for LIA solver).Finally, I made
noodler
the default parameter for string solver selection.