more doc handling of prop_universal for fused initial states

Fixes #560.

* spot/parseaut/parseaut.yy: Add more comments about handling
of prop_universal in present of multiple initial states.  It took
me time to figure out that it was done correctly.  Also only
reset prop_complete() in the case an initial state is reused.
* tests/core/det.test: Add a test case for the deterministic property.
* tests/python/parsetgba.py: Add tests for complete.
* doc/org/hoa.org: Add more text about the effect of fusing initial
states.
* doc/org/concepts.org (properties): Replace "deterministic" by
"universal".  The former was obsoleted in Spot 2.4.
This commit is contained in:
Alexandre Duret-Lutz 2024-02-08 22:43:44 +01:00
parent a735c2b72d
commit a6f79c6211
5 changed files with 159 additions and 54 deletions

View file

@ -293,3 +293,31 @@ State: 1
EOF
autfilt -q --is-deterministic in.hoa && exit 1
autfilt --merge-transitions in.hoa | autfilt --is-deterministic
# This is a peculiarity of Spot: because it supports only one initial
# state, but the HOA format allows for more, Spot's automaton parser
# will fuse multiple initial states to fit into the Spot definition of
# an automaton. While this is preserving the original language, this
# fusing of initial states may turn a non-deterministic automaton
# (because of the multiple declared initial states) into a
# deterministic one. (Issue #560.)
cat >560.hoa <<EOF
HOA: v1.1
States: 3
Start: 1
Start: 2
AP: 1 "a"
Acceptance: 0 t
properties: !deterministic
--BODY--
State: 0
[t] 0
State: 1
[0] 0
State: 2
[!0] 0
--END--
EOF
test "1 2 1" = "`autfilt --stats='%d %[r]s %[u]s' 560.hoa`"