Closed
Description
When using a closure as a lazy reason, it takes as input the final PropagationContext
at the time of the conflict.
However, this domain can be inconsistent (e.g. it can contain the empty domain x in [6, 5]
). This goes against the assumption from certain propagators that domains which are assigned do not change (this was used in the linear not equal propagator to create lazy explanations) which resulted in incorrect explanations.
An example of an instance on which this occurs is with this model and this data file as it results in incorrect explanations leading to the semantic minimiser learning a clause which is always true.
Preferably, we would provide the final consistent state to the reason calculation.