[Toss-devel-svn] SF.net SVN: toss:[1579] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
From: <luk...@us...> - 2011-09-29 22:18:40
|
Revision: 1579 http://toss.svn.sourceforge.net/toss/?rev=1579&view=rev Author: lukstafi Date: 2011-09-29 22:18:32 +0000 (Thu, 29 Sep 2011) Log Message: ----------- GDL translation: bug fix in eliminating redundant existenital quantification; switched introducing relation complements off; fixes in translating incoming moves for concurrent games; regenerated tests. Modified Paths: -------------- trunk/Toss/Formula/FormulaOpsTest.ml trunk/Toss/GGP/GameSimpl.ml trunk/Toss/GGP/TranslateGame.ml trunk/Toss/GGP/TranslateGameTest.ml trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss trunk/Toss/GGP/tests/breakthrough-raw.toss trunk/Toss/GGP/tests/breakthrough-simpl.toss trunk/Toss/GGP/tests/connect4-raw.toss trunk/Toss/GGP/tests/connect4-simpl.toss trunk/Toss/GGP/tests/connect5-raw.toss trunk/Toss/GGP/tests/connect5-simpl.toss trunk/Toss/GGP/tests/tictactoe-simpl.toss Modified: trunk/Toss/Formula/FormulaOpsTest.ml =================================================================== --- trunk/Toss/Formula/FormulaOpsTest.ml 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/Formula/FormulaOpsTest.ml 2011-09-29 22:18:32 UTC (rev 1579) @@ -295,6 +295,7 @@ let rr_eq phi1 phi2 = formula_eq id phi2 (FormulaOps.remove_redundant ~implies) phi1 in rr_eq "P(x) and Q(x)" "P(x)"; + rr_eq "R(x, y) and (Q(x) and P(x))" "R(x, y) and P(x)"; rr_eq "P(x) and (not Q(x) or R(x,y))" "P(x) and R(x,y)"; rr_eq "Q(x) and (not P(x) or R(x,y))" "Q(x) and (R(x, y) or not P(x))"; Modified: trunk/Toss/GGP/GameSimpl.ml =================================================================== --- trunk/Toss/GGP/GameSimpl.ml 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/GameSimpl.ml 2011-09-29 22:18:32 UTC (rev 1579) @@ -141,7 +141,7 @@ let debug_level = ref 0 -let introduce_complement = ref true +let introduce_complement = ref false let final_simplify = ref (FormulaOps.remove_redundant ?implies:None) @@ -176,11 +176,19 @@ | Eq (v1, v2) when List.mem (v2 :> var) vs -> Aux.Left (Formula.var_str v2, Formula.var_str v1) | phi -> Aux.Right phi) conj in + let more_conj = List.filter + (fun (elim, equated) -> List.tl equated <> []) + (Aux.collect sb) in + let more_conj = Aux.concat_map + (fun (_, equated) -> + let lhs = List.hd equated in + List.map (fun rhs -> Eq (`FO lhs, `FO rhs)) (List.tl equated)) + more_conj in if sb = [] then Ex (vs, And conj) else let vs = List.filter (fun v -> not (List.mem_assoc (var_str v) sb)) vs in - let phi = FormulaSubst.subst_vars sb (And conj) in + let phi = FormulaSubst.subst_vars sb (And (more_conj @ conj)) in if vs = [] then phi else Ex (vs, phi) | phi -> phi} in FormulaMap.map_formula f_map phi Modified: trunk/Toss/GGP/TranslateGame.ml =================================================================== --- trunk/Toss/GGP/TranslateGame.ml 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/TranslateGame.ml 2011-09-29 22:18:32 UTC (rev 1579) @@ -650,7 +650,7 @@ terms. Remove "true" atoms that are "subsumed" by more specific atoms (that have subterms instead of blanks). *) let call_transform term_arities ground_at_c_paths - rel partition ((h_rel,h_args as h),body as cl) = + rel partition ((h_rel,h_args as h),body) = let r_atoms = if h_rel = rel then [h_args] else [] in let r_atoms = r_atoms @ Aux.map_some (function Rel (r, args) when r = rel -> Some args @@ -2833,7 +2833,7 @@ (* }}} *) let game, state = result in let inl_game = Arena.map_to_formulas GameSimpl.remove_exist - (inline_defined_rels defined_rels game) in + (inline_defined_rels game.Arena.defined_rels game) in gdl_translation, game, (inl_game, state) @@ -2869,8 +2869,11 @@ (* {{{ log entry *) if !debug_level > 2 then ( Printf.printf - "GDL.translate_incoming_move: rule=%s; trying precond=\n%s\n...%!" - rname (Formula.sprint precond) + "GDL.translate_incoming_move: rule=%s; move=%s; coords=%s; precond=\n%s\n...%!" + rname (term_str move) + (*String.concat ", " (List.map term_str (Array.to_list rdata.legal_tuple))*) + (String.concat ", " (List.map Formula.sprint coords)) + (Formula.sprint precond) ); (* }}} *) @@ -2883,7 +2886,6 @@ (Structure.str struc) ); (* }}} *) - DiscreteRule.debug_level := 6; let asgns = DiscreteRule.find_matchings struc r_obj in (* {{{ log entry *) @@ -2959,28 +2961,32 @@ (* We translate as a suite of moves, one for each player; after these rules have been applied, the server should apply the environment rule. *) -let translate_incoming_move_concurrent gdl state actions = +let translate_incoming_move_concurrent gdl (game,state as gstate) actions = (* there is only location 0; Environment is not among [actions] *) + let loc = game.Arena.graph.(0) in let actions = Array.of_list actions in - (* let location = (fst state).Arena.graph.(0) in *) - let struc = (snd state).Arena.struc in + (* let location = state.Arena.graph.(0) in *) + let struc = state.Arena.struc in (* the players actually start at 1, index 0 is the environment *) let candidates = Array.mapi (fun player_not_env move -> let player = player_not_env + 1 in + let prules = loc.(player).Arena.moves in + let prules = List.map (fun (lb,_)->lb.Arena.lb_rule) prules in let tossrules = - Aux.strmap_filter (fun _ rdata -> - rdata.legal_tuple <> [||] && (* not Environment rule *) + Aux.strmap_filter (fun rname rdata -> + List.mem rname prules && + rdata.legal_tuple <> [||] && (* not Environment rule *) let legal_term = if Array.length rdata.legal_tuple > 1 - then rdata.legal_tuple.(player) + then rdata.legal_tuple.(player_not_env) else rdata.legal_tuple.(0) in try ignore (unify [] [move] [legal_term]); true with Not_found -> false ) gdl.tossrule_data in let candidates = Aux.map_some (fun (rname, rdata) -> translate_incoming_single_action gdl.fluents gdl.transl_data - rdata state player move rname + rdata gstate player move rname ) tossrules in match candidates with | [] -> Modified: trunk/Toss/GGP/TranslateGameTest.ml =================================================================== --- trunk/Toss/GGP/TranslateGameTest.ml 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/TranslateGameTest.ml 2011-09-29 22:18:32 UTC (rev 1579) @@ -95,14 +95,31 @@ (* COPIED FROM ReqHandler. *) exception Found of int (* The player applying the rewrite seems not to be used. *) -(* Problem: are players indexed from 0 or from 1 in graph? *) -let apply_rewrite state (player, (r_name, mtch)) = +(* players are indexed from 1 in graph (0 is Environment) *) +let apply_rewrite (game,state as gstate) (player, (r_name, mtch)) = if r_name <> "" then ( - let {Arena.rules=rules; graph=graph} = fst state in - let mv_loc = graph.((snd state).Arena.cur_loc).(player) in + let {Arena.rules=rules; graph=graph} = game in + let struc = state.Arena.struc in + let mv_loc = graph.(state.Arena.cur_loc).(player) in let moves = - Move.gen_moves Move.cGRID_SIZE rules - (snd state).Arena.struc mv_loc in + Move.gen_moves Move.cGRID_SIZE rules struc mv_loc in + (* {{{ log entry *) + if !debug_level > 0 then ( + let prules = + List.map (fun (lb,_)->lb.Arena.lb_rule) mv_loc.Arena.moves in + Printf.printf + "apply_rewrite: r_name=%s; mtch=%s; player=%d; prules=%s; moves= %s\n%!" + r_name + (ContinuousRule.embedding_str (List.assoc r_name rules) struc mtch) + player (String.concat ", " prules) + (String.concat "; " + (List.map (fun m-> + let rul = List.assoc m.Arena.rule rules in + m.Arena.rule^":"^ + ContinuousRule.embedding_str rul struc + m.Arena.embedding) (Array.to_list moves))) + ); + (* }}} *) let pos = ( try for i = 0 to Array.length moves - 1 do @@ -118,11 +135,11 @@ with Found pos -> pos) in let req = Arena.ApplyRuleInt (r_name, mtch, 0.1, []) in - let (new_state_noloc, resp) = Arena.handle_request state req in + let (new_state_noloc, resp) = Arena.handle_request gstate req in let new_loc = moves.(pos).Arena.next_loc in (fst new_state_noloc, {snd new_state_noloc with Arena.cur_loc = new_loc}) - ) else state + ) else gstate let simult_test_case ~game_name ~player ~own_plnum ~opp_plnum ~own_rule_name ~own_emb ~own_move ~opp_rule_name ~opp_emb @@ -289,7 +306,7 @@ ~loc0_move:"(drop 2)" ~loc0_noop:"noop" ~loc1:1 ~loc1_rule_name:"noop_drop_c12" ~loc1_emb:[ - "cell_c12_h6__BLANK_", "cell_2_1__BLANK_"; + "cell_c12_h6__BLANK_", "cell_2_2__BLANK_"; "control__BLANK_", "control__BLANK_"] ~loc1_noop:"noop" ~loc1_move:"(drop 2)" ); @@ -307,18 +324,18 @@ let a () = set_debug_level 4; - game_test_case ~game_name:"tictactoe" ~player:"xplayer" + game_test_case ~game_name:"connect4" ~player:"white" ~own_plnum:0 ~opponent_plnum:1 - ~loc0_rule_name:"mark_x6_y_noop" + ~loc0_rule_name:"drop_c11_noop" ~loc0_emb:[ - "cell_x6_y__BLANK_", "cell_2_2__BLANK_"; + "cell_c11_h4__BLANK_", "cell_2_1__BLANK_"; "control__BLANK_", "control__BLANK_"] - ~loc0_move:"(mark 2 2)" ~loc0_noop:"noop" - ~loc1:1 ~loc1_rule_name:"noop_mark_x7_y0" + ~loc0_move:"(drop 2)" ~loc0_noop:"noop" + ~loc1:1 ~loc1_rule_name:"noop_drop_c12" ~loc1_emb:[ - "cell_x7_y0__BLANK_", "cell_1_1__BLANK_"; + "cell_c12_h6__BLANK_", "cell_2_2__BLANK_"; "control__BLANK_", "control__BLANK_"] - ~loc1_noop:"noop" ~loc1_move:"(mark 1 1)"; + ~loc1_noop:"noop" ~loc1_move:"(drop 2)"; (* failwith "tested"; *) () @@ -356,14 +373,14 @@ TranslateGame.generate_test_case := None let a () = - regenerate ~debug:false ~game_name:"tictactoe" ~player:"xplayer"; + (* regenerate ~debug:false ~game_name:"tictactoe" ~player:"xplayer"; *) (* regenerate ~debug:false ~game_name:"connect5" ~player:"x"; *) (* regenerate ~debug:false ~game_name:"breakthrough" ~player:"white"; *) (* regenerate ~debug:true ~game_name:"pawn_whopping" ~player:"x"; *) (* regenerate ~debug:false ~game_name:"connect4" ~player:"white"; *) (* regenerate ~debug:false ~game_name:"2player_normal_form_2010" ~player:"row"; *) - (* regenerate ~debug:true ~game_name:"pacman3p" ~player:"pacman"; *) - failwith "generated"; + regenerate ~debug:true ~game_name:"pacman3p" ~player:"pacman"; + (* failwith "generated"; *) () let translate_file fname timeout = Modified: trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss =================================================================== --- trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss 2011-09-29 22:18:32 UTC (rev 1579) @@ -4,7 +4,6 @@ ex did__BLANK__m11 (did__BLANK___BLANK_(did__BLANK__m11) and did_0row(did__BLANK__m11)) PLAYERS Environment, row, column -DATA C: C__val___BLANK_ RULE m: [did__BLANK__m, synch_control_ | _opt_column__SYNC {did__BLANK__m; synch_control_}; @@ -22,8 +21,9 @@ pre (not terminal() and ex val__r0, val__r, did__BLANK__m0 - (did__BLANK___BLANK_(did__BLANK__m0) and reward(did__BLANK__m, - did__BLANK__m0, val__r, val__r0) and not C(val__r) and not C(val__r0))) + (did__BLANK___BLANK_(did__BLANK__m0) and val___BLANK_(val__r) and + val___BLANK_(val__r0) and reward(did__BLANK__m, did__BLANK__m0, val__r, + val__r0))) RULE m2: [did__BLANK__m2, synch_control_ | _opt_column__SYNC (did__BLANK__m2); @@ -41,9 +41,9 @@ pre (not terminal() and ex val__r2, val__r1, did__BLANK__m1 - (did__BLANK___BLANK_(did__BLANK__m1) and reward(did__BLANK__m1, - did__BLANK__m2, val__r1, val__r2) and not C(val__r1) and - not C(val__r2))) + (did__BLANK___BLANK_(did__BLANK__m1) and val___BLANK_(val__r1) and + val___BLANK_(val__r2) and reward(did__BLANK__m1, did__BLANK__m2, + val__r1, val__r2))) RULE Environment: [synch_control_ | _opt_did_0column (synch_control_); _opt_did_0row (synch_control_); @@ -61,9 +61,9 @@ ex val__r6, val__10, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__010(val__10) and - reward(did__BLANK__m7, did__BLANK__m8, val__10, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__10) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__10, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 100. * @@ -71,9 +71,9 @@ ex val__r6, val__100, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__0100(val__100) and - reward(did__BLANK__m7, did__BLANK__m8, val__100, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__100) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__100, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 20. * @@ -81,9 +81,9 @@ ex val__r6, val__20, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__020(val__20) and - reward(did__BLANK__m7, did__BLANK__m8, val__20, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__20) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__20, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 30. * @@ -91,9 +91,9 @@ ex val__r6, val__30, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__030(val__30) and - reward(did__BLANK__m7, did__BLANK__m8, val__30, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__30) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__30, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 40. * @@ -101,9 +101,9 @@ ex val__r6, val__40, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__040(val__40) and - reward(did__BLANK__m7, did__BLANK__m8, val__40, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__40) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__40, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 50. * @@ -111,9 +111,9 @@ ex val__r6, val__50, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__050(val__50) and - reward(did__BLANK__m7, did__BLANK__m8, val__50, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__50) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__50, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 80. * @@ -121,9 +121,9 @@ ex val__r6, val__80, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__080(val__80) and - reward(did__BLANK__m7, did__BLANK__m8, val__80, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__80) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__80, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) + 90. * @@ -131,9 +131,9 @@ ex val__r6, val__90, did__BLANK__m7, did__BLANK__m8 (did__BLANK___BLANK_(did__BLANK__m7) and did__BLANK___BLANK_(did__BLANK__m8) and val__090(val__90) and - reward(did__BLANK__m7, did__BLANK__m8, val__90, val__r6) and - did_0row(did__BLANK__m7) and did_0column(did__BLANK__m8) and - not C(val__90) and not C(val__r6)) + val___BLANK_(val__r6) and reward(did__BLANK__m7, did__BLANK__m8, + val__90, val__r6) and did_0row(did__BLANK__m7) and + did_0column(did__BLANK__m8)) ) MOVES [m -> 0] } PLAYER column { @@ -143,9 +143,9 @@ ex val__10, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__010(val__10) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__10) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__10) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__10) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 100. * @@ -153,9 +153,9 @@ ex val__100, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__0100(val__100) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__100) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__100) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__100) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 20. * @@ -163,9 +163,9 @@ ex val__20, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__020(val__20) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__20) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__20) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__20) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 30. * @@ -173,9 +173,9 @@ ex val__30, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__030(val__30) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__30) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__30) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__30) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 40. * @@ -183,9 +183,9 @@ ex val__40, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__040(val__40) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__40) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__40) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__40) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 50. * @@ -193,9 +193,9 @@ ex val__50, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__050(val__50) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__50) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__50) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__50) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 80. * @@ -203,9 +203,9 @@ ex val__80, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__080(val__80) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__80) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__80) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__80) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) + 90. * @@ -213,9 +213,9 @@ ex val__90, val__r7, did__BLANK__m9, did__BLANK__m10 (did__BLANK___BLANK_(did__BLANK__m10) and did__BLANK___BLANK_(did__BLANK__m9) and val__090(val__90) and - reward(did__BLANK__m9, did__BLANK__m10, val__r7, val__90) and - did_0column(did__BLANK__m10) and did_0row(did__BLANK__m9) and - not C(val__90) and not C(val__r7)) + val___BLANK_(val__r7) and reward(did__BLANK__m9, did__BLANK__m10, + val__r7, val__90) and did_0column(did__BLANK__m10) and + did_0row(did__BLANK__m9)) ) MOVES [m2 -> 0] } } @@ -224,10 +224,6 @@ did__BLANK__r2, did__BLANK__r3, val__0, val__10, val__100, val__20, val__30, val__40, val__50, val__80, val__90, val__column, val__row, synch_control_ | - C { - did__BLANK__c1; did__BLANK__c2; did__BLANK__c3; did__BLANK__r1; - did__BLANK__r2; did__BLANK__r3; synch_control_ - }; column__SYNC:1 {}; did_0column:1 {}; did_0row:1 {}; did_1c1 (did__BLANK__c1); did_1c2 (did__BLANK__c2); did_1c3 (did__BLANK__c3); did_1r1 (did__BLANK__r1); @@ -251,6 +247,10 @@ synch_control_ (synch_control_); val__00 (val__0); val__010 (val__10); val__0100 (val__100); val__020 (val__20); val__030 (val__30); val__040 (val__40); val__050 (val__50); val__080 (val__80); - val__090 (val__90); val__0column (val__column); val__0row (val__row) + val__090 (val__90); val__0column (val__column); val__0row (val__row); + val___BLANK_ { + val__0; val__10; val__100; val__20; val__30; val__40; val__50; val__80; + val__90; val__column; val__row + } | ] Modified: trunk/Toss/GGP/tests/breakthrough-raw.toss =================================================================== --- trunk/Toss/GGP/tests/breakthrough-raw.toss 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/tests/breakthrough-raw.toss 2011-09-29 22:18:32 UTC (rev 1579) @@ -19,7 +19,6 @@ cellholds_x24_y26__BLANK_) and cellholds__BLANK___BLANK___BLANK_(cellholds_x24_y26__BLANK_) and cellholds__BLANK___BLANK___BLANK_(cellholds_x23_y25__BLANK_)) -REL terminal() = (whitewin() and true) or (blackwin() and true) REL blackcell() = ex cellholds_x28_y28__BLANK_ (cell(cellholds_x28_y28__BLANK_) and @@ -43,6 +42,7 @@ cellholds__BLANK___BLANK___BLANK_(cellholds_x20_y22__BLANK_)) or (cellholds_2black(cellholds_x20_y22__BLANK_) and cellholds__BLANK___BLANK___BLANK_(cellholds_x20_y22__BLANK_))))) +REL terminal() = (whitewin() and true) or (blackwin() and true) REL whitecell() = ex cellholds_x27_y27__BLANK_ (cell(cellholds_x27_y27__BLANK_) and Modified: trunk/Toss/GGP/tests/breakthrough-simpl.toss =================================================================== --- trunk/Toss/GGP/tests/breakthrough-simpl.toss 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/tests/breakthrough-simpl.toss 2011-09-29 22:18:32 UTC (rev 1579) @@ -1,39 +1,30 @@ -REL cell(v0) = - ex cellholds_x19_y21__BLANK_ - (v0 = cellholds_x19_y21__BLANK_ and not C(cellholds_x19_y21__BLANK_)) -REL terminal() = blackwin() or whitewin() +REL cell(v0) = index__cellholds_1(v0) REL blackcell() = ex cellholds_x28_y28__BLANK_ - (cell(cellholds_x28_y28__BLANK_) and - cellholds_2black(cellholds_x28_y28__BLANK_) and - not C(cellholds_x28_y28__BLANK_)) + (index__cellholds_1(cellholds_x28_y28__BLANK_) and + cell(cellholds_x28_y28__BLANK_) and + cellholds_2black(cellholds_x28_y28__BLANK_)) REL blackwin() = not whitecell() or ex cellholds_x26_1__BLANK_ (cellholds_11(cellholds_x26_1__BLANK_) and - cellholds_2black(cellholds_x26_1__BLANK_) and - not C(cellholds_x26_1__BLANK_)) + cellholds_2black(cellholds_x26_1__BLANK_)) REL cellempty(v0) = - ex cellholds_x20_y22__BLANK_ - (cell(cellholds_x20_y22__BLANK_) and v0 = cellholds_x20_y22__BLANK_ and - not C(cellholds_x20_y22__BLANK_) and - not - (cellholds_2black(cellholds_x20_y22__BLANK_) or - cellholds_2white(cellholds_x20_y22__BLANK_))) + (index__cellholds_1(v0) and cell(v0) and + not (cellholds_2black(v0) or cellholds_2white(v0))) +REL terminal() = blackwin() or whitewin() REL whitecell() = ex cellholds_x27_y27__BLANK_ - (cell(cellholds_x27_y27__BLANK_) and - cellholds_2white(cellholds_x27_y27__BLANK_) and - not C(cellholds_x27_y27__BLANK_)) + (index__cellholds_1(cellholds_x27_y27__BLANK_) and + cell(cellholds_x27_y27__BLANK_) and + cellholds_2white(cellholds_x27_y27__BLANK_)) REL whitewin() = not blackcell() or ex cellholds_x25_8__BLANK_ (cellholds_18(cellholds_x25_8__BLANK_) and - cellholds_2white(cellholds_x25_8__BLANK_) and - not C(cellholds_x25_8__BLANK_)) + cellholds_2white(cellholds_x25_8__BLANK_)) PLAYERS white, black -DATA C: C__index__cellholds_1, - R0: succ__cellholds_0__cellholds_0__AND__succ__cellholds_1__cellholds_1, +DATA R0: succ__cellholds_0__cellholds_0__AND__succ__cellholds_1__cellholds_1, R: EQ___cellholds_0__cellholds_0__AND__succ__cellholds_1__cellholds_1, R1: succ__cellholds_0__cellholds_0__AND_INV__succ__cellholds_1__cellholds_1 RULE move_x_y_x_y0_noop: @@ -47,7 +38,8 @@ _opt_control_0white {cellholds_x_y0__BLANK_; cellholds_x_y__BLANK_}; cellempty (cellholds_x_y0__BLANK_); cellholds_2white (cellholds_x_y__BLANK_); - control_0white (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0white (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x_y0__BLANK_; cellholds_x_y__BLANK_} | ] -> [cellholds_x_y0__BLANK_, cellholds_x_y__BLANK_, control__BLANK_ | @@ -66,7 +58,8 @@ cellholds_x0_y1__BLANK_; cellholds_x1_y2__BLANK_; control__BLANK_}; _opt_control_0white {cellholds_x0_y1__BLANK_; cellholds_x1_y2__BLANK_}; cellholds_2white (cellholds_x0_y1__BLANK_); - control_0white (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0white (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x0_y1__BLANK_; cellholds_x1_y2__BLANK_} | ] -> [cellholds_x0_y1__BLANK_, cellholds_x1_y2__BLANK_, control__BLANK_ | @@ -85,7 +78,8 @@ cellholds_x2_y3__BLANK_; cellholds_x3_y4__BLANK_; control__BLANK_}; _opt_control_0white {cellholds_x2_y3__BLANK_; cellholds_x3_y4__BLANK_}; cellholds_2white (cellholds_x2_y3__BLANK_); - control_0white (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0white (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x2_y3__BLANK_; cellholds_x3_y4__BLANK_} | ] -> [cellholds_x2_y3__BLANK_, cellholds_x3_y4__BLANK_, control__BLANK_ | @@ -105,7 +99,8 @@ cellholds_x4_y5__BLANK_; cellholds_x4_y6__BLANK_; control__BLANK_}; cellempty (cellholds_x4_y6__BLANK_); cellholds_2black (cellholds_x4_y5__BLANK_); - control_0black (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0black (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x4_y5__BLANK_; cellholds_x4_y6__BLANK_} | ] -> [cellholds_x4_y5__BLANK_, cellholds_x4_y6__BLANK_, control__BLANK_ | @@ -124,7 +119,8 @@ _opt_control_0white { cellholds_x5_y7__BLANK_; cellholds_x6_y8__BLANK_; control__BLANK_}; cellholds_2black (cellholds_x5_y7__BLANK_); - control_0black (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0black (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x5_y7__BLANK_; cellholds_x6_y8__BLANK_} | ] -> [cellholds_x5_y7__BLANK_, cellholds_x6_y8__BLANK_, control__BLANK_ | @@ -143,7 +139,8 @@ _opt_control_0white { cellholds_x7_y9__BLANK_; cellholds_x8_y10__BLANK_; control__BLANK_}; cellholds_2black (cellholds_x7_y9__BLANK_); - control_0black (control__BLANK_); control__BLANK_ (control__BLANK_) + control_0black (control__BLANK_); control__BLANK_ (control__BLANK_); + index__cellholds_1 {cellholds_x7_y9__BLANK_; cellholds_x8_y10__BLANK_} | ] -> [cellholds_x7_y9__BLANK_, cellholds_x8_y10__BLANK_, control__BLANK_ | @@ -189,7 +186,6 @@ cellholds_8_2__BLANK_, cellholds_8_3__BLANK_, cellholds_8_4__BLANK_, cellholds_8_5__BLANK_, cellholds_8_6__BLANK_, cellholds_8_7__BLANK_, cellholds_8_8__BLANK_, val__black, val__white, control__BLANK_ | - C {val__black; val__white; control__BLANK_}; R { (cellholds_1_1__BLANK_, cellholds_1_2__BLANK_); (cellholds_1_2__BLANK_, cellholds_1_3__BLANK_); @@ -447,7 +443,32 @@ cellholds_8_2__BLANK_ }; control_0black:1 {}; control_0white (control__BLANK_); - control__BLANK_ (control__BLANK_); val__0black (val__black); - val__0white (val__white); val___BLANK_ {val__black; val__white} + control__BLANK_ (control__BLANK_); + index__cellholds_1 { + cellholds_1_1__BLANK_; cellholds_1_2__BLANK_; cellholds_1_3__BLANK_; + cellholds_1_4__BLANK_; cellholds_1_5__BLANK_; cellholds_1_6__BLANK_; + cellholds_1_7__BLANK_; cellholds_1_8__BLANK_; cellholds_2_1__BLANK_; + cellholds_2_2__BLANK_; cellholds_2_3__BLANK_; cellholds_2_4__BLANK_; + cellholds_2_5__BLANK_; cellholds_2_6__BLANK_; cellholds_2_7__BLANK_; + cellholds_2_8__BLANK_; cellholds_3_1__BLANK_; cellholds_3_2__BLANK_; + cellholds_3_3__BLANK_; cellholds_3_4__BLANK_; cellholds_3_5__BLANK_; + cellholds_3_6__BLANK_; cellholds_3_7__BLANK_; cellholds_3_8__BLANK_; + cellholds_4_1__BLANK_; cellholds_4_2__BLANK_; cellholds_4_3__BLANK_; + cellholds_4_4__BLANK_; cellholds_4_5__BLANK_; cellholds_4_6__BLANK_; + cellholds_4_7__BLANK_; cellholds_4_8__BLANK_; cellholds_5_1__BLANK_; + cellholds_5_2__BLANK_; cellholds_5_3__BLANK_; cellholds_5_4__BLANK_; + cellholds_5_5__BLANK_; cellholds_5_6__BLANK_; cellholds_5_7__BLANK_; + cellholds_5_8__BLANK_; cellholds_6_1__BLANK_; cellholds_6_2__BLANK_; + cellholds_6_3__BLANK_; cellholds_6_4__BLANK_; cellholds_6_5__BLANK_; + cellholds_6_6__BLANK_; cellholds_6_7__BLANK_; cellholds_6_8__BLANK_; + cellholds_7_1__BLANK_; cellholds_7_2__BLANK_; cellholds_7_3__BLANK_; + cellholds_7_4__BLANK_; cellholds_7_5__BLANK_; cellholds_7_6__BLANK_; + cellholds_7_7__BLANK_; cellholds_7_8__BLANK_; cellholds_8_1__BLANK_; + cellholds_8_2__BLANK_; cellholds_8_3__BLANK_; cellholds_8_4__BLANK_; + cellholds_8_5__BLANK_; cellholds_8_6__BLANK_; cellholds_8_7__BLANK_; + cellholds_8_8__BLANK_ + }; + val__0black (val__black); val__0white (val__white); + val___BLANK_ {val__black; val__white} | ] Modified: trunk/Toss/GGP/tests/connect4-raw.toss =================================================================== --- trunk/Toss/GGP/tests/connect4-raw.toss 2011-09-29 16:34:12 UTC (rev 1578) +++ trunk/Toss/GGP/tests/connect4-raw.toss 2011-09-29 22:18:32 UTC (rev 1579) @@ -1,215 +1,180 @@ -REL terminal() = - ex val__r (line(val__r) and val__0r(val__r) and val___BLANK_(val__r)) or - ex val__w (line(val__w) and val__0w(val__w) and val___BLANK_(val__w)) or - (not open() and true) -REL line(v0) = - ex val__x13 (v0 = val__x13 and row(val__x13) and val___BLANK_(val__x13)) or - ex val__x14 (v0 = val__x14 and column(val__x14) and val___BLANK_(val__x14)) or - ex val__x15 (v0 = val__x15 and diag(val__x15) and val___BLANK_(val__x15)) -REL open() = - ex cell_c10_h7__BLANK_ - (empty(cell_c10_h7__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_c10_h7__BLANK_)) -REL column(v0) = - ex val__dirt - (v0 = val__dirt and - ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, - cell_x4_y8__BLANK_ - (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and - val__0dirt(val__dirt) and val___BLANK_(val__dirt) and - cell_2dirt(cell_x4_y5__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and - cell_2dirt(cell_x4_y6__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and - cell_2dirt(cell_x4_y7__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and - cell_2dirt(cell_x4_y8__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_))) or - ex val__r - (v0 = val__r and - ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, - cell_x4_y8__BLANK_ - (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and - val__0r(val__r) and val___BLANK_(val__r) and - cell_2r(cell_x4_y5__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and - cell_2r(cell_x4_y6__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and - cell_2r(cell_x4_y7__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and - cell_2r(cell_x4_y8__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_))) or - ex val__w - (v0 = val__w and - ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, - cell_x4_y8__BLANK_ - (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and - EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and - val__0w(val__w) and val___BLANK_(val__w) and - cell_2w(cell_x4_y5__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and - cell_2w(cell_x4_y6__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and - cell_2w(cell_x4_y7__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and - cell_2w(cell_x4_y8__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_))) -REL diag(v0) = - ex val__dirt - (v0 = val__dirt and - ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, - cell_x8_y12__BLANK_ - (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - val__0dirt(val__dirt) and val___BLANK_(val__dirt) and - cell_2dirt(cell_x5_y9__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and - cell_2dirt(cell_x6_y10__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and - cell_2dirt(cell_x7_y11__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and - cell_2dirt(cell_x8_y12__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_))) or - ex val__r - (v0 = val__r and - ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, - cell_x8_y12__BLANK_ - (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - val__0r(val__r) and val___BLANK_(val__r) and - cell_2r(cell_x5_y9__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and - cell_2r(cell_x6_y10__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and - cell_2r(cell_x7_y11__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and - cell_2r(cell_x8_y12__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_))) or - ex val__w - (v0 = val__w and - ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, - cell_x8_y12__BLANK_ - (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and - succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and - succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and - val__0w(val__w) and val___BLANK_(val__w) and - cell_2w(cell_x5_y9__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and - cell_2w(cell_x6_y10__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and - cell_2w(cell_x7_y11__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and - cell_2w(cell_x8_y12__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_))) or - ex val__dirt - (v0 = val__dirt and - ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, - cell_x12_y16__BLANK_ - (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and - succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and - succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and - succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and - val__0dirt(val__dirt) and val___BLANK_(val__dirt) and - cell_2dirt(cell_x9_y13__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and - cell_2dirt(cell_x10_y14__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and - cell_2dirt(cell_x11_y15__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and - cell_2dirt(cell_x12_y16__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_))) or - ex val__r - (v0 = val__r and - ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, - cell_x12_y16__BLANK_ - (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and - succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and - succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and - succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and - val__0r(val__r) and val___BLANK_(val__r) and - cell_2r(cell_x9_y13__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and - cell_2r(cell_x10_y14__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and - cell_2r(cell_x11_y15__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and - cell_2r(cell_x12_y16__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_))) or - ex val__w - (v0 = val__w and - ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, - cell_x12_y16__BLANK_ - (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and - succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and - succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and - succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and - succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and - val__0w(val__w) and val___BLANK_(val__w) and - cell_2w(cell_x9_y13__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and - cell_2w(cell_x10_y14__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and - cell_2w(cell_x11_y15__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and - cell_2w(cell_x12_y16__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_))) +REL column__dirt() = + ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, + cell_x4_y8__BLANK_ + (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and + cell_2dirt(cell_x4_y5__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and + cell_2dirt(cell_x4_y6__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and + cell_2dirt(cell_x4_y7__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and + cell_2dirt(cell_x4_y8__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_)) +REL column__r() = + ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, + cell_x4_y8__BLANK_ + (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and + cell_2r(cell_x4_y5__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and + cell_2r(cell_x4_y6__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and + cell_2r(cell_x4_y7__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and + cell_2r(cell_x4_y8__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_)) +REL column__w() = + ex cell_x4_y5__BLANK_, cell_x4_y6__BLANK_, cell_x4_y7__BLANK_, + cell_x4_y8__BLANK_ + (succ__cell_1__cell_1(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + succ__cell_1__cell_1(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + succ__cell_1__cell_1(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y5__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y7__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y6__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y7__BLANK_, cell_x4_y8__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y5__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y6__BLANK_) and + EQ___cell_0__cell_0(cell_x4_y8__BLANK_, cell_x4_y7__BLANK_) and + cell_2w(cell_x4_y5__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y5__BLANK_) and + cell_2w(cell_x4_y6__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y6__BLANK_) and + cell_2w(cell_x4_y7__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y7__BLANK_) and + cell_2w(cell_x4_y8__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x4_y8__BLANK_)) +REL diag__dirt() = + ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, + cell_x8_y12__BLANK_ + (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + cell_2dirt(cell_x5_y9__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and + cell_2dirt(cell_x6_y10__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and + cell_2dirt(cell_x7_y11__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and + cell_2dirt(cell_x8_y12__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_)) or + ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, + cell_x12_y16__BLANK_ + (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and + succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and + succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and + succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and + cell_2dirt(cell_x9_y13__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and + cell_2dirt(cell_x10_y14__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and + cell_2dirt(cell_x11_y15__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and + cell_2dirt(cell_x12_y16__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_)) +REL diag__r() = + ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, + cell_x8_y12__BLANK_ + (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + cell_2r(cell_x5_y9__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and + cell_2r(cell_x6_y10__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and + cell_2r(cell_x7_y11__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and + cell_2r(cell_x8_y12__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_)) or + ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, + cell_x12_y16__BLANK_ + (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and + succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and + succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and + succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and + cell_2r(cell_x9_y13__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and + cell_2r(cell_x10_y14__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and + cell_2r(cell_x11_y15__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and + cell_2r(cell_x12_y16__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_)) +REL diag__w() = + ex cell_x5_y9__BLANK_, cell_x6_y10__BLANK_, cell_x7_y11__BLANK_, + cell_x8_y12__BLANK_ + (succ__cell_0__cell_0(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_1__cell_1(cell_x5_y9__BLANK_, cell_x6_y10__BLANK_) and + succ__cell_0__cell_0(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_1__cell_1(cell_x6_y10__BLANK_, cell_x7_y11__BLANK_) and + succ__cell_0__cell_0(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + succ__cell_1__cell_1(cell_x7_y11__BLANK_, cell_x8_y12__BLANK_) and + cell_2w(cell_x5_y9__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x5_y9__BLANK_) and + cell_2w(cell_x6_y10__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x6_y10__BLANK_) and + cell_2w(cell_x7_y11__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x7_y11__BLANK_) and + cell_2w(cell_x8_y12__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x8_y12__BLANK_)) or + ex cell_x9_y13__BLANK_, cell_x10_y14__BLANK_, cell_x11_y15__BLANK_, + cell_x12_y16__BLANK_ + (succ__cell_0__cell_0(cell_x9_y13__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_1__cell_1(cell_x10_y14__BLANK_, cell_x9_y13__BLANK_) and + succ__cell_0__cell_0(cell_x10_y14__BLANK_, cell_x11_y15__BLANK_) and + succ__cell_1__cell_1(cell_x11_y15__BLANK_, cell_x10_y14__BLANK_) and + succ__cell_0__cell_0(cell_x11_y15__BLANK_, cell_x12_y16__BLANK_) and + succ__cell_1__cell_1(cell_x12_y16__BLANK_, cell_x11_y15__BLANK_) and + cell_2w(cell_x9_y13__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x9_y13__BLANK_) and + cell_2w(cell_x10_y14__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x10_y14__BLANK_) and + cell_2w(cell_x11_y15__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x11_y15__BLANK_) and + cell_2w(cell_x12_y16__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x12_y16__BLANK_)) REL empty(v0) = ex cell_c_h__BLANK_ (v0 = cell_c_h__BLANK_ and @@ -232,63 +197,69 @@ true and cell_2r(cell_c2_h2__BLANK_) and cell__BLANK___BLANK___BLANK_(cell_c2_h2__BLANK_)) -REL row(v0) = - ex val__r - (v0 = val__r and - ex cell_x0_y4__BLANK_, cell_x1_y4__BLANK_, cell_x2_y4__BLANK_, - cell_x3_y4__BLANK_ - (succ__cell_0__cell_0(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and - succ__cell_0__cell_0(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and - succ__cell_0__cell_0(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x2_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x2_y4__BLANK_) and - val__0r(val__r) and val___BLANK_(val__r) and - cell_2r(cell_x0_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x0_y4__BLANK_) and - cell_2r(cell_x1_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x1_y4__BLANK_) and - cell_2r(cell_x2_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x2_y4__BLANK_) and - cell_2r(cell_x3_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x3_y4__BLANK_))) or - ex val__w - (v0 = val__w and - ex cell_x0_y4__BLANK_, cell_x1_y4__BLANK_, cell_x2_y4__BLANK_, - cell_x3_y4__BLANK_ - (succ__cell_0__cell_0(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and - succ__cell_0__cell_0(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and - succ__cell_0__cell_0(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x2_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x0_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x1_y4__BLANK_) and - EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x2_y4__BLANK_) and - val__0w(val__w) and val___BLANK_(val__w) and - cell_2w(cell_x0_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x0_y4__BLANK_) and - cell_2w(cell_x1_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x1_y4__BLANK_) and - cell_2w(cell_x2_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x2_y4__BLANK_) and - cell_2w(cell_x3_y4__BLANK_) and - cell__BLANK___BLANK___BLANK_(cell_x3_y4__BLANK_))) +REL line__dirt() = (column__dirt() and true) or (diag__dirt() and true) +REL line__r() = + (row__r() and true) or (column__r() and true) or (diag__r() and true) +REL line__w() = + (row__w() and true) or (column__w() and true) or (diag__w() and true) +REL open() = + ex cell_c10_h7__BLANK_ + (empty(cell_c10_h7__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_c10_h7__BLANK_)) +REL row__r() = + ex cell_x0_y4__BLANK_, cell_x1_y4__BLANK_, cell_x2_y4__BLANK_, + cell_x3_y4__BLANK_ + (succ__cell_0__cell_0(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and + succ__cell_0__cell_0(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and + succ__cell_0__cell_0(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x2_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x0_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x0_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x1_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x0_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x1_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x3_y4__BLANK_, cell_x2_y4__BLANK_) and + cell_2r(cell_x0_y4__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x0_y4__BLANK_) and + cell_2r(cell_x1_y4__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x1_y4__BLANK_) and + cell_2r(cell_x2_y4__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x2_y4__BLANK_) and + cell_2r(cell_x3_y4__BLANK_) and + cell__BLANK___BLANK___BLANK_(cell_x3_y4__BLANK_)) +REL row__w() = + ex cell_x0_y4__BLANK_, cell_x1_y4__BLANK_, cell_x2_y4__BLANK_, + cell_x3_y4__BLANK_ + (succ__cell_0__cell_0(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and + succ__cell_0__cell_0(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and + succ__cell_0__cell_0(cell_x2_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x1_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x2_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x0_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x0_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x2_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x1_y4__BLANK_, cell_x3_y4__BLANK_) and + EQ___cell_1__cell_1(cell_x2_y4__BLANK_, cell_x... [truncated message content] |