(много догадок, так как я мало что знаю о внутренностях scip)
Пример
[logicor] <c301>: logicor(<x591>[B],<~x666>[B]); (This comes from problem file)
[logicor] <c302>: logicor(<~x591>[B],<x666>[B]);
эквивалентен (логическое значение alg):
~591 -> ~x666
x591 -> x666
Это действительно похоже на вариант 2 из 4 (из presol_implics.h ):
x=0 ⇒ y=lb and x=1 ⇒ y=ub : aggregate y == lb + (ub − lb)x
с:
lb = 0
ub = 1
ведущим to:
aggregate y == lb + (ub − lb)x
<-> x666 == 0 + (1-0) x591
<-> x666 == +1 x591
for comparison:
[binary] <t_x666>: obj=-0, global bounds=[-0,1], local bounds=[-0,1], aggregated: +1<t_x591>
Так что, если вывод scip означает t_x666
замененную версию x666
, это имеет некоторый смысл для меня.
Последний термин агрегации также соответствует истине- table:
a b (a | ~b) & (~a | b)
0 0 1
0 1 0
1 0 0
1 1 1
-> в основном отрицательный XOR -> равенство -> true, если оба равны
Поскольку граф импликации является естественным аргументом в отношении 2-насыщенных предложений, Я склонен сказать, что это действительно та часть, которая действует здесь.