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_);
|
||||
// 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};
|
||||
unsigned par_pair[2];
|
||||
unsigned scc_new_par = std::max(scc_acc.max_set(), 1u);
|
||||
bool player_color_larger;
|
||||
if (scc_new_par&1)
|
||||
{
|
||||
player_color_larger = false;
|
||||
par_pair[1] = scc_new_par;
|
||||
par_pair[0] = scc_new_par+1;
|
||||
}
|
||||
else
|
||||
{
|
||||
player_color_larger = true;
|
||||
par_pair[1] = scc_new_par+1;
|
||||
par_pair[0] = scc_new_par;
|
||||
}
|
||||
|
|
@ -331,6 +336,7 @@ namespace spot
|
|||
for (unsigned v : c_states())
|
||||
{
|
||||
assert(subgame_[v] == unseen_mark);
|
||||
bool owner = (*owner_ptr_)[v];
|
||||
for (auto &e : arena_->out(v))
|
||||
{
|
||||
// The outgoing edges are taken finitely often
|
||||
|
|
@ -342,14 +348,20 @@ namespace spot
|
|||
e.dst, e.acc);
|
||||
if (w_.winner(e.dst))
|
||||
{
|
||||
// Winning region of player -> odd
|
||||
e.acc = odd_mark;
|
||||
// Winning region off player ->
|
||||
// odd mark if player
|
||||
// else 1 (smallest loosing for env)
|
||||
e.acc = owner ? odd_mark
|
||||
: acc_cond::mark_t({1});
|
||||
added[1] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Winning region of env -> even
|
||||
e.acc = even_mark;
|
||||
// Winning region of env ->
|
||||
// even mark for env,
|
||||
// else 0 (smallest loosing for player)
|
||||
e.acc = !owner ? even_mark
|
||||
: acc_cond::mark_t({0});
|
||||
added[0] = true;
|
||||
}
|
||||
// Replace with self-loop
|
||||
|
|
@ -360,13 +372,22 @@ namespace spot
|
|||
|
||||
// Compute the attractors of the self-loops/transitions leaving scc
|
||||
// These can be directly added to the winning states
|
||||
// Note: attractors can not intersect therefore the order in which
|
||||
// they are computed does not matter
|
||||
// To avoid disregarding edges in attr computation we
|
||||
// need to start with the larger color
|
||||
// Todo come up with a test for this
|
||||
unsigned dummy_rd;
|
||||
|
||||
for (bool p : {false, true})
|
||||
if (added[p])
|
||||
attr(dummy_rd, p, par_pair[p], true, par_pair[p]);
|
||||
for (bool p : {player_color_larger,
|
||||
!player_color_larger})
|
||||
{
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
if (added[0] || added[1])
|
||||
// Fix "negative" strategy
|
||||
|
|
@ -379,8 +400,11 @@ namespace spot
|
|||
|
||||
inline bool
|
||||
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
|
||||
// subgame given as rd.
|
||||
// If acc_par is true, max_par transitions are also accepting and
|
||||
|
|
@ -394,7 +418,7 @@ namespace spot
|
|||
// As proposed in Oink! / PGSolver
|
||||
// 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((min_win_par <= max_par) && (max_par <= max_abs_par_));
|
||||
|
||||
|
|
|
|||
|
|
@ -63,3 +63,214 @@ State: 7
|
|||
State: 8 {1}
|
||||
[0] 2
|
||||
--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