Fix UP's decide callback#6707
Conversation
|
why is the variant where you change the signature of next_split_cb to return an lbool to indicate possible assignment discrepancies not an option? void Z3_API Z3_solver_next_split(Z3_context c, Z3_solver_callback cb, Z3_ast t, unsigned idx, Z3_lbool phase) to Z3_lbool Z3_API Z3_solver_next_split(Z3_context c, Z3_solver_callback cb, Z3_ast t, unsigned idx, Z3_lbool phase) Or said in another way, isn't the issue that has_split_candidate should return false if the UP comes up with something assigned? |
|
The real problem is "decide", rather than "next_split". Returning a value from "next_split" that indicates if the variable is already assigned solves the problem for "next_split" but not for "decide". (Also: This would make "next_split" a function to query the Boolean-Assignment) I see two options:
|
|
FAILED: src/api/java/CMakeFiles/z3java.dir/Native.cpp.o |
|
Do you have to touch scripts/update_api.py? |
|
you might become a certified Java Enterprise SE developer! |
|
Interestingly, my PC could compile it and generate a working .jar file 😅 |
Reason we need this:
Although we can trace the current model in the UP by observing "fixed", we might not get all assignments due to RP.
Problem: If we pass something to "decide" that is already assigned, we crash. This is problematic, as the UP has no way to detect this up front.