add a stutter-invariant property to automata

... and show it in the HOA output.  Fixes #60.

* src/tgba/tgba.hh: Add is_stutter_invariant().
* src/tgbaalgos/hoa.cc: Print stutter-invariant
and inherently-weak.
* src/tgbaalgos/ltl2tgba_fm.cc: Set both.
* src/tgbaalgos/are_isomorphic.cc, src/tgbaalgos/complete.cc,
src/tgbaalgos/degen.cc, src/tgbaalgos/dtgbacomp.cc,
src/tgbaalgos/mask.cc, src/tgbaalgos/minimize.cc,
src/tgbaalgos/remfin.cc, src/tgbaalgos/sccfilter.cc,
src/tgbaalgos/simulation.cc, src/tgbaalgos/stutter.cc,
src/tgbatest/hoaparse.test, src/tgbatest/ltldo.test,
src/tgbatest/monitor.test, src/tgbatest/randomize.test,
src/tgbatest/remfin.test, src/tgbatest/sbacc.test: Adjust.
This commit is contained in:
Alexandre Duret-Lutz 2015-02-28 16:44:06 +01:00
parent 566118a5be
commit 1f0bb428b0
19 changed files with 110 additions and 40 deletions

View file

@ -675,6 +675,7 @@ namespace spot
bool state_based_acc:1; // State-based acceptance.
bool inherently_weak:1; // Weak automaton.
bool deterministic:1; // Deterministic automaton.
bool stutter_inv:1; // Stutter invariant
};
union
{
@ -757,16 +758,27 @@ namespace spot
is.deterministic = val;
}
bool is_stutter_invariant() const
{
return is.stutter_inv;
}
void prop_stutter_invariant(bool val = true)
{
is.stutter_inv = val;
}
struct prop_set
{
bool state_based;
bool single_acc;
bool inherently_weak;
bool deterministic;
bool stutter_inv;
static prop_set all()
{
return { true, true, true, true };
return { true, true, true, true, true };
}
};
@ -782,6 +794,8 @@ namespace spot
prop_inherently_weak(other->is_inherently_weak());
if (p.deterministic)
prop_deterministic(other->is_deterministic());
if (p.stutter_inv)
prop_stutter_invariant(other->is_stutter_invariant());
}
void prop_keep(prop_set p)