-
Notifications
You must be signed in to change notification settings - Fork 25
Preprocessing variables #375
Description
Based on our discussion.
About encoding problems. Say we do circuit decomposition. Depending how exactly MiniZinc generates FlatZinc, it likely produces auxiliary variables that have the meaning x = 1 <-> [y >= 5], essentially the SAT view of atomic constraints. But our solver natively handles atomic constraints. In this case, instead of having the variable x, we could simply have it removed entirely, and operate over atomic constraints. Probably this happens with other models/decompositions, too. For other solvers, this is fine because they anyway have a SAT view. But for us, potentially we can get speed-ups and/or better learning.
Maarten: We should definitely do that...It should be a preprocessing step in our flatzinc reader
We can also preprocess variables using our views, e.g., x = y + 2. We talked about this for a long time but never got to it.
- Preprocess variables that our predicates can capture, e.g., x = 1 <-> [y >= 5]
- Preprocess functionally dependent variables, e.g., x = y + 2
Need to have an option to enable/disable this, so it is easier to assess impact, and also it might be relevant for proof logging.