You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks implementation of checks ensuring that redefinitions consider expression context. Related: #153#201.
Example:
minimize Obj:
if x==1 then 1;
s.t. Con:
numberof 1 in (x) >= 1;
When IfThen is flattened, it produces conditional expression for x==1 in negative context. Then, only when numberof is redefined, it adds positive context to x==1. Make sure this happens before x==1 is redefined.
Tasks.
Implement checks that context is not extended beyond that used for redefinition.
Or, alternatively, enable redefinition context extension. This is likely not necessary as long as we don't support model modification.
Partial topological sorting of the redefinition graph to stay correct. UnaryEncodings are redefined last, and then their CondLinConEQs; to avoid adding new context to previously redefined CondLinConEQ's. However they are now redefined straight into indicators, to avoid adding new context to Or.
Full topological redefinition graph sorting.
Refactor to only pass the graph once and implement (redundant) checks that no constraints are added whose reformulation is finished
Activity
Check redefinition context #248
Robust redef context #249
Redef topo order except UEnc #248
Presolve disequality #153 #248
Don't propagate into redefined expression #248 #265