unit_propagation: Correct a problem with multiple marks

* spot/twa/acc.cc: Don't create a conjunction of Inf with multiple marks
in unit_propagation.
This commit is contained in:
Florian Renkin 2020-04-16 22:08:07 +02:00
parent 8c48003943
commit 927ea7046b

View file

@ -2641,10 +2641,36 @@ namespace spot
while (find_unit_clause(result, conj, fin, mark))
{
acc_code init_code;
if (fin)
init_code = acc_code::fin(mark);
{
if (conj)
{
init_code = acc_code::t();
for (unsigned col : mark.sets())
init_code &= acc_code::fin({col});
} else
{
init_code = acc_code::f();
for (unsigned col : mark.sets())
init_code |= acc_code::fin({col});
}
}
else
init_code = acc_code::inf(mark);
{
if (conj)
{
init_code = acc_code::t();
for (unsigned col : mark.sets())
init_code &= acc_code::inf({col});
}
else
{
init_code = acc_code::f();
for (unsigned col : mark.sets())
init_code |= acc_code::inf({col});
}
}
if (conj)
result = init_code & result.remove(mark, fin == conj);
else