ltlcross: fix cross-checks for automata using Fin acceptance
Fixes #420 reported by Salomon Sickert. * bin/ltlcross.cc: Call determine_unknown_acceptance(). * spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh: Document that one_accepting_scc()==-1 can mean "don't know", and update determine_unknown_acceptance() to set one_acc_scc_. * tests/core/ltlcross3.test: Add test case. * NEWS: Mention the fixes.
This commit is contained in:
parent
4db6a342da
commit
33b28c8151
5 changed files with 31 additions and 3 deletions
|
|
@ -472,9 +472,15 @@ namespace spot
|
|||
"does not support alternating automata");
|
||||
auto& node = node_[s];
|
||||
if (check_scc_emptiness(s))
|
||||
node.rejecting_ = true;
|
||||
{
|
||||
node.rejecting_ = true;
|
||||
}
|
||||
else
|
||||
node.accepting_ = true;
|
||||
{
|
||||
node.accepting_ = true;
|
||||
if (one_acc_scc_ < 0)
|
||||
one_acc_scc_ = s;
|
||||
}
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -535,7 +535,14 @@ namespace spot
|
|||
return node_.size();
|
||||
}
|
||||
|
||||
/// Return the number of one accepting SCC if any, -1 otherwise.
|
||||
/// \brief Return the number of one accepting SCC if any, -1 otherwise.
|
||||
///
|
||||
/// If an accepting SCC has been found, return its number.
|
||||
/// Otherwise return -1. Note that when the acceptance condition
|
||||
/// contains Fin, -1 does not implies that all SCCs are rejecting:
|
||||
/// it just means that no accepting SCC is known currently. In
|
||||
/// that case, you might want to call
|
||||
/// determine_unknown_acceptance() first.
|
||||
int one_accepting_scc() const
|
||||
{
|
||||
return one_acc_scc_;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue