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:
Ala Eddine 2011-02-11 11:40:21 +01:00 committed by Alexandre Duret-Lutz
parent ba47b821c6
commit 81e80e6069
17 changed files with 1779 additions and 209 deletions

View file

@ -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_;
};
}