GTA (Generalized Testing Automata) implementation

* 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/Makefile.am, src/taalgos/dotty.cc,
src/taalgos/emptinessta.cc, src/taalgos/minimize.cc,
src/taalgos/minimize.hh, src/taalgos/tgba2ta.cc, src/taalgos/tgba2ta.hh,
src/tgbatest/ltl2tgba.cc: changes introduced to add a new form of TA
called GTA (Generalized Testing Automata). GTA is a TA with acceptance-
conditions added on transitions.
This commit is contained in:
Ala-Eddine Ben-Salem 2011-07-05 21:26:22 +02:00 committed by Alexandre Duret-Lutz
parent c7f4b8e262
commit 83e7f0fa18
14 changed files with 726 additions and 34 deletions

View file

@ -41,8 +41,8 @@ namespace spot
class ta_explicit : public ta
{
public:
ta_explicit(const tgba* tgba_, state_ta_explicit* artificial_initial_state =
0);
ta_explicit(const tgba* tgba, bdd all_acceptance_conditions,
state_ta_explicit* artificial_initial_state = 0);
const tgba*
get_tgba() const;
@ -57,6 +57,10 @@ namespace spot
create_transition(state_ta_explicit* source, bdd condition,
state_ta_explicit* dest);
void
create_transition(state_ta_explicit* source, bdd condition,
bdd acceptance_conditions, state_ta_explicit* dest);
void
delete_stuttering_transitions();
// ta interface
@ -114,16 +118,32 @@ namespace spot
return states_set_;
}
/// \brief Return the set of all acceptance conditions used
/// by this automaton.
///
/// The goal of the emptiness check is to ensure that
/// a strongly connected component walks through each
/// of these acceptiong conditions. I.e., the union
/// of the acceptiong conditions of all transition in
/// the SCC should be equal to the result of this function.
bdd
all_acceptance_conditions() const
{
return all_acceptance_conditions_;;
}
private:
// Disallow copy.
ta_explicit(const ta_explicit& other);
ta_explicit&
operator=(const ta_explicit& other);
const tgba* tgba_;
bdd all_acceptance_conditions_;
state_ta_explicit* artificial_initial_state_;
ta::states_set_t states_set_;
ta::states_set_t initial_states_set_;
const tgba* tgba_;
state_ta_explicit* artificial_initial_state_;
};
@ -136,6 +156,7 @@ namespace spot
struct transition
{
bdd condition;
bdd acceptance_conditions;
state_ta_explicit* dest;
};
@ -201,6 +222,8 @@ namespace spot
void
free_transitions();
private:
const state* tgba_state_;
const bdd tgba_condition_;
@ -232,6 +255,9 @@ namespace spot
virtual bdd
current_condition() const;
virtual bdd
current_acceptance_conditions() const;
virtual bool
is_stuttering_transition() const;