Fix handling of PSL operators in reductions rules.
We still don't have any PSL-specific reductions, but at least the LTL reduction now appear to work on PSL formulas. * src/ltlvisit/basicreduce.cc (basic_reduce_visitor): Fix the call to std::copy to handle Concat, Fusion, and AndNLM. * src/ltlvisit/reduce.cc (reduce_visitor): Fix handling of UConcat, EConcat, and EConcatMarked. * src/tgbatest/randpsl.test: Activate reductions. * src/ltltest/reducpsl.test: New file. * src/ltltest/Makefile.am (TESTS): Add it.
This commit is contained in:
parent
b8b4aa72c5
commit
c8801935bf
5 changed files with 53 additions and 6 deletions
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2008, 2009, 2010 Laboratoire de Recherche et
|
||||
// Copyright (C) 2008, 2009, 2010, 2011 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2007 Laboratoire d'Informatique de
|
||||
// Paris 6 (LIP6), d�partement Syst�mes R�partis Coop�ratifs (SRC),
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
#include "ltlast/visitor.hh"
|
||||
#include "ltlast/allnodes.hh"
|
||||
#include <cassert>
|
||||
#include <iterator>
|
||||
|
||||
namespace spot
|
||||
{
|
||||
|
|
@ -181,13 +182,13 @@ namespace spot
|
|||
}
|
||||
|
||||
#if 0
|
||||
// F(f1 & GF(f2)) = F(f1) & GF(F2)
|
||||
// F(f1 & GF(f2)) = F(f1) & GF(f2)
|
||||
//
|
||||
// As is, these two formulae are translated into
|
||||
// equivalent Büchi automata so the rewriting is
|
||||
// useless.
|
||||
//
|
||||
// However when taken in a larger formulae such as F(f1
|
||||
// However when taken in a larger formula such as F(f1
|
||||
// & GF(f2)) | F(a & GF(b)), this rewriting used to
|
||||
// produce (F(f1) & GF(f2)) | (F(a) & GF(b)), missing
|
||||
// the opportunity to apply the F(E1)|F(E2) = F(E1|E2)
|
||||
|
|
@ -862,7 +863,8 @@ namespace spot
|
|||
case multop::Concat:
|
||||
case multop::AndNLM:
|
||||
case multop::Fusion:
|
||||
std::copy(res->begin(), res->end(), tmpOther->end());
|
||||
std::copy(res->begin(), res->end(),
|
||||
std::back_inserter(*tmpOther));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -157,10 +157,12 @@ namespace spot
|
|||
case binop::Xor:
|
||||
case binop::Equiv:
|
||||
case binop::Implies:
|
||||
assert(!"operator not supported for syntactic implication");
|
||||
return;
|
||||
case binop::UConcat:
|
||||
case binop::EConcat:
|
||||
case binop::EConcatMarked:
|
||||
return;
|
||||
break;
|
||||
|
||||
case binop::U:
|
||||
/* a < b => a U b = b */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue