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:
parent
8c48003943
commit
927ea7046b
1 changed files with 28 additions and 2 deletions
|
|
@ -2641,10 +2641,36 @@ namespace spot
|
||||||
while (find_unit_clause(result, conj, fin, mark))
|
while (find_unit_clause(result, conj, fin, mark))
|
||||||
{
|
{
|
||||||
acc_code init_code;
|
acc_code init_code;
|
||||||
|
|
||||||
if (fin)
|
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
|
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)
|
if (conj)
|
||||||
result = init_code & result.remove(mark, fin == conj);
|
result = init_code & result.remove(mark, fin == conj);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue