Correct bug in zielonka
Optimization in Zielonka failed under certain circumstances todo: Devise a specialized test for direct attr computation * spot/twaalgos/game.cc: Correction * tests/python/game.py: Test
This commit is contained in:
parent
9c6a09890e
commit
27d455389e
2 changed files with 246 additions and 11 deletions
|
|
@ -309,16 +309,21 @@ namespace spot
|
||||||
{
|
{
|
||||||
auto scc_acc = info_->acc_sets_of(c_scc_idx_);
|
auto scc_acc = info_->acc_sets_of(c_scc_idx_);
|
||||||
// We will override all parities of edges leaving the scc
|
// We will override all parities of edges leaving the scc
|
||||||
|
// Currently game is colored max odd
|
||||||
|
// So there is at least one color
|
||||||
bool added[] = {false, false};
|
bool added[] = {false, false};
|
||||||
unsigned par_pair[2];
|
unsigned par_pair[2];
|
||||||
unsigned scc_new_par = std::max(scc_acc.max_set(), 1u);
|
unsigned scc_new_par = std::max(scc_acc.max_set(), 1u);
|
||||||
|
bool player_color_larger;
|
||||||
if (scc_new_par&1)
|
if (scc_new_par&1)
|
||||||
{
|
{
|
||||||
|
player_color_larger = false;
|
||||||
par_pair[1] = scc_new_par;
|
par_pair[1] = scc_new_par;
|
||||||
par_pair[0] = scc_new_par+1;
|
par_pair[0] = scc_new_par+1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
player_color_larger = true;
|
||||||
par_pair[1] = scc_new_par+1;
|
par_pair[1] = scc_new_par+1;
|
||||||
par_pair[0] = scc_new_par;
|
par_pair[0] = scc_new_par;
|
||||||
}
|
}
|
||||||
|
|
@ -331,6 +336,7 @@ namespace spot
|
||||||
for (unsigned v : c_states())
|
for (unsigned v : c_states())
|
||||||
{
|
{
|
||||||
assert(subgame_[v] == unseen_mark);
|
assert(subgame_[v] == unseen_mark);
|
||||||
|
bool owner = (*owner_ptr_)[v];
|
||||||
for (auto &e : arena_->out(v))
|
for (auto &e : arena_->out(v))
|
||||||
{
|
{
|
||||||
// The outgoing edges are taken finitely often
|
// The outgoing edges are taken finitely often
|
||||||
|
|
@ -342,14 +348,20 @@ namespace spot
|
||||||
e.dst, e.acc);
|
e.dst, e.acc);
|
||||||
if (w_.winner(e.dst))
|
if (w_.winner(e.dst))
|
||||||
{
|
{
|
||||||
// Winning region of player -> odd
|
// Winning region off player ->
|
||||||
e.acc = odd_mark;
|
// odd mark if player
|
||||||
|
// else 1 (smallest loosing for env)
|
||||||
|
e.acc = owner ? odd_mark
|
||||||
|
: acc_cond::mark_t({1});
|
||||||
added[1] = true;
|
added[1] = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Winning region of env -> even
|
// Winning region of env ->
|
||||||
e.acc = even_mark;
|
// even mark for env,
|
||||||
|
// else 0 (smallest loosing for player)
|
||||||
|
e.acc = !owner ? even_mark
|
||||||
|
: acc_cond::mark_t({0});
|
||||||
added[0] = true;
|
added[0] = true;
|
||||||
}
|
}
|
||||||
// Replace with self-loop
|
// Replace with self-loop
|
||||||
|
|
@ -360,13 +372,22 @@ namespace spot
|
||||||
|
|
||||||
// Compute the attractors of the self-loops/transitions leaving scc
|
// Compute the attractors of the self-loops/transitions leaving scc
|
||||||
// These can be directly added to the winning states
|
// These can be directly added to the winning states
|
||||||
// Note: attractors can not intersect therefore the order in which
|
// To avoid disregarding edges in attr computation we
|
||||||
// they are computed does not matter
|
// need to start with the larger color
|
||||||
|
// Todo come up with a test for this
|
||||||
unsigned dummy_rd;
|
unsigned dummy_rd;
|
||||||
|
|
||||||
for (bool p : {false, true})
|
for (bool p : {player_color_larger,
|
||||||
|
!player_color_larger})
|
||||||
|
{
|
||||||
if (added[p])
|
if (added[p])
|
||||||
|
{
|
||||||
|
// Always take the larger,
|
||||||
|
// Otherwise states with an transition to a winning AND
|
||||||
|
// a loosing scc are treated incorrectly
|
||||||
attr(dummy_rd, p, par_pair[p], true, par_pair[p]);
|
attr(dummy_rd, p, par_pair[p], true, par_pair[p]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (added[0] || added[1])
|
if (added[0] || added[1])
|
||||||
// Fix "negative" strategy
|
// Fix "negative" strategy
|
||||||
|
|
@ -379,8 +400,11 @@ namespace spot
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
attr(unsigned &rd, bool p, unsigned max_par,
|
attr(unsigned &rd, bool p, unsigned max_par,
|
||||||
bool acc_par, unsigned min_win_par)
|
bool acc_par, unsigned min_win_par,
|
||||||
|
bool no_check=false)
|
||||||
{
|
{
|
||||||
|
// In fix_scc, the attr computation is
|
||||||
|
// abused so we can not check ertain things
|
||||||
// Computes the attractor of the winning set of player p within a
|
// Computes the attractor of the winning set of player p within a
|
||||||
// subgame given as rd.
|
// subgame given as rd.
|
||||||
// If acc_par is true, max_par transitions are also accepting and
|
// If acc_par is true, max_par transitions are also accepting and
|
||||||
|
|
@ -394,7 +418,7 @@ namespace spot
|
||||||
// As proposed in Oink! / PGSolver
|
// As proposed in Oink! / PGSolver
|
||||||
// Needs the transposed graph however
|
// Needs the transposed graph however
|
||||||
|
|
||||||
assert((!acc_par) || (acc_par && (max_par&1) == p));
|
assert((no_check || !acc_par) || (acc_par && (max_par&1) == p));
|
||||||
assert(!acc_par || (0 < min_win_par));
|
assert(!acc_par || (0 < min_win_par));
|
||||||
assert((min_win_par <= max_par) && (max_par <= max_abs_par_));
|
assert((min_win_par <= max_par) && (max_par <= max_abs_par_));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,3 +63,214 @@ State: 7
|
||||||
State: 8 {1}
|
State: 8 {1}
|
||||||
[0] 2
|
[0] 2
|
||||||
--END--""")
|
--END--""")
|
||||||
|
|
||||||
|
# Testing case where parity_game optimization
|
||||||
|
# lead to wrong results
|
||||||
|
si = spot.synthesis_info()
|
||||||
|
|
||||||
|
game = spot.automaton("""HOA: v1
|
||||||
|
States: 27
|
||||||
|
Start: 7
|
||||||
|
AP: 11 "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k"
|
||||||
|
acc-name: parity max odd 3
|
||||||
|
Acceptance: 3 Fin(2) & (Inf(1) | Fin(0))
|
||||||
|
properties: trans-labels explicit-labels trans-acc colored
|
||||||
|
properties: deterministic
|
||||||
|
spot-state-player: 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
controllable-AP: 0 1 2 3 4 5 6 7
|
||||||
|
--BODY--
|
||||||
|
State: 0
|
||||||
|
[t] 8 {0}
|
||||||
|
State: 1
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!8&!10 | !9&!10] 9 {0}
|
||||||
|
[!8&10 | !9&10] 10 {0}
|
||||||
|
State: 2
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!8&!10 | !9&!10] 11 {0}
|
||||||
|
[!8&10 | !9&10] 12 {0}
|
||||||
|
State: 3
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!9&!10] 13 {0}
|
||||||
|
[!8&10 | !9&10] 14 {0}
|
||||||
|
[!8&9&!10] 15 {0}
|
||||||
|
State: 4
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!8&!10 | !9&!10] 16 {0}
|
||||||
|
[!8&!9&10] 17 {0}
|
||||||
|
[!8&9&10] 18 {0}
|
||||||
|
[8&!9&10] 19 {0}
|
||||||
|
State: 5
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!9&!10] 20 {0}
|
||||||
|
[!8&10 | !9&10] 21 {0}
|
||||||
|
[!8&9&!10] 22 {0}
|
||||||
|
State: 6
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!8&!10 | !9&!10] 23 {0}
|
||||||
|
[!8&!9&10] 24 {0}
|
||||||
|
[!8&9&10] 25 {0}
|
||||||
|
[8&!9&10] 26 {0}
|
||||||
|
State: 7
|
||||||
|
[8&9] 8 {0}
|
||||||
|
[!9&!10] 13 {0}
|
||||||
|
[!8&9&!10] 15 {0}
|
||||||
|
[!8&!9&10] 17 {0}
|
||||||
|
[!8&9&10] 18 {0}
|
||||||
|
[8&!9&10] 19 {0}
|
||||||
|
State: 8
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 |
|
||||||
|
!0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 | !0&1&!2&!3&4&!5&!6&7 |
|
||||||
|
!0&1&!2&!3&4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 0 {1}
|
||||||
|
State: 9
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 1 {2}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
!0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {2}
|
||||||
|
State: 10
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
!0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {2}
|
||||||
|
State: 11
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {2}
|
||||||
|
State: 12
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {2}
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {2}
|
||||||
|
State: 13
|
||||||
|
[!0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&4&!5&!6&7] 3 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7] 5 {1}
|
||||||
|
State: 14
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
!0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
State: 15
|
||||||
|
[!0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&4&!5&!6&7] 4 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7] 6 {1}
|
||||||
|
State: 16
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
!0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
State: 17
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&3&!4&!5&!6&7] 6 {1}
|
||||||
|
State: 18
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&3&!4&!5&!6&7] 5 {1}
|
||||||
|
State: 19
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&!1&2&!3&4&!5&!6&7 |
|
||||||
|
!0&!1&2&!3&4&!5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&3&!4&!5&!6&7 | !0&!1&2&3&!4&!5&6&!7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&3&!4&!5&6&!7] 6 {1}
|
||||||
|
State: 20
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7] 3 {1}
|
||||||
|
State: 21
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
State: 22
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7] 4 {1}
|
||||||
|
State: 23
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&!3&4&!5&6&!7 |
|
||||||
|
!0&1&!2&3&!4&!5&!6&7 | !0&1&!2&3&!4&!5&6&!7 | 0&!1&!2&!3&4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 | 0&!1&!2&3&!4&!5&6&!7] 0 {1}
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
!0&1&!2&!3&!4&5&6&!7 | 0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
State: 24
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&6&!7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 |
|
||||||
|
0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&!3&!4&5&!6&7] 4 {1}
|
||||||
|
[!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&3&!4&!5&!6&7] 6 {1}
|
||||||
|
State: 25
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&6&!7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&6&!7 | !0&1&!2&3&!4&!5&6&!7 |
|
||||||
|
0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 |
|
||||||
|
0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&!3&!4&5&!6&7] 3 {1}
|
||||||
|
[!0&1&!2&!3&4&!5&!6&7 | !0&1&!2&3&!4&!5&!6&7] 5 {1}
|
||||||
|
State: 26
|
||||||
|
[!0&!1&2&!3&!4&5&!6&7 | !0&!1&2&!3&!4&5&6&!7 | !0&1&!2&!3&!4&5&!6&7 |
|
||||||
|
0&!1&!2&!3&!4&5&!6&7 | 0&!1&!2&!3&!4&5&6&!7] 1 {1}
|
||||||
|
[!0&!1&2&!3&4&!5&!6&7 | !0&!1&2&!3&4&!5&6&!7 | !0&!1&2&3&!4&!5&!6&7 |
|
||||||
|
!0&!1&2&3&!4&!5&6&!7 | !0&1&!2&!3&4&!5&!6&7 | !0&1&!2&3&!4&!5&!6&7 |
|
||||||
|
0&!1&!2&!3&4&!5&!6&7 | 0&!1&!2&!3&4&!5&6&!7 | 0&!1&!2&3&!4&!5&!6&7 |
|
||||||
|
0&!1&!2&3&!4&!5&6&!7] 2 {1}
|
||||||
|
[!0&1&!2&!3&!4&5&6&!7] 4 {1}
|
||||||
|
[!0&1&!2&!3&4&!5&6&!7 | !0&1&!2&3&!4&!5&6&!7] 6 {1}
|
||||||
|
--END--""")
|
||||||
|
|
||||||
|
tc.assertTrue(spot.solve_game(game, si))
|
||||||
|
|
||||||
|
games = spot.split_edges(game)
|
||||||
|
spot.set_state_players(games, spot.get_state_players(game))
|
||||||
|
tc.assertTrue(spot.solve_game(games, si))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue