diff --git a/spot/twaalgos/simulation.cc b/spot/twaalgos/simulation.cc index 9fe714e03..b06fb7fc7 100644 --- a/spot/twaalgos/simulation.cc +++ b/spot/twaalgos/simulation.cc @@ -582,6 +582,8 @@ namespace spot unsigned srcst = 0; auto create_edges = [&](int srcid, bdd one, bdd dest) { + if (dest == bddfalse) + return; // Iterate over all possible destination classes. We // use minato_isop here, because if the same valuation // of atomic properties can go to two different diff --git a/tests/core/568.test b/tests/core/568.test index b538bfb7d..8de15609b 100755 --- a/tests/core/568.test +++ b/tests/core/568.test @@ -101,3 +101,27 @@ EOF # Using autcross will also test tgba_determinize genaut --cycle-onehot-nba=11..12 --cycle-log-nba=11..12 | autcross --language-preserved 'autfilt --small' --verbose + + + +# A test case from issue #575 +cat >575.hoa < res.hoa +test "16 49 0" = "`autfilt --stats='%s %e %d' res.hoa`" diff --git a/tests/python/forq_contains.py b/tests/python/forq_contains.py index 165f9030f..df5d0ed66 100644 --- a/tests/python/forq_contains.py +++ b/tests/python/forq_contains.py @@ -360,3 +360,28 @@ tc.assertFalse(spot.contains(tba2, tba)) a = spot.translate("(p0 & p2) -> G!p1", "buchi") b = spot.translate("p0 -> G!p1", "buchi") do_symmetric_test(b, a) + +# issue #575 +aut1 = spot.automaton("""HOA: v1.1 States: 12 Start: 0 AP: 6 "p13" +"p12" "p15" "p16" "p14" "p11" acc-name: Buchi Acceptance: 1 Inf(0) +properties: trans-labels explicit-labels trans-acc !complete +properties: !deterministic exist-branch --BODY-- State: 0 [!0&!1&!3 | +!2 | !3&!4] 1 [!0&!1&3 | !2 | 3&!4] 2 [0&!3&4 | 1&!3&4 | !2] 3 [0&3&4 +| 1&3&4 | !2] 4 [0&!1&3&4 | !2] 6 State: 1 [t] 7 State: 2 [!0&!1&3&!5 +| !2 | 3&!4&!5] 2 {0} [0&3&4&!5 | 1&3&4&!5 | !2] 4 [0&!1&3&4&!5 | !2] +6 State: 3 [t] 5 State: 4 [!2 | 3&!4&!5] 2 {0} [!2 | 3&4&!5] 4 State: +5 [t] 9 State: 6 [!0&!1&3&!5 | !0&3&!4&!5 | !2] 2 {0} [!0&1&3&4&!5 | +!2] 4 [0&!1&3&!5 | 0&3&!4&!5 | !2] 6 [0&1&3&4&!5 | !2] 10 State: 7 [t] +11 State: 8 [t] 8 {0} State: 9 [t] 8 {0} State: 10 [!0&3&!4&!5 | !2] 2 +{0} [!0&3&4&!5 | !2] 4 [0&3&!4&!5 | !2] 6 [0&3&4&!5 | !2] 10 State: 11 +[t] 8 {0} --END--""") +aut2 = spot.automaton("""HOA: v1 States: 5 Start: 0 AP: 6 "p13" "p12" +"p15" "p16" "p14" "p11" acc-name: Buchi Acceptance: 1 Inf(0) +properties: trans-labels explicit-labels trans-acc --BODY-- State: 0 +[!0&!1&2&3 | 2&3&!4] 1 [0&2&3&4 | 1&2&3&4] 2 [0&!1&2&3&4] 3 State: 1 +[!0&!1&2&3&!5 | 2&3&!4&!5] 1 {0} [0&2&3&4&!5 | 1&2&3&4&!5] 2 +[0&!1&2&3&4&!5] 3 State: 2 [2&3&!4&!5] 1 {0} [2&3&4&!5] 2 State: 3 +[!0&!1&2&3&!5 | !0&2&3&!4&!5] 1 {0} [!0&1&2&3&4&!5] 2 [0&!1&2&3&!5 | +0&2&3&!4&!5] 3 [0&1&2&3&4&!5] 4 State: 4 [!0&2&3&!4&!5] 1 {0} +[!0&2&3&4&!5] 2 [0&2&3&!4&!5] 3 [0&2&3&4&!5] 4 --END--""") +do_symmetric_test(aut2, aut1)