acc: make sure unit_propagate preserve the number of sets

* spot/twa/acc.hh: Here.
* tests/core/accsimpl.test, tests/core/ltl2tgba2.test: Add test cases.
This commit is contained in:
Alexandre Duret-Lutz 2020-04-15 22:25:53 +02:00
parent d8506ded52
commit fe642bc9ad
3 changed files with 39 additions and 7 deletions

View file

@ -1703,13 +1703,16 @@ namespace spot
return is_parity(max, odd);
}
/// \brief Remove redundant Fin and Inf. For example in
/// Fin(0)|(Inf(0) & Fin(1)), Inf(0) is true iff Fin(0) is false so
/// we can rewrite it as Fin(0)|Fin(1).
acc_cond
unit_propagation()
/// \brief Remove superfluous Fin and Inf by unit propagation.
///
/// For example in `Fin(0)|(Inf(0) & Fin(1))`, `Inf(0)` is true
/// iff `Fin(0)` is false so we can rewrite it as `Fin(0)|Fin(1)`.
///
/// The number of acceptance sets is not modified even if some do
/// not appear in the acceptance condition anymore.
acc_cond unit_propagation()
{
return acc_cond(code_.unit_propagation());
return acc_cond(num_, code_.unit_propagation());
}
// Return (true, m) if there exist some acceptance mark m that