In the SCIP Optimization Suite 6.0 paper, there is a section on Aggregation Presolver. The example given is a linear constraint with 2 variables a1x1+a2x2=b where either x1 or x2 is made the subject, then substituting it to the other constraints. I understand the logic when this is a linear program.
However, for SAT problems, my problem
file and transproblem
files show the following:
[logicor] <c301>: logicor(<x591>[B],<~x666>[B]); (This comes from problem file)
[logicor] <c302>: logicor(<~x591>[B],<x666>[B]);
is transformed to
[binary] <t_x666>: obj=-0, global bounds=[-0,1], local bounds=[-0,1], aggregated: +1<t_x591>
and
[logicor] <c1402>: logicor(<x538>[B],<x138>[B]); (This comes from problem file)
[logicor] <c1403>: logicor(<~x538>[B],<~x138>[B]);
is transformed to
[binary] <t_x138>: obj=-0, global bounds=[-0,1], local bounds=[-0,1], aggregated: 1 -1<t_x538>
I don't understand how aggregation works in these 2 cases because of the logicor constraints. Would anybody explain this to me please? Thank you!