Heavily rewrite and optimize the determinization

* NEWS: document the rewrite
* spot/twaalgos/determinize.cc: lots of code optimizations
* tests/core/safra.test, tests/python/highlighting.ipynb,
  tests/python/simstate.py: Update tests
This commit is contained in:
Maximilien Colange 2017-10-04 15:41:02 +02:00
parent 308415f88a
commit bd739a5712
5 changed files with 837 additions and 604 deletions

View file

@ -76,19 +76,19 @@ properties: trans-labels explicit-labels trans-acc complete
properties: deterministic stutter-invariant
--BODY--
State: 0 "{₀[0]₀}"
[0&!1] 0 {1}
[!0&!1] 0
[!0&1] 0
[0&!1] 0 {1}
[0&1] 1 {3}
State: 1 "{₀[0]{₂[2]₂}₀}{₁[1]₁}"
[0&!1] 0 {1}
[!0&!1] 0 {2}
[!0&1] 2
[0&!1] 0 {1}
[0&1] 1 {3}
State: 2 "{₀[0]₀}{₁[1]₁}"
[0&!1] 0 {1}
[!0&!1] 0 {2}
[!0&1] 2
[0&!1] 0 {1}
[0&1] 1 {3}
--END--"""
@ -118,53 +118,53 @@ Acceptance: 4 Fin(0) & (Inf(1) | (Fin(2) & Inf(3)))
properties: trans-labels explicit-labels trans-acc deterministic
--BODY--
State: 0 "{₀[0#0,0#1]₀}"
[!0&1] 1
[0&!1] 0
[0&1] 1
[0&1] 2
State: 1 "{₀[1#1]₀}"
[!0&1] 0
[0&!1] 3 {1}
[0&1] 4
State: 2 "{₀[0#0,0#1] [1#1]₀}"
[!0&1] 2
State: 1 "{₀[0#0,0#1] [1#1]₀}"
[0&!1] 3
[0&1] 4
[!0&1] 1
State: 2 "{₀[1#1]₀}"
[0&!1] 5 {1}
[0&1] 3
[0&!1] 4
[0&1] 5
State: 3 "{₀[1#0]₀}"
[!0&1] 0
State: 3 "{₀[0#0,0#1]{₁[1#0]₁}₀}"
[0&!1] 3
[0&1] 6
State: 4 "{₀[0#0,0#1]{₁[1#0]₁}₀}"
[!0&1] 7
State: 4 "{₀[0#0,0#1] [1#1]{₁[1#0]₁}₀}"
[0&!1] 3
[0&1] 6
[!0&1] 7
State: 5 "{₀[1#0]₀}"
[0&!1] 5
[0&!1] 4
[0&1] 8
[!0&1] 0
State: 6 "{₀[1#1]{₁[0#0,0#1] [1#0]₁}₀}"
[0&!1] 8 {1}
[0&1] 9 {1}
[!0&1] 1 {1}
State: 7 "{₀[1#1]{₁[0#0,0#1]₁}₀}"
[0&!1] 8 {1}
[0&1] 9 {1}
[!0&1] 10
State: 8 "{₀[0#0,0#1] [1#0]₀}"
[0&!1] 8
[0&1] 9
[!0&1] 1
State: 9 "{₀[0#0,0#1] [1#1] [1#0]₀}"
[0&!1] 3
[0&1] 4
[!0&1] 1
State: 10 "{₀[0#0,0#1]{₁[1#1]₁}₀}"
[0&!1] 3 {3}
[0&1] 11
State: 5 "{₀[0#0,0#1] [1#1]{₁[1#0]₁}₀}"
[!0&1] 7
State: 11 "{₀[1#1]{₁[0#0,0#1]{₂[1#0]₂}₁}₀}"
[0&!1] 8 {1}
[0&!1] 4
[0&1] 8
State: 6 "{₀[0#0,0#1] [1#0]₀}"
[!0&1] 2
[0&!1] 6
[0&1] 9
State: 7 "{₀[1#1]{₁[0#0,0#1]₁}₀}"
[!0&1] 10
[0&!1] 6 {1}
[0&1] 9 {1}
State: 8 "{₀[1#1]{₁[0#0,0#1] [1#0]₁}₀}"
[!0&1] 2 {1}
[0&!1] 6 {1}
[0&1] 9 {1}
State: 9 "{₀[0#0,0#1] [1#1] [1#0]₀}"
[!0&1] 2
[0&!1] 4
[0&1] 5
State: 10 "{₀[0#0,0#1]{₁[1#1]₁}₀}"
[!0&1] 7
[0&!1] 4 {3}
[0&1] 11
State: 11 "{₀[1#1]{₁[0#0,0#1]{₂[1#0]₂}₁}₀}"
[!0&1] 2 {1}
[0&!1] 6 {1}
[0&1] 9 {1}
[!0&1] 1 {1}
--END--"""
a = spot.translate('!Gp0 xor FG((p0 W Gp1) M p1)')