hoa: add support for controllable-AP

* doc/spot.bib (perez.19.hoa): New entry.
* spot/parseaut/public.hh: Mention it.
* spot/parseaut/parseaut.yy, spot/parseaut/scanaut.ll: Learn to parse
the controllable-AP header.
* spot/twaalgos/hoa.cc: Print it.
* tests/core/ltlsynt.test, tests/core/parseaut.test,
tests/core/readsave.test, tests/python/_synthesis.ipynb,
tests/python/except.py, tests/python/games.ipynb,
tests/python/mealy.py, tests/python/synthesis.py: Adjust or augment
test cases.
This commit is contained in:
Alexandre Duret-Lutz 2022-01-03 18:04:29 +01:00
parent 7cefe30d97
commit 8c33f959a3
14 changed files with 134 additions and 15 deletions

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2014-2021 Laboratoire de Recherche et
// Copyright (C) 2014-2022 Laboratoire de Recherche et
// Developpement de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -627,6 +627,22 @@ namespace spot
}
os << nl;
}
if (auto synout = aut->get_named_prop<bdd>("synthesis-outputs"))
{
bdd vars = bdd_support(*synout);
os << "controllable-AP:";
while (vars != bddtrue)
{
int v = bdd_var(vars);
vars = bdd_high(vars);
if (auto p = md.ap.find(v); p != md.ap.end())
os << ' ' << p->second;
else
throw std::runtime_error("print_hoa(): synthesis-outputs has "
"unregistered proposition");
}
os << nl;
}
// If we want to output implicit labels, we have to
// fill a vector with all destinations in order.