synthesis: fix handling of deadstates

* spot/twaalgos/synthesis.cc: Remove a debuging print
from the semisym code, and add an additional case
in the fullysym code.
* tests/core/ltlsynt.test: Add a some test case,
and remove some bashism.
This commit is contained in:
Alexandre Duret-Lutz 2024-09-12 14:00:08 +02:00
parent 90fb7b1cd9
commit 99a622059c
2 changed files with 10 additions and 14 deletions

View file

@ -1386,6 +1386,8 @@ namespace spot
{
assert(std::holds_alternative<bdd>(ccondin));
const bdd& ccond = std::get<bdd>(ccondin);
if (ccond == bddfalse)
return;
int clvl = ccond == bddtrue ? inIdx : bdd_var(ccond);
if (clvl >= inIdx)
{
@ -1468,17 +1470,11 @@ namespace spot
for (const auto &e: aut->out(s))
enc_out_s |= encode_edge(e); // Switch to new ins and outs
// Can only be false if there is no outgoing edge
// In this case: Nothing to do
assert(enc_out_s != bddfalse
|| (!(aut->out(s).begin())));
if (enc_out_s == bddfalse)
{
std::cerr << "Dead end state: " << s << '\n';
#ifndef NDEBUG
print_hoa(std::cerr, aut);
#endif
// Can only be false if there is no outgoing edge
// In this case: Nothing to do
assert(!(aut->out(s).begin()));
continue;
}