Initial code for TGBA (Transition Generalized Bchi Automata).

Contains tgba_bdd, a BDD-encoded TGBA, and ltl_to_tgba,
a LTL-to-TGBA translator using Couvreur's algorithm.

* src/Makefile.am (SUBDIRS): Add tgba.
(libspot_la_LIBADD): Add tgba/libtgba.la.
* src/tgba/Makefile.am, src/tgba/bddfactory.cc,
src/tgba/bddfactory.hh, src/tgba/dictunion.cc,
src/tgba/dictunion.hh, src/tgba/ltl2tgba.cc, src/tgba/ltl2tgba.hh,
src/tgba/state.hh, src/tgba/statebdd.cc, src/tgba/statebdd.hh,
src/tgba/succiter.hh, src/tgba/succiterconcrete.cc,
src/tgba/succiterconcrete.hh, src/tgba/succlist.hh,
src/tgba/tgba.hh, src/tgba/tgbabddconcrete.cc,
src/tgba/tgbabddconcrete.hh, src/tgba/tgbabddconcretefactory.cc,
src/tgba/tgbabddconcretefactory.hh,
src/tgba/tgbabddconcreteproduct.cc,
src/tgba/tgbabddconcreteproduct.hh, src/tgba/tgbabddcoredata.cc,
src/tgba/tgbabddcoredata.hh, src/tgba/tgbabdddict.cc,
src/tgba/tgbabdddict.hh, src/tgba/tgbabddfactory.hh,
src/tgba/tgbabddtranslatefactory.cc,
src/tgba/tgbabddtranslatefactory.hh: New files.
This commit is contained in:
Alexandre Duret-Lutz 2003-05-26 11:17:40 +00:00
parent 5100c197a2
commit c03934140f
32 changed files with 1263 additions and 2 deletions

View file

@ -0,0 +1,54 @@
#ifndef SPOT_TGBA_TGBABDDCOREDATA_HH
# define SPOT_TGBA_TGBABDDCOREDATA_HH
#include <bdd.h>
namespace spot
{
struct tgba_bdd_core_data
{
// RELATION encodes the transition relation of the TGBA.
// It uses four kinds of variables:
// - "Now" variables, that encode the current state
// - "Next" variables, that encode the destination state
// - atomic propositions, which are things to verify before going on
// to the next state
// - promises: a U b, or F b, both implie that b should be verified
// eventually. We encode this with Prom[b], and check
// that promises are fullfilled in the emptyness check.
bdd relation;
// The conjunction of all Now variables, in their positive form.
bdd now_set;
// The conjunction of all Now variables, in their negated form.
bdd negnow_set;
// The (positive) conjunction of all variables which are not Now variables.
bdd notnow_set;
// The (positive) conjunction of all variables which are not atomic
// propositions.
bdd notvar_set;
// The (positive) conjunction of all variables which are not promises.
bdd notprom_set;
// Record pairings between Next and Now variables.
bddPair* next_to_now;
tgba_bdd_core_data();
tgba_bdd_core_data(const tgba_bdd_core_data& copy);
// Merge two core_data.
tgba_bdd_core_data(const tgba_bdd_core_data& left,
const tgba_bdd_core_data& right);
const tgba_bdd_core_data& operator= (const tgba_bdd_core_data& copy);
~tgba_bdd_core_data();
void declare_now_next(bdd now, bdd next);
void declare_atomic_prop(bdd var);
void declare_promise(bdd prom);
};
}
#endif // SPOT_TGBA_TGBABDDCOREDATA_HH