Commit 8c480039 authored by Florian Renkin's avatar Florian Renkin

to_parity: Use merge_states

* spot/twaalgos/toparity.cc: Use merge_states at the end
of to_parity.
* tests/python/toparity.py: Update tests.
parent 875846f5
......@@ -1684,6 +1684,7 @@ run()
res_->set_named_prop("state-names", names);
reduce_parity_here(res_);
res_->purge_unreachable_states();
res_->merge_states();
return res_;
}
......
......@@ -195,7 +195,7 @@ State: 13
[0&1] 5
[!0&!1] 10 {0 1 3 5}
[0&!1] 13 {1 3}
--END--"""), [35, 28, 23, 30, 29, 25, 22])
--END--"""), [31, 27, 23, 28, 28, 24, 22])
test(spot.automaton("""
HOA: v1
......@@ -288,7 +288,7 @@ State: 4
[0&!1] 4
[0&1] 4 {1 2 4}
--END--
"""), [9, 6, 7, 7, 6, 6, 6])
"""), [8, 6, 7, 7, 6, 6, 6])
test(spot.automaton("""
HOA: v1
......@@ -341,7 +341,7 @@ explicit-labels trans-acc --BODY-- State: 0 [0&1] 2 {4 5} [0&1] 4 {0 4}
p = spot.to_parity_old(a, True)
assert p.num_states() == 22
assert spot.are_equivalent(a, p)
test(a, [8, 7, 8, 8, 6, 7, 6])
test(a, [6, 6, 6, 6, 6, 6, 6])
# Force a few edges to false, to make sure to_parity() is OK with that.
for e in a.out(2):
......@@ -371,4 +371,4 @@ for f in spot.randltl(5, 2000):
a = spot.translate('!(GFa -> (GFb & GF(!b & !Xb)))', 'gen', 'det')
b = spot.to_parity_old(a, True)
assert a.equivalent_to(b)
test(a, [7, 7, 3, 7, 8, 7, 3])
test(a, [6, 6, 3, 6, 7, 6, 3])
  • Please drop this patch from your branch.

    We will run merge_states() in postproc and in ltlsynt after running to_parity(). I'm currently writing a patch to move reduce_parity() out of to_parity() as well: when it's included, to_parity() does not return compatible result when run on an entire automaton or a on a single SCC. Keeping it outside makes it easier to follow what's going on.

Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment