twaalgos: implement restrict_dead_end_edges_here()

Discussed in issue #587.

* spot/twaalgos/deadends.cc, spot/twaalgos/deadends.hh: New files.
* spot/twaalgos/Makefile.am, python/spot/impl.i: Add them.
* tests/core/deadends.test, tests/python/deadends.py: New files.
* tests/Makefile.am: Add them.
* spot/twa/acc.cc, spot/twa/acc.hh (keep_one_inf_per_branch): New
method.
* bin/autfilt.cc: Learn option --restrict-dead-end-edges.
* NEWS: Mention it.
This commit is contained in:
Alexandre Duret-Lutz 2024-07-15 15:27:57 +02:00
parent f03e32619a
commit 31511e042a
11 changed files with 588 additions and 1 deletions

14
NEWS
View file

@ -1,6 +1,18 @@
New in spot 2.12.0.dev (not yet released)
Nothing yet.
Command-line tools:
- autfilt learned --restrict-dead-end-edges, to restricts labels of
edges leading to dead-ends. See the description of
restrict_dead_end_edges_here() below.
Library:
- restrict_dead_end_edges_here() can reduce non-determinism (but
not remove it) by restricting the label L of some edge (S)-L->(D)
going to a state D that does not have other successor than
itself. The conditions are detailled in the documentation of
this function.
New in spot 2.12 (2024-05-16)