Introduce [->min..max] operator.

* src/ltlast/bunop.hh: Declare bunop::Goto
* src/ltlast/bunop.cc: Handle it.
* src/ltlparse/ltlparse.yy,
src/ltlparse/ltlscan.ll: Add rules for [->min..max].
* src/tgbaalgos/ltl2tgba_fm.cc: Handle bunop::Goto in
the translation.
* src/ltltest/equals.test: Test trivial identities.
* src/tgbatest/ltl2tgba.test: Test two more formulae using [->].
This commit is contained in:
Alexandre Duret-Lutz 2010-10-15 11:41:18 +02:00
parent 2c31e541b5
commit da74b4f180
7 changed files with 138 additions and 11 deletions

View file

@ -37,7 +37,7 @@ namespace spot
class bunop : public ref_formula
{
public:
enum type { Star, Equal };
enum type { Star, Equal, Goto };
static const unsigned unbounded = -1U;
@ -57,6 +57,11 @@ namespace spot
/// - 1[=min..max] = 1[*min..max] if max > 0
/// - Exp[=0..] = [*]
/// - Exp[=0] = (!Exp)[*]
/// - 0[->min..max] = 0 if min>0
/// - 0[->0..max] = [*0]
/// - 1[->0] = [*0]
/// - 1[->min..max] = 1[*min..max]
/// - Exp[->0] = [*0]
///
/// These rewriting rules imply that it is not possible to build
/// an LTL formula object that is SYNTACTICALLY equal to one of