Introduce EConcatMarked "<>+>" as operator.
* src/ltlast/binop.cc, src/ltlast/binop.hh: Introduce
EConcatMarked ("<>+>").
* src/ltlvisit/basicreduce.cc, src/ltlvisit/consterm.cc,
src/ltlvisit/lunabbrev.cc, src/ltlvisit/nenoform.cc,
src/ltlvisit/reduce.cc, src/ltlvisit/simpfg.cc,
src/ltlvisit/syntimpl.cc, src/ltlvisit/tostring.cc,
src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/eltl2tgba_lacim.cc,
src/tgbaalgos/ltl2tgba_lacim.cc, src/tgba/formula2bdd.cc,
src/tgba/formula2bdd.cc: Deal with it if possible or ignore
it.
This commit is contained in:
parent
66317db45c
commit
171ca678b8
14 changed files with 34 additions and 2 deletions
|
|
@ -123,6 +123,8 @@ namespace spot
|
||||||
return "M";
|
return "M";
|
||||||
case EConcat:
|
case EConcat:
|
||||||
return "EConcat";
|
return "EConcat";
|
||||||
|
case EConcatMarked:
|
||||||
|
return "EConcatMarked";
|
||||||
case UConcat:
|
case UConcat:
|
||||||
return "UConcat";
|
return "UConcat";
|
||||||
}
|
}
|
||||||
|
|
@ -256,6 +258,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EConcat:
|
case EConcat:
|
||||||
|
case EConcatMarked:
|
||||||
// - 0 <>-> Exp = 0
|
// - 0 <>-> Exp = 0
|
||||||
// - 1 <>-> Exp = Exp
|
// - 1 <>-> Exp = Exp
|
||||||
// - #e <>-> Exp = 0
|
// - #e <>-> Exp = 0
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ namespace spot
|
||||||
W, //< weak until
|
W, //< weak until
|
||||||
M, //< strong release (dual of weak until)
|
M, //< strong release (dual of weak until)
|
||||||
EConcat, // Existential Concatenation
|
EConcat, // Existential Concatenation
|
||||||
|
EConcatMarked, // Existential Concatenation, Marked
|
||||||
UConcat // Universal Concatenation
|
UConcat // Universal Concatenation
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -263,6 +263,7 @@ namespace spot
|
||||||
case binop::Implies:
|
case binop::Implies:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
result_ = binop::instance(bo->op(),
|
result_ = binop::instance(bo->op(),
|
||||||
basic_reduce(f1),
|
basic_reduce(f1),
|
||||||
basic_reduce(f2));
|
basic_reduce(f2));
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@ namespace spot
|
||||||
case binop::R:
|
case binop::R:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
assert(!"unsupported operator");
|
assert(!"unsupported operator");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,7 @@ namespace spot
|
||||||
case binop::M:
|
case binop::M:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
result_ = binop::instance(op, f1, f2);
|
result_ = binop::instance(op, f1, f2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -186,6 +186,13 @@ namespace spot
|
||||||
binop::UConcat : binop::EConcat,
|
binop::UConcat : binop::EConcat,
|
||||||
recurse_(f1, false), recurse(f2));
|
recurse_(f1, false), recurse(f2));
|
||||||
return;
|
return;
|
||||||
|
case binop::EConcatMarked:
|
||||||
|
/* !(a <>-> b) == a[]-> !b */
|
||||||
|
result_ = binop::instance(negated_ ?
|
||||||
|
binop::UConcat :
|
||||||
|
binop::EConcatMarked,
|
||||||
|
recurse_(f1, false), recurse(f2));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
|
||||||
|
|
@ -158,6 +158,7 @@ namespace spot
|
||||||
return;
|
return;
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
|
|
@ -318,7 +319,8 @@ namespace spot
|
||||||
case binop::Implies:
|
case binop::Implies:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
break;
|
case binop::EConcatMarked:
|
||||||
|
return;
|
||||||
|
|
||||||
case binop::U:
|
case binop::U:
|
||||||
/* a < b => a U b = b */
|
/* a < b => a U b = b */
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ namespace spot
|
||||||
case binop::Equiv:
|
case binop::Equiv:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
result_ = binop::instance(op, f1, f2);
|
result_ = binop::instance(op, f1, f2);
|
||||||
return;
|
return;
|
||||||
/* true U f2 == F(f2) */
|
/* true U f2 == F(f2) */
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@ namespace spot
|
||||||
case binop::Implies:
|
case binop::Implies:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
return;
|
return;
|
||||||
case binop::U:
|
case binop::U:
|
||||||
case binop::W:
|
case binop::W:
|
||||||
|
|
@ -363,6 +364,7 @@ namespace spot
|
||||||
case binop::Implies:
|
case binop::Implies:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
return;
|
return;
|
||||||
case binop::U:
|
case binop::U:
|
||||||
/* (a < c) && (c < d) => a U b < c U d */
|
/* (a < c) && (c < d) => a U b < c U d */
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ namespace spot
|
||||||
{
|
{
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
os_ << "{ ";
|
os_ << "{ ";
|
||||||
top_level_ = true;
|
top_level_ = true;
|
||||||
bo->first()->accept(*this);
|
bo->first()->accept(*this);
|
||||||
|
|
@ -150,6 +151,9 @@ namespace spot
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
os_ << " }<>-> ";
|
os_ << " }<>-> ";
|
||||||
break;
|
break;
|
||||||
|
case binop::EConcatMarked:
|
||||||
|
os_ << " }<>+> ";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bo->second()->accept(*this);
|
bo->second()->accept(*this);
|
||||||
|
|
@ -342,6 +346,11 @@ namespace spot
|
||||||
os_ << " <>-> ";
|
os_ << " <>-> ";
|
||||||
bo->second()->accept(*this);
|
bo->second()->accept(*this);
|
||||||
break;
|
break;
|
||||||
|
case binop::EConcatMarked:
|
||||||
|
bo->first()->accept(*this);
|
||||||
|
os_ << " <>+> ";
|
||||||
|
bo->second()->accept(*this);
|
||||||
|
break;
|
||||||
/* W and M are not supported by Spin */
|
/* W and M are not supported by Spin */
|
||||||
case binop::W:
|
case binop::W:
|
||||||
bo->first()->accept(*this);
|
bo->first()->accept(*this);
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,7 @@ namespace spot
|
||||||
case binop::M:
|
case binop::M:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
assert(!"unsupported operator");
|
assert(!"unsupported operator");
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ namespace spot
|
||||||
case binop::M:
|
case binop::M:
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
assert(!"unsupported operator");
|
assert(!"unsupported operator");
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
|
|
|
||||||
|
|
@ -249,6 +249,7 @@ namespace spot
|
||||||
assert(0); // TBD
|
assert(0); // TBD
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
assert(!"unsupported operator");
|
assert(!"unsupported operator");
|
||||||
}
|
}
|
||||||
/* Unreachable code. */
|
/* Unreachable code. */
|
||||||
|
|
|
||||||
|
|
@ -222,6 +222,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
case binop::UConcat:
|
case binop::UConcat:
|
||||||
case binop::EConcat:
|
case binop::EConcat:
|
||||||
|
case binop::EConcatMarked:
|
||||||
assert(!"unsupported operator");
|
assert(!"unsupported operator");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue