Running ltl2tgba -R1q -R1t -N would degeneralize before and
after the simulation-reduction. Report from Tomáš Babiak <xbabiak@fi.muni.cz>. * src/tgbaalgos/neverclaim.hh (never_claim_reachable): Take a tgba as input. * src/tgbaalgos/neverclaim.cc (never_claim_bfs): Call state_is_accepting() only if this tgba turns out to be a tgba_sba_proxy. Otherwise check the acceptance of one outgoing transition as we do in dotty_bfs since 2011-03-05. * src/tgbatest/ltl2tgba.cc: Do not redegeneralize before calling never_claim_reachable() if we know the automaton is degeneralized already. * src/tgbatest/ltl2tgba.test: Add a test case.
This commit is contained in:
parent
1c2450f609
commit
d8ba172e6d
5 changed files with 61 additions and 13 deletions
|
|
@ -1142,16 +1142,14 @@ main(int argc, char** argv)
|
|||
case 8:
|
||||
{
|
||||
assert(degeneralize_opt == DegenSBA);
|
||||
const spot::tgba_sba_proxy* s =
|
||||
dynamic_cast<const spot::tgba_sba_proxy*>(a);
|
||||
if (s)
|
||||
spot::never_claim_reachable(std::cout, s, f, spin_comments);
|
||||
if (assume_sba || dynamic_cast<const spot::tgba_sba_proxy*>(a))
|
||||
spot::never_claim_reachable(std::cout, a, f, spin_comments);
|
||||
else
|
||||
{
|
||||
// It is possible that we have applied other
|
||||
// operations to the automaton since its initial
|
||||
// degeneralization. Let's degeneralize again!
|
||||
s = new spot::tgba_sba_proxy(a);
|
||||
spot::tgba_sba_proxy* s = new spot::tgba_sba_proxy(a);
|
||||
spot::never_claim_reachable(std::cout, s, f, spin_comments);
|
||||
delete s;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,3 +124,13 @@ grep 'states: 3$' stdout
|
|||
run 0 ../ltl2tgba -R3 -Rm -ks -f "Gq|Gr|(G(q|FGp)&G(r|FG!p))" >stdout
|
||||
grep 'transitions: 5$' stdout
|
||||
grep 'states: 3$' stdout
|
||||
|
||||
# Make sure FGa|GFb has the same number of states/transitions when
|
||||
# output as a never claim or are a degeneralized BA in Spot's textual
|
||||
# format. The option -R1q -R1t used to cause two degeneralizations to
|
||||
# occur.
|
||||
run 0 ../ltl2tgba -R1q -R1t -N 'FGa|FGb' > out.never
|
||||
run 0 ../ltl2tgba -XN -kt out.never > count.never
|
||||
run 0 ../ltl2tgba -R1q -R1t -DS -b 'FGa|FGb' > out.spot
|
||||
run 0 ../ltl2tgba -X -kt out.spot > count.spot
|
||||
cmp count.never count.spot
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue