Introduce new ways to split an automaton

The explicit way of splitting suffers if there are
too many input APs, two new ways of splitting
are introduced as well as a heuristic to chose
between them.

* NEWS: update
* spot/twaalgos/synthesis.cc,
spot/twaalgos/synthesis.hh: New fonctions
* bin/ltlsynt.cc: Add corresponding option
* tests/core/gamehoa.test,
tests/core/ltlsynt.test,
tests/python/_partitioned_relabel.ipynb,
tests/python/_synthesis.ipynb,
tests/python/game.py,
tests/python/split.py,
tests/python/synthesis.py: Adjusting and adding test
This commit is contained in:
Philipp Schlehuber 2024-03-03 22:15:27 +01:00
parent 2274308cad
commit 5ddac258e1
11 changed files with 1372 additions and 138 deletions

View file

@ -29,8 +29,7 @@ for i in range(0, 2):
tc.assertFalse(spot.solve_game(game))
# A game can have only inputs
game = spot.ltl_to_game("GFa", [])
tc.assertEqual(game.to_str(), """HOA: v1
game_ref = spot.automaton("""HOA: v1
States: 3
Start: 0
AP: 1 "a"
@ -49,3 +48,10 @@ State: 1
State: 2
[t] 0 {0}
--END--""")
gi = spot.synthesis_info()
gi.dict = game_ref.get_dict()
game = spot.ltl_to_game("GFa", [], gi)
tc.assertTrue(spot.are_equivalent(game, game_ref))