Add a new form of TA with a Single-pass emptiness check (STA)
* src/ta/ta.cc, src/ta/ta.hh, src/ta/taexplicit.cc, src/ta/taexplicit.hh, src/ta/taproduct.cc,src/ta/taproduct.hh, src/taalgos/dotty.cc, src/taalgos/emptinessta.cc, src/taalgos/emptinessta.hh, src/taalgos/minimize.cc, src/taalgos/reachiter.cc, src/taalgos/sba2ta.cc, src/taalgos/sba2ta.hh, src/tgbatest/ltl2ta.test, src/tgbatest/ltl2tgba.cc: Impacts of the implementation of a new variant of TA, called STA, which involve a Single-pass emptiness check. The new options (-in and -lv) added to build the new variants of TA allow to add two artificial states: 1- an initial artificial state to have an unique initial state (-in) 2- a livelock artificial state which has no successors in order to obtain the new form of TA which requires only a Single-pass emptiness- check: STA (-lv).
This commit is contained in:
parent
310973f88c
commit
782ba0010b
15 changed files with 1224 additions and 711 deletions
|
|
@ -41,7 +41,8 @@ namespace spot
|
|||
class ta_explicit : public ta
|
||||
{
|
||||
public:
|
||||
ta_explicit(const tgba* tgba_);
|
||||
ta_explicit(const tgba* tgba_, state_ta_explicit* artificial_initial_state =
|
||||
0);
|
||||
|
||||
const tgba*
|
||||
get_tgba() const;
|
||||
|
|
@ -50,7 +51,7 @@ namespace spot
|
|||
add_state(state_ta_explicit* s);
|
||||
|
||||
void
|
||||
add_to_initial_states_set(state* s);
|
||||
add_to_initial_states_set(state* s, bdd condition = bddfalse);
|
||||
|
||||
void
|
||||
create_transition(state_ta_explicit* source, bdd condition,
|
||||
|
|
@ -91,9 +92,28 @@ namespace spot
|
|||
virtual void
|
||||
free_state(const spot::state* s) const;
|
||||
|
||||
spot::state*
|
||||
get_artificial_initial_state() const
|
||||
{
|
||||
return (spot::state*) artificial_initial_state_;
|
||||
}
|
||||
|
||||
void
|
||||
set_artificial_initial_state(state_ta_explicit* s)
|
||||
{
|
||||
artificial_initial_state_ = s;
|
||||
|
||||
}
|
||||
|
||||
virtual void
|
||||
delete_stuttering_and_hole_successors(spot::state* s);
|
||||
|
||||
ta::states_set_t
|
||||
get_states_set()
|
||||
{
|
||||
return states_set_;
|
||||
}
|
||||
|
||||
private:
|
||||
// Disallow copy.
|
||||
ta_explicit(const ta_explicit& other);
|
||||
|
|
@ -103,6 +123,7 @@ namespace spot
|
|||
ta::states_set_t states_set_;
|
||||
ta::states_set_t initial_states_set_;
|
||||
const tgba* tgba_;
|
||||
state_ta_explicit* artificial_initial_state_;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -122,7 +143,8 @@ namespace spot
|
|||
|
||||
state_ta_explicit(const state* tgba_state, const bdd tgba_condition,
|
||||
bool is_initial_state = false, bool is_accepting_state = false,
|
||||
bool is_livelock_accepting_state = false, transitions* trans = 0) :
|
||||
bool is_livelock_accepting_state = false, transitions* trans = 0,
|
||||
bool is_the_artificial_livelock_accepting_state = false) :
|
||||
tgba_state_(tgba_state), tgba_condition_(tgba_condition),
|
||||
is_initial_state_(is_initial_state), is_accepting_state_(
|
||||
is_accepting_state), is_livelock_accepting_state_(
|
||||
|
|
@ -164,10 +186,15 @@ namespace spot
|
|||
is_livelock_accepting_state() const;
|
||||
void
|
||||
set_livelock_accepting_state(bool is_livelock_accepting_state);
|
||||
|
||||
bool
|
||||
is_initial_state() const;
|
||||
void
|
||||
set_initial_state(bool is_initial_state);
|
||||
|
||||
bool
|
||||
is_hole_state() const;
|
||||
|
||||
void
|
||||
delete_stuttering_and_hole_successors();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue