Add Testing Automata Product & Emptiness Check
* src/taalgos/stats.hh, src/taalgos/stats.cc: Compute statistics for a automaton. * src/ta/ta.hh, src/ta/ta.cc: Abstract representation of a Testing Automata(TA) * src/ta/taexplicit.hh, src/ta/taexplicit.cc: Explicit representation of a Testing Automata (TA) * src/taalgos/dotty.cc: Print a TA in dot format. * src/taalgos/reachiter.hh, src/taalgos/reachiter.cc: Iterate over all reachable states of a TA * src/taalgos/sba2ta.cc: implements the construction of a TA from a BA (Buchi Automata) * src/tgbatest/ltl2tgba.cc: add commands to test the TA implementation * src/taalgos/emptinessta.hh, src/taalgos/emptinessta.cc: implementation of the TA emptiness-check algorithm * src/ta/taproduct.hh, src/ta/taproduct.cc: representation of the product (automaton) between a TA and a Kripke structure. * src/ta/Makefile.am, src/taalgos/Makefile.am: add them
This commit is contained in:
parent
ba47b821c6
commit
81e80e6069
17 changed files with 1779 additions and 209 deletions
|
|
@ -37,8 +37,6 @@ namespace spot
|
|||
class ta_explicit_succ_iterator;
|
||||
class ta_explicit;
|
||||
|
||||
|
||||
|
||||
/// ta_explicit explicit representa_explicittion of a Testing Automata_explicit
|
||||
class ta_explicit : public ta
|
||||
{
|
||||
|
|
@ -51,23 +49,27 @@ namespace spot
|
|||
state_ta_explicit*
|
||||
add_state(state_ta_explicit* s);
|
||||
|
||||
state_ta_explicit*
|
||||
add_initial_state(state_ta_explicit* s);
|
||||
void
|
||||
add_to_initial_states_set(state* s);
|
||||
|
||||
void
|
||||
create_transition(state_ta_explicit* source, bdd condition, state_ta_explicit* dest);
|
||||
create_transition(state_ta_explicit* source, bdd condition,
|
||||
state_ta_explicit* dest);
|
||||
|
||||
void
|
||||
delete_stuttering_transitions();
|
||||
// ta interface
|
||||
virtual
|
||||
~ta_explicit();
|
||||
virtual const states_set_t*
|
||||
virtual const states_set_t
|
||||
get_initial_states_set() const;
|
||||
|
||||
virtual ta_succ_iterator*
|
||||
succ_iter(const spot::state* s) const;
|
||||
|
||||
virtual ta_succ_iterator*
|
||||
succ_iter(const spot::state* s, bdd condition) const;
|
||||
|
||||
virtual bdd_dict*
|
||||
get_dict() const;
|
||||
|
||||
|
|
@ -86,6 +88,12 @@ namespace spot
|
|||
virtual bdd
|
||||
get_state_condition(const spot::state* s) const;
|
||||
|
||||
virtual void
|
||||
free_state(const spot::state* s) const;
|
||||
|
||||
virtual void
|
||||
delete_stuttering_and_hole_successors(spot::state* s);
|
||||
|
||||
private:
|
||||
// Disallow copy.
|
||||
ta_explicit(const ta_explicit& other);
|
||||
|
|
@ -137,6 +145,10 @@ namespace spot
|
|||
transitions*
|
||||
get_transitions() const;
|
||||
|
||||
// return transitions filtred by condition
|
||||
transitions*
|
||||
get_transitions(bdd condition) const;
|
||||
|
||||
void
|
||||
add_transition(transition* t);
|
||||
|
||||
|
|
@ -156,6 +168,11 @@ namespace spot
|
|||
is_initial_state() const;
|
||||
void
|
||||
set_initial_state(bool is_initial_state);
|
||||
void
|
||||
delete_stuttering_and_hole_successors();
|
||||
|
||||
void
|
||||
free_transitions();
|
||||
|
||||
private:
|
||||
const state* tgba_state_;
|
||||
|
|
@ -164,6 +181,7 @@ namespace spot
|
|||
bool is_accepting_state_;
|
||||
bool is_livelock_accepting_state_;
|
||||
transitions* transitions_;
|
||||
Sgi::hash_map<int, transitions*, Sgi::hash<int> > transitions_by_condition;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -173,6 +191,8 @@ namespace spot
|
|||
public:
|
||||
ta_explicit_succ_iterator(const state_ta_explicit* s);
|
||||
|
||||
ta_explicit_succ_iterator(const state_ta_explicit* s, bdd condition);
|
||||
|
||||
virtual void
|
||||
first();
|
||||
virtual void
|
||||
|
|
@ -185,11 +205,13 @@ namespace spot
|
|||
virtual bdd
|
||||
current_condition() const;
|
||||
|
||||
|
||||
virtual bool
|
||||
is_stuttering_transition() const;
|
||||
|
||||
private:
|
||||
state_ta_explicit::transitions* transitions_;
|
||||
state_ta_explicit::transitions::const_iterator i_;
|
||||
const state_ta_explicit* source_;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue