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

@ -46,29 +46,35 @@ namespace spot
typedef std::set<state*, state_ptr_less_than> states_set_t;
virtual const states_set_t*
get_initial_states_set() const = 0;
virtual const states_set_t
get_initial_states_set() const = 0;
virtual ta_succ_iterator*
succ_iter(const spot::state* s) const = 0;
succ_iter(const spot::state* s) const = 0;
virtual ta_succ_iterator*
succ_iter(const spot::state* s, bdd condition) const = 0;
virtual bdd_dict*
get_dict() const = 0;
get_dict() const = 0;
virtual std::string
format_state(const spot::state* s) const = 0;
format_state(const spot::state* s) const = 0;
virtual bool
is_accepting_state(const spot::state* s) const = 0;
is_accepting_state(const spot::state* s) const = 0;
virtual bool
is_livelock_accepting_state(const spot::state* s) const = 0;
is_livelock_accepting_state(const spot::state* s) const = 0;
virtual bool
is_initial_state(const spot::state* s) const = 0;
is_initial_state(const spot::state* s) const = 0;
virtual bdd
get_state_condition(const spot::state* s) const = 0;
get_state_condition(const spot::state* s) const = 0;
virtual void
free_state(const spot::state* s) const = 0;
};
@ -93,6 +99,8 @@ namespace spot
virtual bdd
current_condition() const = 0;
virtual bool
is_stuttering_transition() const = 0;
bdd
current_acceptance_conditions() const
@ -103,7 +111,7 @@ namespace spot
};
// A stack of Strongly-Connected Components
class sscc_stack
class scc_stack_ta
{
public:
struct connected_component
@ -116,8 +124,6 @@ namespace spot
bool is_accepting;
bool is_initial;
std::list<state*> rem;
};