* src/ltlvisit/contain.hh, src/ltlvisit/contain.cc (reduce_tau03):

New function, performing LTL reduction a la tauriainen.03.a83.
* src/ltltest/equals.cc, src/ltltest/reduc.cc: Add support for
the new reduction.
* src/ltltest/reduc.test: Cut the test in half, and additionally
test the new reduction.
* src/ltltest/reduccmp.test: Run on the new reduction.
* src/ltltest/Makefile.am: Adjust.
* src/tgbatest/ltl2tgba.cc: Add new options to apply the reduction.
* src/tgbatest/spotlbtt.test: Use them.
This commit is contained in:
Alexandre Duret-Lutz 2006-07-19 16:30:10 +00:00
parent 8cbec95253
commit d4c9bf2b1e
10 changed files with 444 additions and 76 deletions

View file

@ -54,6 +54,10 @@ namespace spot
/// Check whether L(l) is a subset of L(g).
bool contained(const formula* l, const formula* g);
/// Check whether L(!l) is a subset of L(g).
bool neg_contained(const formula* l, const formula* g);
/// Check whether L(l) is a subset of L(!g).
bool contained_neg(const formula* l, const formula* g);
/// Check whether L(l) = L(g).
bool equal(const formula* l, const formula* g);
@ -70,6 +74,32 @@ namespace spot
/* Translation Maps */
trans_map translated_;
};
/// \brief Reduce a formula using language containment relationships.
///
/// The method is taken from table 4.1 in
/// \verbatim
///@TechReport{ tauriainen.03.a83,
/// author = {Heikki Tauriainen},
/// title = {On Translating Linear Temporal Logic into Alternating and
/// Nondeterministic Automata},
/// institution = {Helsinki University of Technology, Laboratory for
/// Theoretical Computer Science},
/// address = {Espoo, Finland},
/// month = dec,
/// number = {A83},
/// pages = {132},
/// type = {Research Report},
/// year = {2003},
/// note = {Reprint of Licentiate's thesis}
///}
///
/// (The "dagged" cells in the tables are not handled here.)
///
/// If \a stronger is set, additional rules are used to further
/// reduce some U, R, and X usages.
/// \endverbatim
formula* reduce_tau03(const formula* f, bool stronger = false);
}
}