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))
|
||||
{
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue