[Toss-devel-svn] SF.net SVN: toss:[1555] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
|
From: <luk...@us...> - 2011-09-02 13:37:22
|
Revision: 1555
http://toss.svn.sourceforge.net/toss/?rev=1555&view=rev
Author: lukstafi
Date: 2011-09-02 13:37:14 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
FormulaMap: adapting to let-in expressions. GDL translation fixing: bugs (generating stable paths; finding paths for defined relation arguments). GameSimpl minor bug. Bugs in move translation for concurrent games. Fixing TranslateGame regression tests.
Modified Paths:
--------------
trunk/Toss/Formula/FormulaMap.ml
trunk/Toss/Formula/FormulaMap.mli
trunk/Toss/GGP/GDL.ml
trunk/Toss/GGP/GDL.mli
trunk/Toss/GGP/GameSimpl.ml
trunk/Toss/GGP/TranslateFormula.ml
trunk/Toss/GGP/TranslateGame.ml
trunk/Toss/GGP/TranslateGameTest.ml
trunk/Toss/GGP/tests/2player_normal_form_2010-raw.toss
trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss
trunk/Toss/GGP/tests/connect5-raw.toss
trunk/Toss/GGP/tests/connect5-simpl.toss
trunk/Toss/GGP/tests/tictactoe-raw.toss
trunk/Toss/GGP/tests/tictactoe-simpl.toss
Modified: trunk/Toss/Formula/FormulaMap.ml
===================================================================
--- trunk/Toss/Formula/FormulaMap.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/Formula/FormulaMap.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -16,6 +16,8 @@
| All (vs, phi) -> All (vs, map_to_literals f g phi)
| Lfp (v, vs, phi) -> Lfp (v, vs, map_to_literals f g phi)
| Gfp (v, vs, phi) -> Gfp (v, vs, map_to_literals f g phi)
+ | Let (rel, args, body, scope) ->
+ Let (rel, args, map_to_literals f g body, map_to_literals f g scope)
and map_to_literals_expr f g = function
| RVar _ | Const _ | Fun _ as x -> g x
@@ -26,6 +28,8 @@
| Char (phi) -> Char (map_to_literals f g phi)
| Sum (vs, phi, r) ->
Sum (vs, map_to_literals f g phi, map_to_literals_expr f g r)
+ | RLet (func, body, scope) ->
+ RLet (func, map_to_literals_expr f g body, map_to_literals_expr f g scope)
(* Map [f] to all atoms in the given formula. *)
let map_to_atoms_full f g phi =
@@ -63,6 +67,7 @@
map_All : var list -> formula -> formula;
map_Lfp : [ mso_var | so_var ] -> fo_var array -> formula -> formula;
map_Gfp : [ mso_var | so_var ] -> fo_var array -> formula -> formula;
+ map_Let : string -> string list -> formula -> formula -> formula;
map_RVar : string -> real_expr;
map_Const : float -> real_expr;
@@ -70,7 +75,8 @@
map_Plus : real_expr -> real_expr -> real_expr;
map_Fun : string -> fo_var -> real_expr;
map_Char : formula -> real_expr;
- map_Sum : fo_var list -> formula -> real_expr -> real_expr
+ map_Sum : fo_var list -> formula -> real_expr -> real_expr;
+ map_RLet : string -> real_expr -> real_expr -> real_expr
}
let identity_map = {
@@ -86,6 +92,7 @@
map_All = (fun vs phi -> All (vs, phi));
map_Lfp = (fun v vs phi -> Lfp (v, vs, phi));
map_Gfp = (fun v vs phi -> Gfp (v, vs, phi));
+ map_Let = (fun rel args body scope -> Let (rel, args, body, scope));
map_RVar = (fun v -> RVar v);
map_Const = (fun c -> Const c);
@@ -93,7 +100,8 @@
map_Plus = (fun expr1 expr2 -> Plus (expr1, expr2));
map_Fun = (fun f v -> Fun (f, v));
map_Char = (fun phi -> Char phi);
- map_Sum = (fun vs guard expr -> Sum (vs, guard, expr))
+ map_Sum = (fun vs guard expr -> Sum (vs, guard, expr));
+ map_RLet = (fun f body scope -> RLet (f, body, scope));
}
let rec map_formula gmap = function
@@ -110,6 +118,8 @@
| All (vs, phi) -> gmap.map_All vs (map_formula gmap phi)
| Lfp (v, vs, phi) -> gmap.map_Lfp v vs (map_formula gmap phi)
| Gfp (v, vs, phi) -> gmap.map_Gfp v vs (map_formula gmap phi)
+ | Let (rel, args, body, scope) ->
+ gmap.map_Let rel args (map_formula gmap body) (map_formula gmap scope)
and map_real_expr gmap = function
| RVar v -> gmap.map_RVar v
@@ -122,6 +132,8 @@
| Char phi -> gmap.map_Char (map_formula gmap phi)
| Sum (vs, guard, expr) ->
gmap.map_Sum vs (map_formula gmap guard) (map_real_expr gmap expr)
+ | RLet (f, body, scope) ->
+ gmap.map_RLet f (map_real_expr gmap body) (map_real_expr gmap scope)
(* Generalized fold over formula and real expression types. *)
@@ -138,6 +150,7 @@
fold_All : var list -> 'a -> 'a;
fold_Lfp : [ mso_var | so_var ] -> fo_var array -> 'a -> 'a;
fold_Gfp : [ mso_var | so_var ] -> fo_var array -> 'a -> 'a;
+ fold_Let : string -> string list -> 'a -> 'a -> 'a;
fold_RVar : string -> 'a;
fold_Const : float -> 'a;
@@ -145,7 +158,8 @@
fold_Plus : 'a -> 'a -> 'a;
fold_Fun : string -> fo_var -> 'a;
fold_Char : 'a -> 'a;
- fold_Sum : fo_var list -> 'a -> 'a -> 'a
+ fold_Sum : fo_var list -> 'a -> 'a -> 'a;
+ fold_RLet : string -> 'a -> 'a -> 'a
}
let make_fold union empty = {
@@ -161,6 +175,7 @@
fold_All = (fun _ phi -> phi);
fold_Lfp = (fun _ _ phi -> phi);
fold_Gfp = (fun _ _ phi -> phi);
+ fold_Let = (fun _ _ -> union);
fold_RVar = (fun _ -> empty);
fold_Const = (fun _ -> empty);
@@ -168,7 +183,8 @@
fold_Plus = union;
fold_Fun = (fun _ _ -> empty);
fold_Char = (fun phi -> phi);
- fold_Sum = (fun _ guard expr -> union guard expr)
+ fold_Sum = (fun _ guard expr -> union guard expr);
+ fold_RLet = (fun _ -> union)
}
open Aux.BasicOperators
@@ -197,6 +213,8 @@
| All (vs, phi) -> gfold.fold_All vs (fold_formula gfold phi)
| Lfp (v, vs, phi) -> gfold.fold_Lfp v vs (fold_formula gfold phi)
| Gfp (v, vs, phi) -> gfold.fold_Gfp v vs (fold_formula gfold phi)
+ | Let (rel, args, body, scope) ->
+ gfold.fold_Let rel args (fold_formula gfold body) (fold_formula gfold scope)
and fold_real_expr gfold = function
| RVar v -> gfold.fold_RVar v
@@ -209,6 +227,8 @@
| Char phi -> gfold.fold_Char (fold_formula gfold phi)
| Sum (vs, guard, expr) ->
gfold.fold_Sum vs (fold_formula gfold guard) (fold_real_expr gfold expr)
+ | RLet (f, body, scope) ->
+ gfold.fold_RLet f (fold_real_expr gfold body) (fold_real_expr gfold scope)
(* Map [f] to top-level formulas in the real expression ([Char]s and
[Sum] guards). *)
@@ -221,6 +241,8 @@
| Char (phi) -> Char (f phi)
| Sum (vs, phi, r) ->
Sum (vs, f phi, map_to_formulas_expr f r)
+ | RLet (func, body, scope) ->
+ RLet (func, map_to_formulas_expr f body, map_to_formulas_expr f scope)
let rec fold_over_formulas_expr f r acc =
match r with
@@ -231,6 +253,8 @@
| Char (phi) -> f phi acc
| Sum (vs, phi, r) ->
fold_over_formulas_expr f r (f phi acc)
+ | RLet (func, r1, r2) ->
+ fold_over_formulas_expr f r1 (fold_over_formulas_expr f r2 acc)
let rec fold_over_literals f phi acc =
match phi with
@@ -242,6 +266,8 @@
| And flist -> List.fold_right (fold_over_literals f) flist acc
| Ex (_, phi) | All (_, phi) -> fold_over_literals f phi acc
| Lfp (_, _, phi) | Gfp (_, _, phi) -> fold_over_literals f phi acc
+ | Let (_, _, body, scope) ->
+ fold_over_literals f body (fold_over_literals f scope acc)
and fold_over_literals_expr f =
fold_over_formulas_expr (fold_over_literals f)
@@ -252,6 +278,25 @@
(* Map [f] to all variables occurring in the formula. Preserves order
of subformulas. *)
+let map_to_all_vars (f : var -> var) phi =
+ let foaf va = Array.map (fun x -> to_fo (f (x :> var))) va in
+ let safs va = List.map (fun x -> var_str (f (var_of_string x))) va in
+ map_formula
+ {identity_map with
+ map_Rel = (fun rn vl -> Rel (rn, foaf vl));
+ map_Eq = (fun x y -> Eq (to_fo (f (x :> var)), to_fo (f (y :> var))));
+ map_In = (fun x y -> In (to_fo (f (x :> var)), to_mso (f (y :> var))));
+ map_SO = (fun v vs -> SO (to_so (f (v :> var)), foaf vs));
+ map_Ex = (fun vs phi -> Ex (List.map f vs, phi));
+ map_All = (fun vs phi -> All (List.map f vs, phi));
+ map_Lfp = (fun v vs phi ->
+ Lfp (to_mso_or_so (f (v :> var)), foaf vs, phi));
+ map_Gfp = (fun v vs phi ->
+ Gfp (to_mso_or_so (f (v :> var)), foaf vs, phi));
+ map_Let = (fun rel args body scope ->
+ Let (rel, safs args, body, scope))
+ } phi
+(* alternative direct definition
let rec map_to_all_vars (f : var -> var) phi =
let foaf va = Array.map (fun x -> to_fo (f (x :> var))) va in
match phi with
@@ -269,5 +314,7 @@
Lfp (to_mso_or_so (f (v :> var)), foaf vs, map_to_all_vars f phi)
| Gfp (v, vs, phi) ->
Gfp (to_mso_or_so (f (v :> var)), foaf vs, map_to_all_vars f phi)
+ | Let (rel, args, body, scope) ->
+ Let (rel, args, map_to_all_vars f body, map_to_all_vars f scope)
+*)
-
Modified: trunk/Toss/Formula/FormulaMap.mli
===================================================================
--- trunk/Toss/Formula/FormulaMap.mli 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/Formula/FormulaMap.mli 2011-09-02 13:37:14 UTC (rev 1555)
@@ -35,6 +35,7 @@
map_All : var list -> formula -> formula;
map_Lfp : [ mso_var | so_var ] -> fo_var array -> formula -> formula;
map_Gfp : [ mso_var | so_var ] -> fo_var array -> formula -> formula;
+ map_Let : string -> string list -> formula -> formula -> formula;
map_RVar : string -> real_expr;
map_Const : float -> real_expr;
@@ -42,7 +43,8 @@
map_Plus : real_expr -> real_expr -> real_expr;
map_Fun : string -> fo_var -> real_expr;
map_Char : formula -> real_expr;
- map_Sum : fo_var list -> formula -> real_expr -> real_expr
+ map_Sum : fo_var list -> formula -> real_expr -> real_expr;
+ map_RLet : string -> real_expr -> real_expr -> real_expr
}
(** Identity map to be refined using the [with] syntax. *)
@@ -66,6 +68,7 @@
fold_All : var list -> 'a -> 'a;
fold_Lfp : [ mso_var | so_var ] -> fo_var array -> 'a -> 'a;
fold_Gfp : [ mso_var | so_var ] -> fo_var array -> 'a -> 'a;
+ fold_Let : string -> string list -> 'a -> 'a -> 'a;
fold_RVar : string -> 'a;
fold_Const : float -> 'a;
@@ -73,7 +76,8 @@
fold_Plus : 'a -> 'a -> 'a;
fold_Fun : string -> fo_var -> 'a;
fold_Char : 'a -> 'a;
- fold_Sum : fo_var list -> 'a -> 'a -> 'a
+ fold_Sum : fo_var list -> 'a -> 'a -> 'a;
+ fold_RLet : string -> 'a -> 'a -> 'a
}
val make_fold : ('a -> 'a -> 'a) -> 'a -> 'a formula_and_expr_fold
Modified: trunk/Toss/GGP/GDL.ml
===================================================================
--- trunk/Toss/GGP/GDL.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/GDL.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -1745,17 +1745,17 @@
(* Split paths in the set until, if possible, none of subterms at the
paths meets the predicate. Also remove paths not present in terms. *)
-let refine_paths_avoiding paths avoid terms =
+let refine_paths_avoiding paths avoid_later avoid_now terms =
let rec aux terms = function
| Empty -> Empty
| Here ->
if terms=[] then Empty
- else if not (List.exists avoid terms)
+ else if not (List.exists avoid_later terms)
then Here
else
let subterms =
Aux.map_some (function
- | Func (rel,args) as t when not (avoid t) -> Some (rel,args)
+ | Func (rel,args) as t when not (avoid_now t) -> Some (rel,args)
| _ -> None) terms in
if subterms = [] then Empty
else
@@ -1764,7 +1764,7 @@
let arity =
Array.length (List.hd args_set) in
(* {{{ log entry *)
- if !debug_level > 3 then (
+ if !debug_level > 1 then (
Printf.printf "refine_paths_avoiding: aux rel=%s, no terms=%d\n%!"
rel (List.length args_set)
);
@@ -1772,12 +1772,12 @@
rel, aux2 (Array.make arity Here) args_set) subterms)
| (Here_and_below subpaths | Below subpaths) as path ->
if terms=[] then Empty
- else if not (List.exists avoid terms)
+ else if not (List.exists avoid_later terms)
then path
else
let subterms =
Aux.map_some (function
- | Func (rel,args) as t when not (avoid t) -> Some (rel,args)
+ | Func (rel,args) as t when not (avoid_now t) -> Some (rel,args)
| _ -> None) terms in
if subterms = [] then Empty
else
Modified: trunk/Toss/GGP/GDL.mli
===================================================================
--- trunk/Toss/GGP/GDL.mli 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/GDL.mli 2011-09-02 13:37:14 UTC (rev 1555)
@@ -264,8 +264,10 @@
paths that together cover all leafs the original path covered. *)
val refine_leaf_paths : path_set -> term list -> path_set
-(** Split paths in the set until, if possible, none of subterms at the
- paths meets the predicate. Also remove paths not present in
- terms. *)
+(** [refine_paths_avoiding paths avoid_later avoid_now terms] splits
+ paths in the set until, if possible, none of subterms at the paths
+ meets the predicate [avoid_later]; it does not descend subterms
+ for which [avoid_now] holds. Also removes paths not present
+ in terms. *)
val refine_paths_avoiding :
- path_set -> (term -> bool) -> term list -> path_set
+ path_set -> (term -> bool) -> (term -> bool) -> term list -> path_set
Modified: trunk/Toss/GGP/GameSimpl.ml
===================================================================
--- trunk/Toss/GGP/GameSimpl.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/GameSimpl.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -313,7 +313,7 @@
| None -> rel
| Some spec -> DiscreteRule.orig_rel_of rel in
(* {{{ log entry *)
- if !debug_level > 3 then (
+ if !debug_level > 4 then (
Printf.printf "removable: %s...%!" rel
);
(* }}} *)
@@ -326,7 +326,7 @@
List.mem_assoc (fst (List.assoc rel equivalent))
game.Arena.defined_rels) in
(* {{{ log entry *)
- if !debug_level > 3 then (
+ if !debug_level > 4 then (
Printf.printf "%B\n%!" res;
);
(* }}} *)
@@ -926,6 +926,7 @@
) &&
not (Aux.Strings.mem rel fluents) &&
(not (Aux.Strings.mem rel used_rels) ||
+ not (List.mem_assoc rel defined_rels) &&
Structure.rel_size !struc rel = 0) in
(* {{{ log entry *)
if !debug_level > 2 && res then (
Modified: trunk/Toss/GGP/TranslateFormula.ml
===================================================================
--- trunk/Toss/GGP/TranslateFormula.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/TranslateFormula.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -310,16 +310,32 @@
| _ -> None)
(atoms_of_body body) in
r_atoms, state_terms body
- (* we take all state terms to have more compact partition *)
- (*Aux.map_some
- (function Pos (True s) -> Some s | _ -> None) body*))
+ (* we take all state terms to have more compact partition *)
+ (*Aux.map_some
+ (function Pos (True s) -> Some s | _ -> None) body*))
clauses in
let check_path args p s_p =
let inds = Aux.array_argfind_all (fun r -> r=s_p) args in
List.map (fun i->p,i) inds in
let sterm_path_sets args s =
- let ptups = Aux.product
- (map_paths (check_path args) data.m_paths s) in
+ (* {{{ log entry *)
+ if !debug_level > 4 then (
+ Printf.printf "sterm_path_sets: rel=%s args={%s} sterm=%s\n%!"
+ drel
+ (String.concat ", " (Array.to_list (Array.map term_str args)))
+ (term_str s)
+ );
+ (* }}} *)
+ let psets = map_paths (check_path args) data.m_paths s in
+ (* {{{ log entry *)
+ if !debug_level > 4 then (
+ Printf.printf "sterm_path_sets: psets=%s\n%!"
+ (String.concat "; "(List.map (fun pset->"["^
+ String.concat ", " (List.map (fun (p,i)->
+ path_str p^":"^string_of_int i) pset)^"]") psets))
+ );
+ (* }}} *)
+ let ptups = Aux.product (Aux.list_remove [] psets) in
(* distinct [p] in a tuple is already ensured *)
List.filter (fun tup ->
not (Aux.not_unique (List.map snd tup))) ptups in
Modified: trunk/Toss/GGP/TranslateGame.ml
===================================================================
--- trunk/Toss/GGP/TranslateGame.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/TranslateGame.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -424,7 +424,8 @@
);
(* }}} *)
let m_paths =
- refine_paths_avoiding eps_path_set contains_blank element_reps in
+ refine_paths_avoiding eps_path_set
+ contains_blank (fun t->t=blank) element_reps in
(* {{{ log entry *)
if !debug_level > 2 then (
Printf.printf
@@ -1336,7 +1337,10 @@
(* a defined relation for checking game termination *)
let nonterminal = Formula.Not (Formula.Rel ("terminal", [||])) in
let precond =
- Formula.And (nonterminal :: synch_precond @ [case_precond]) in
+ if legal_tuple = [] then (* Environment rule *)
+ Formula.And (synch_precond @ [case_precond])
+ else
+ Formula.And (nonterminal :: synch_precond @ [case_precond]) in
(* {{{ log entry *)
if !debug_level > 2 then (
Printf.printf "build_toss_rule: synch precond = %s; main precond = %s\n%!"
@@ -1591,7 +1595,7 @@
payoffs
-let transl_arg_type_no_side defined_rels init_state program
+let transl_argpath_no_side defined_rels init_state program
ground_at_m_paths =
if ground_at_m_paths = [] then []
else
@@ -1774,6 +1778,18 @@
let args = List.assoc rel (List.map fst clauses) in
rel, Array.length args)
defined_rels in
+ let argpath_no_side =
+ transl_argpath_no_side defined_rel_arities init_state program
+ (ground_at m_paths) in
+ (* {{{ log entry *)
+ if !debug_level > 2 then (
+ Printf.printf "argpath_no_side:\n%!";
+ List.iter (fun (rel, argps) ->
+ Printf.printf "default paths for %s: %s\n%!" rel
+ (String.concat "; "(List.map (function None -> "None"
+ | Some p -> path_str p) (Array.to_list argps)))) argpath_no_side;
+ );
+ (* }}} *)
let transl_data = {
TranslateFormula.f_paths = f_paths;
m_paths = m_paths;
@@ -1782,9 +1798,7 @@
defined_rels = defined_rels;
defrel_argpaths = []; (* built in TranslateFormula *)
term_arities = term_arities;
- rel_default_path =
- transl_arg_type_no_side defined_rel_arities init_state program
- (ground_at m_paths);
+ rel_default_path = argpath_no_side;
} in
(* Building defined rels needs to happen between creating rule
candidates and rule translation, so that transformed clauses don't
@@ -1793,6 +1807,13 @@
(* Transform the rule conditions as well so they can be translated. *)
let rule_cands, clauses =
encode_rule_cands_in_clauses rule_cands clauses in
+ (* {{{ log entry *)
+ if !debug_level > 2 then (
+ Printf.printf
+ "traslate_game: all clauses prior to building defined rels\n%s\n\n%!"
+ (String.concat "\n"(List.map clause_str clauses));
+ );
+ (* }}} *)
let clauses, defined_rels =
TranslateFormula.build_defrels transl_data clauses in
let rule_cands, clauses =
@@ -2031,9 +2052,13 @@
(fun player move ->
let tossrules =
Aux.strmap_filter (fun _ rdata ->
- try ignore (unify [] [move]
- [rdata.legal_tuple.(player)]); true
- with Not_found -> false
+ rdata.legal_tuple <> [||] && (* not Environment rule *)
+ let legal_term =
+ if Array.length rdata.legal_tuple > 1
+ then rdata.legal_tuple.(player)
+ 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
@@ -2046,30 +2071,30 @@
" for player " ^ string_of_int player)
| [rname, emb, lhs_struc] ->
(* {{{ log entry *)
- if !debug_level > 0 then (
- Printf.printf "GDL.translate_incoming_move: rname=%s; emb=%s\n...%!"
- rname
- (String.concat ", " (List.map (fun (v,e) ->
- Structure.elem_str lhs_struc v ^ ": " ^
- Structure.elem_str struc e) emb))
- );
- (* }}} *)
- player, (rname, emb)
+ if !debug_level > 0 then (
+ Printf.printf "GDL.translate_incoming_move: rname=%s; emb=%s\n...%!"
+ rname
+ (String.concat ", " (List.map (fun (v,e) ->
+ Structure.elem_str lhs_struc v ^ ": " ^
+ Structure.elem_str struc e) emb))
+ );
+ (* }}} *)
+ player, (rname, emb)
| _ ->
(* {{{ log entry *)
- if !debug_level > 0 then (
- Printf.printf "GDL.translate_incoming_move: ambiguity\n%!";
- List.iter (fun (rname, emb, lhs_struc) ->
- Printf.printf "rname=%s; emb=%s\n%!"
- rname
- (String.concat ", " (List.map (fun (v,e) ->
- Structure.elem_str lhs_struc v ^ ": " ^
- Structure.elem_str struc e) emb))) candidates
- );
- (* }}} *)
- failwith
- ("GDL.translate_incoming_move: ambiguity among rules "^
- String.concat ", " (List.map Aux.fst3 candidates))
+ if !debug_level > 0 then (
+ Printf.printf "GDL.translate_incoming_move: ambiguity\n%!";
+ List.iter (fun (rname, emb, lhs_struc) ->
+ Printf.printf "rname=%s; emb=%s\n%!"
+ rname
+ (String.concat ", " (List.map (fun (v,e) ->
+ Structure.elem_str lhs_struc v ^ ": " ^
+ Structure.elem_str struc e) emb))) candidates
+ );
+ (* }}} *)
+ failwith
+ ("GDL.translate_incoming_move: ambiguity among rules "^
+ String.concat ", " (List.map Aux.fst3 candidates))
)
actions in
Array.to_list candidates
@@ -2116,12 +2141,26 @@
);
(* }}} *)
(* 10d *)
- let emb = List.map (fun (lhs_e, struc_e) ->
+ (* only the synchronization element should raise [Not_found] *)
+ let emb = Aux.map_try (fun (lhs_e, struc_e) ->
let v = DiscreteRule.elemvar_of_elem
rule.ContinuousRule.compiled.DiscreteRule.lhs_elem_inv_names
lhs_e in
+ (* {{{ log entry *)
+ if !debug_level > 3 then (
+ Printf.printf
+ "translate_outgoing_move: emb lhs_e=%d, v=%s, struc_e=%d\n%!"
+ lhs_e v struc_e;
+ Printf.printf
+ "translate_outgoing_move: emb lhs term=%s\n%!"
+ (term_str (Aux.StrMap.find v tossrule.rulevar_terms));
+ Printf.printf
+ "translate_outgoing_move: emb struc term=%s\n%!"
+ (term_str (Aux.IntMap.find struc_e gdl.elem_term_map));
+ );
+ (* }}} *)
Aux.StrMap.find v tossrule.rulevar_terms,
- Aux.IntMap.find struc_e gdl.elem_term_map) emb in
+ Aux.IntMap.find struc_e gdl.elem_term_map) emb in
(* {{{ log entry *)
if !debug_level > 2 then (
Printf.printf "outgoing-emb={%s}\n%!"
Modified: trunk/Toss/GGP/TranslateGameTest.ml
===================================================================
--- trunk/Toss/GGP/TranslateGameTest.ml 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/TranslateGameTest.ml 2011-09-02 13:37:14 UTC (rev 1555)
@@ -93,17 +93,13 @@
(norm_move (rname, emb)) (norm_move move)
(* COPIED FROM ReqHandler. *)
-let select_moving a = (* temporary func - accept just one player w/ moves *)
- let locs = Aux.array_find_all (fun l -> l.Arena.moves <> []) a in
- if List.length locs <> 1 then failwith "too many moves" else
- if locs = [] then a.(0) else List.hd locs
exception Found of int
(* The player applying the rewrite seems not to be used. *)
-(* FIXME: adapt to simultaneous moves. *)
+(* Problem: are players indexed from 0 or from 1 in graph? *)
let apply_rewrite state (player, (r_name, mtch)) =
if r_name <> "" then (
let {Arena.rules=rules; graph=graph} = fst state in
- let mv_loc = select_moving graph.((snd state).Arena.cur_loc) in
+ let mv_loc = graph.((snd state).Arena.cur_loc).(player) in
let moves =
Move.gen_moves Move.cGRID_SIZE rules
(snd state).Arena.struc mv_loc in
@@ -184,11 +180,13 @@
(fun () ->
simult_test_case ~game_name:"2player_normal_form_2010" ~player:"row"
~own_plnum:0 ~opp_plnum:1
- ~own_rule_name:"row"
- ~own_emb:["_BLANK_", "_BLANK_"]
+ ~own_rule_name:"r1"
+ ~own_emb:["did__BLANK___BLANK_", "did__BLANK___BLANK_";
+ "reward_r1_c1_90_90", "reward_r1_c1_90_90"]
~own_move:"r1"
- ~opp_rule_name:"column"
- ~opp_emb:["_BLANK_", "_BLANK_"]
+ ~opp_rule_name:"c1"
+ ~opp_emb:["did__BLANK___BLANK_", "did__BLANK___BLANK_";
+ "reward_r1_c1_90_90", "reward_r1_c1_90_90"]
~opp_move:"c1"
);
@@ -225,7 +223,7 @@
(* adjacent_cell is a defined relation only because it has
large arity: see {!TranslateGame.defined_arity_above}. *)
assert_equal ~msg:"defined_rels" ~printer:(fun x->x)
- "adjacent_cell, col, conn5, diag1, diag2, exists_empty_cell, exists_line_of_five, goal, legal, next, row, terminal"
+ "adjacent, adjacent_cell, col, conn5, diag1, diag2, exists_empty_cell, exists_line_of_five, goal, legal, next, row, terminal"
(String.concat ", " (List.sort String.compare defined_rels));
assert_equal ~msg:"fluents" ~printer:(fun x->x)
@@ -233,7 +231,7 @@
(String.concat ", " fluents);
assert_equal ~msg:"stable_rels" ~printer:(fun x->x)
- "EQ___cell_0__cell_0, EQ___cell_0__cell_1, EQ___cell_1__cell_0, EQ___cell_1__cell_1, adjacent__cell_0__cell_0, adjacent__cell_0__cell_1, adjacent__cell_1__cell_0, adjacent__cell_1__cell_1, cell_0a, cell_0b, cell_0c, cell_0d, cell_0e, cell_0f, cell_0g, cell_0h, cell_1a, cell_1b, cell_1c, cell_1d, cell_1e, cell_1f, cell_1g, cell_1h, cell__BLANK___BLANK___BLANK_, control__BLANK_, coordinate__cell_0, coordinate__cell_1, nextcol__cell_0__cell_0, nextcol__cell_0__cell_1, nextcol__cell_1__cell_0, nextcol__cell_1__cell_1"
+ "EQ___cell_0__cell_0, EQ___cell_0__cell_1, EQ___cell_1__cell_0, EQ___cell_1__cell_1, cell_0a, cell_0b, cell_0c, cell_0d, cell_0e, cell_0f, cell_0g, cell_0h, cell_1a, cell_1b, cell_1c, cell_1d, cell_1e, cell_1f, cell_1g, cell_1h, cell__BLANK___BLANK___BLANK_, control__BLANK_, coordinate__cell_0, coordinate__cell_1, nextcol__cell_0__cell_0, nextcol__cell_0__cell_1, nextcol__cell_1__cell_0, nextcol__cell_1__cell_1"
(String.concat ", " stable_rels);
assert_equal ~msg:"structure elements" ~printer:(fun x->x)
@@ -246,15 +244,15 @@
(fun () ->
game_test_case ~game_name:"connect5" ~player:"x"
~own_plnum:0 ~opponent_plnum:1
- ~loc0_rule_name:"mark_x161_y162_0"
+ ~loc0_rule_name:"mark_x5_y5_noop"
~loc0_emb:[
- "cell_x161_y162__blank_", "cell_e_f_MV1";
- "control__blank_", "control_MV1"]
+ "cell_x5_y5__BLANK_", "cell_e_f__BLANK_";
+ "control__BLANK_", "control__BLANK_"]
~loc0_move:"(mark e f)" ~loc0_noop:"noop"
- ~loc1:1 ~loc1_rule_name:"mark_x175_y176_1"
+ ~loc1:1 ~loc1_rule_name:"noop_mark_x6_y6"
~loc1_emb:[
- "cell_x175_y176__blank_", "cell_f_g_MV1";
- "control__blank_", "control_MV1"]
+ "cell_x6_y6__BLANK_", "cell_f_g__BLANK_";
+ "control__BLANK_", "control__BLANK_"]
~loc1_noop:"noop" ~loc1_move:"(mark f g)"
);
@@ -270,8 +268,8 @@
~loc0_move:"(move 2 2 1 3)" ~loc0_noop:"noop" ~loc1:1
~loc1_rule_name:"noop_move_x7_y9_x8_y10"
~loc1_emb:[
- "cellholds_x7_y9__blank_", "cellholds_7_7__BLANK_";
- "cellholds_x8_y10__blank_", "cellholds_6_6__BLANK_";
+ "cellholds_x7_y9__BLANK_", "cellholds_7_7__BLANK_";
+ "cellholds_x8_y10__BLANK_", "cellholds_6_6__BLANK_";
"control__BLANK_", "control__BLANK_"]
~loc1_noop:"noop" ~loc1_move:"(move 7 7 6 6)"
);
@@ -307,11 +305,13 @@
set_debug_level 4;
simult_test_case ~game_name:"2player_normal_form_2010" ~player:"row"
~own_plnum:0 ~opp_plnum:1
- ~own_rule_name:"row"
- ~own_emb:["_BLANK_", "_BLANK_"]
+ ~own_rule_name:"r1"
+ ~own_emb:["did__BLANK___BLANK_", "did__BLANK___BLANK_";
+ "reward_r1_c1_90_90", "reward_r1_c1_90_90"]
~own_move:"r1"
- ~opp_rule_name:"column"
- ~opp_emb:["_BLANK_", "_BLANK_"]
+ ~opp_rule_name:"c1"
+ ~opp_emb:["did__BLANK___BLANK_", "did__BLANK___BLANK_";
+ "reward_r1_c1_90_90", "reward_r1_c1_90_90"]
~opp_move:"c1"
@@ -354,7 +354,7 @@
(* 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";
- failwith "generated";
+ (* failwith "generated"; *)
()
let exec () =
Modified: trunk/Toss/GGP/tests/2player_normal_form_2010-raw.toss
===================================================================
--- trunk/Toss/GGP/tests/2player_normal_form_2010-raw.toss 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/tests/2player_normal_form_2010-raw.toss 2011-09-02 13:37:14 UTC (rev 1555)
@@ -228,7 +228,6 @@
] -> [reward_r1_c1_90_90 | | ]
emb row__SYNC, column__SYNC, did_0column, did_0row, did_1c1, did_1c2,
did_1c3, did_1r1, did_1r2, did_1r3
- pre not terminal()
LOC 0 {
PLAYER Environment { PAYOFF 0. MOVES [Environment -> 0] }
PLAYER row {
Modified: trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss
===================================================================
--- trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/tests/2player_normal_form_2010-simpl.toss 2011-09-02 13:37:14 UTC (rev 1555)
@@ -108,9 +108,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_r3_m0_r_r0
- (reward_0r3(reward_r3_m0_r_r0) and
- not did__BLANK___BLANK_(reward_r3_m0_r_r0))
+ (not terminal() and
+ ex reward_r3_m0_r_r0
+ (reward_0r3(reward_r3_m0_r_r0) and
+ not did__BLANK___BLANK_(reward_r3_m0_r_r0)))
RULE r2:
[did__BLANK___BLANK_, reward_r1_c1_90_90 |
_opt_column__SYNC {did__BLANK___BLANK_; reward_r1_c1_90_90};
@@ -135,9 +136,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_r2_m0_r_r0
- (reward_0r2(reward_r2_m0_r_r0) and
- not did__BLANK___BLANK_(reward_r2_m0_r_r0))
+ (not terminal() and
+ ex reward_r2_m0_r_r0
+ (reward_0r2(reward_r2_m0_r_r0) and
+ not did__BLANK___BLANK_(reward_r2_m0_r_r0)))
RULE r1:
[did__BLANK___BLANK_, reward_r1_c1_90_90 |
_opt_column__SYNC {did__BLANK___BLANK_; reward_r1_c1_90_90};
@@ -162,9 +164,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_r1_m0_r_r0
- (reward_0r1(reward_r1_m0_r_r0) and
- not did__BLANK___BLANK_(reward_r1_m0_r_r0))
+ (not terminal() and
+ ex reward_r1_m0_r_r0
+ (reward_0r1(reward_r1_m0_r_r0) and
+ not did__BLANK___BLANK_(reward_r1_m0_r_r0)))
RULE c3:
[did__BLANK___BLANK_, reward_r1_c1_90_90 |
_opt_column__SYNC {did__BLANK___BLANK_; reward_r1_c1_90_90};
@@ -189,9 +192,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_m1_c3_r1_r2
- (reward_1c3(reward_m1_c3_r1_r2) and
- not did__BLANK___BLANK_(reward_m1_c3_r1_r2))
+ (not terminal() and
+ ex reward_m1_c3_r1_r2
+ (reward_1c3(reward_m1_c3_r1_r2) and
+ not did__BLANK___BLANK_(reward_m1_c3_r1_r2)))
RULE c2:
[did__BLANK___BLANK_, reward_r1_c1_90_90 |
_opt_column__SYNC {did__BLANK___BLANK_; reward_r1_c1_90_90};
@@ -216,9 +220,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_m1_c2_r1_r2
- (reward_1c2(reward_m1_c2_r1_r2) and
- not did__BLANK___BLANK_(reward_m1_c2_r1_r2))
+ (not terminal() and
+ ex reward_m1_c2_r1_r2
+ (reward_1c2(reward_m1_c2_r1_r2) and
+ not did__BLANK___BLANK_(reward_m1_c2_r1_r2)))
RULE c1:
[did__BLANK___BLANK_, reward_r1_c1_90_90 |
_opt_column__SYNC {did__BLANK___BLANK_; reward_r1_c1_90_90};
@@ -243,9 +248,10 @@
emb column__SYNC, did_0column, did_0row, did_1c1, did_1c2, did_1c3,
did_1r1, did_1r2, did_1r3, row__SYNC
pre
- ex reward_m1_c1_r1_r2
- (reward_1c1(reward_m1_c1_r1_r2) and
- not did__BLANK___BLANK_(reward_m1_c1_r1_r2))
+ (not terminal() and
+ ex reward_m1_c1_r1_r2
+ (reward_1c1(reward_m1_c1_r1_r2) and
+ not did__BLANK___BLANK_(reward_m1_c1_r1_r2)))
RULE Environment:
[reward_r1_c1_90_90 |
_opt_did_0column (reward_r1_c1_90_90);
Modified: trunk/Toss/GGP/tests/connect5-raw.toss
===================================================================
--- trunk/Toss/GGP/tests/connect5-raw.toss 2011-08-31 23:11:10 UTC (rev 1554)
+++ trunk/Toss/GGP/tests/connect5-raw.toss 2011-09-02 13:37:14 UTC (rev 1555)
@@ -1,45 +1,249 @@
-REL adjacent_cell(v0, v1, v2, v3) =
- ex cell_x22__BLANK___BLANK_, cell_y22__BLANK___BLANK_,
- cell_x23__BLANK___BLANK_, cell_y23__BLANK___BLANK_
- (v0 = cell_x22__BLANK___BLANK_ and v1 = cell_y22__BLANK___BLANK_ and
- v2 = cell_x23__BLANK___BLANK_ and v3 = cell_y23__BLANK___BLANK_ and
- adjacent__cell_0__cell_0(cell_x22__BLANK___BLANK_,
- cell_x23__BLANK___BLANK_) and
- adjacent__cell_0__cell_0(cell_y22__BLANK___BLANK_,
- cell_y23__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x22__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y22__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x23__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y23__BLANK___BLANK_)) or
- ex cell_x20__BLANK___BLANK_, cell_y21__BLANK___BLANK_,
- cell_x21__BLANK___BLANK_, cell_y21__BLANK___BLANK_
- (v0 = cell_x20__BLANK___BLANK_ and v1 = cell_y21__BLANK___BLANK_ and
- v2 = cell_x21__BLANK___BLANK_ and v3 = cell_y21__BLANK___BLANK_ and
- adjacent__cell_0__cell_0(cell_x20__BLANK___BLANK_,
- cell_x21__BLANK___BLANK_) and
- coordinate__cell_0(cell_y21__BLANK___BLANK_) and
- coordinate__cell_0(cell_y21__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x20__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y21__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x21__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y21__BLANK___BLANK_)) or
- ex cell_x19__BLANK___BLANK_, cell_y19__BLANK___BLANK_,
- cell_x19__BLANK___BLANK_, cell_y20__BLANK___BLANK_
- (v0 = cell_x19__BLANK___BLANK_ and v1 = cell_y19__BLANK___BLANK_ and
- v2 = cell_x19__BLANK___BLANK_ and v3 = cell_y20__BLANK___BLANK_ and
- adjacent__cell_0__cell_0(cell_y19__BLANK___BLANK_,
- cell_y20__BLANK___BLANK_) and
- coordinate__cell_0(cell_x19__BLANK___BLANK_) and
- coordinate__cell_0(cell_x19__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x19__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y19__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x19__BLANK___BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_y20__BLANK___BLANK_))
-REL col__b() =
+REL row__x() =
+ ex cell_a_y8__BLANK_, cell_b_y8__BLANK_, cell_c1_y8__BLANK_,
+ cell_d_y8__BLANK_, cell_e_y8__BLANK_
+ (nextcol__cell_0__cell_0(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_d_y8__BLANK_) and
+ cell_2x(cell_a_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_a_y8__BLANK_) and
+ cell_2x(cell_b_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_b_y8__BLANK_) and
+ cell_2x(cell_c1_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_c1_y8__BLANK_) and
+ cell_2x(cell_d_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_d_y8__BLANK_) and
+ cell_2x(cell_e_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_e_y8__BLANK_))
+REL row__o() =
+ ex cell_a_y8__BLANK_, cell_b_y8__BLANK_, cell_c1_y8__BLANK_,
+ cell_d_y8__BLANK_, cell_e_y8__BLANK_
+ (nextcol__cell_0__cell_0(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_d_y8__BLANK_) and
+ cell_2o(cell_a_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_a_y8__BLANK_) and
+ cell_2o(cell_b_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_b_y8__BLANK_) and
+ cell_2o(cell_c1_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_c1_y8__BLANK_) and
+ cell_2o(cell_d_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_d_y8__BLANK_) and
+ cell_2o(cell_e_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_e_y8__BLANK_))
+REL row__b() =
+ ex cell_a_y8__BLANK_, cell_b_y8__BLANK_, cell_c1_y8__BLANK_,
+ cell_d_y8__BLANK_, cell_e_y8__BLANK_
+ (nextcol__cell_0__cell_0(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ nextcol__cell_0__cell_0(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_a_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_b_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_d_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_c1_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_d_y8__BLANK_, cell_e_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_a_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_b_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_c1_y8__BLANK_) and
+ EQ___cell_1__cell_1(cell_e_y8__BLANK_, cell_d_y8__BLANK_) and
+ cell_2b(cell_a_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_a_y8__BLANK_) and
+ cell_2b(cell_b_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_b_y8__BLANK_) and
+ cell_2b(cell_c1_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_c1_y8__BLANK_) and
+ cell_2b(cell_d_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_d_y8__BLANK_) and
+ cell_2b(cell_e_y8__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_e_y8__BLANK_))
+REL exists_empty_cell() =
+ ex cell_x7_y7__BLANK_
+ (true and
+ cell_2b(cell_x7_y7__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x7_y7__BLANK_))
+REL diag2__x() =
+ ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
+ cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
+ (nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x15_y17__BLANK_, cell_x14_y18__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x15_y17__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x16_y16__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x16_y16__BLANK_, cell_x17_y15__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x17_y15__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x17_y15__BLANK_, cell_x18_y14__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x18_y14__BLANK_, cell_x17_y15__BLANK_) and
+ cell_2x(cell_x14_y18__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x14_y18__BLANK_) and
+ cell_2x(cell_x15_y17__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x15_y17__BLANK_) and
+ cell_2x(cell_x16_y16__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x16_y16__BLANK_) and
+ cell_2x(cell_x17_y15__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x17_y15__BLANK_) and
+ cell_2x(cell_x18_y14__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x18_y14__BLANK_))
+REL diag2__o() =
+ ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
+ cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
+ (nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x15_y17__BLANK_, cell_x14_y18__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x15_y17__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x16_y16__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x16_y16__BLANK_, cell_x17_y15__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x17_y15__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x17_y15__BLANK_, cell_x18_y14__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x18_y14__BLANK_, cell_x17_y15__BLANK_) and
+ cell_2o(cell_x14_y18__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x14_y18__BLANK_) and
+ cell_2o(cell_x15_y17__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x15_y17__BLANK_) and
+ cell_2o(cell_x16_y16__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x16_y16__BLANK_) and
+ cell_2o(cell_x17_y15__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x17_y15__BLANK_) and
+ cell_2o(cell_x18_y14__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x18_y14__BLANK_))
+REL diag2__b() =
+ ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
+ cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
+ (nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x15_y17__BLANK_, cell_x14_y18__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x15_y17__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x16_y16__BLANK_, cell_x15_y17__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x16_y16__BLANK_, cell_x17_y15__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x17_y15__BLANK_, cell_x16_y16__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x17_y15__BLANK_, cell_x18_y14__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x18_y14__BLANK_, cell_x17_y15__BLANK_) and
+ cell_2b(cell_x14_y18__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x14_y18__BLANK_) and
+ cell_2b(cell_x15_y17__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x15_y17__BLANK_) and
+ cell_2b(cell_x16_y16__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x16_y16__BLANK_) and
+ cell_2b(cell_x17_y15__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x17_y15__BLANK_) and
+ cell_2b(cell_x18_y14__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x18_y14__BLANK_))
+REL diag1__x() =
+ ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
+ cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
+ (nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ cell_2x(cell_x9_y9__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
+ cell_2x(cell_x10_y10__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
+ cell_2x(cell_x11_y11__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
+ cell_2x(cell_x12_y12__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
+ cell_2x(cell_x13_y13__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
+REL diag1__o() =
+ ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
+ cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
+ (nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ cell_2o(cell_x9_y9__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
+ cell_2o(cell_x10_y10__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
+ cell_2o(cell_x11_y11__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
+ cell_2o(cell_x12_y12__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
+ cell_2o(cell_x13_y13__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
+REL diag1__b() =
+ ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
+ cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
+ (nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
+ nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
+ cell_2b(cell_x9_y9__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
+ cell_2b(cell_x10_y10__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
+ cell_2b(cell_x11_y11__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
+ cell_2b(cell_x12_y12__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
+ cell_2b(cell_x13_y13__BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
+REL col__x() =
ex cell_x8_a0__BLANK_, cell_x8_b0__BLANK_, cell_x8_c2__BLANK_,
cell_x8_d0__BLANK_, cell_x8_e0__BLANK_
- (true and
- nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
+ (nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_b0__BLANK_, cell_x8_c2__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_c2__BLANK_, cell_x8_d0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_d0__BLANK_, cell_x8_e0__BLANK_) and
@@ -63,21 +267,20 @@
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_b0__BLANK_) and
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_c2__BLANK_) and
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_d0__BLANK_) and
- cell_2b(cell_x8_a0__BLANK_) and
+ cell_2x(cell_x8_a0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_a0__BLANK_) and
- cell_2b(cell_x8_b0__BLANK_) and
+ cell_2x(cell_x8_b0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_b0__BLANK_) and
- cell_2b(cell_x8_c2__BLANK_) and
+ cell_2x(cell_x8_c2__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_c2__BLANK_) and
- cell_2b(cell_x8_d0__BLANK_) and
+ cell_2x(cell_x8_d0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_d0__BLANK_) and
- cell_2b(cell_x8_e0__BLANK_) and
+ cell_2x(cell_x8_e0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_e0__BLANK_))
REL col__o() =
ex cell_x8_a0__BLANK_, cell_x8_b0__BLANK_, cell_x8_c2__BLANK_,
cell_x8_d0__BLANK_, cell_x8_e0__BLANK_
- (true and
- nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
+ (nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_b0__BLANK_, cell_x8_c2__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_c2__BLANK_, cell_x8_d0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_d0__BLANK_, cell_x8_e0__BLANK_) and
@@ -111,11 +314,10 @@
cell__BLANK___BLANK___BLANK_(cell_x8_d0__BLANK_) and
cell_2o(cell_x8_e0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_e0__BLANK_))
-REL col__x() =
+REL col__b() =
ex cell_x8_a0__BLANK_, cell_x8_b0__BLANK_, cell_x8_c2__BLANK_,
cell_x8_d0__BLANK_, cell_x8_e0__BLANK_
- (true and
- nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
+ (nextcol__cell_1__cell_1(cell_x8_a0__BLANK_, cell_x8_b0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_b0__BLANK_, cell_x8_c2__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_c2__BLANK_, cell_x8_d0__BLANK_) and
nextcol__cell_1__cell_1(cell_x8_d0__BLANK_, cell_x8_e0__BLANK_) and
@@ -139,278 +341,71 @@
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_b0__BLANK_) and
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_c2__BLANK_) and
EQ___cell_0__cell_0(cell_x8_e0__BLANK_, cell_x8_d0__BLANK_) and
- cell_2x(cell_x8_a0__BLANK_) and
+ cell_2b(cell_x8_a0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_a0__BLANK_) and
- cell_2x(cell_x8_b0__BLANK_) and
+ cell_2b(cell_x8_b0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_b0__BLANK_) and
- cell_2x(cell_x8_c2__BLANK_) and
+ cell_2b(cell_x8_c2__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_c2__BLANK_) and
- cell_2x(cell_x8_d0__BLANK_) and
+ cell_2b(cell_x8_d0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_d0__BLANK_) and
- cell_2x(cell_x8_e0__BLANK_) and
+ cell_2b(cell_x8_e0__BLANK_) and
cell__BLANK___BLANK___BLANK_(cell_x8_e0__BLANK_))
-REL conn5__b() =
- (true and (col__b() or row__b() or diag1__b() or diag2__b()) and true)
-REL conn5__o() =
- (true and (col__o() or row__o() or diag1__o() or diag2__o()) and true)
+REL adjacent(v0, v1) =
+ ex cell_x24__BLANK___BLANK_, cell_y24__BLANK___BLANK_
+ (v0 = cell_x24__BLANK___BLANK_ and v1 = cell_y24__BLANK___BLANK_ and
+ nextcol__cell_0__cell_0(cell_x24__BLANK___BLANK_,
+ cell_y24__BLANK___BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_y24__BLANK___BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x24__BLANK___BLANK_)) or
+ ex cell_x25__BLANK___BLANK_, cell_y25__BLANK___BLANK_
+ (v0 = cell_x25__BLANK___BLANK_ and v1 = cell_y25__BLANK___BLANK_ and
+ nextcol__cell_0__cell_0(cell_y25__BLANK___BLANK_,
+ cell_x25__BLANK___BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_y25__BLANK___BLANK_) and
+ cell__BLANK___BLANK___BLANK_(cell_x25__BLANK___BLANK_))
REL conn5__x() =
- (true and (col__x() or row__x() or diag1__x() or diag2__x()) and true)
-REL diag1__b() =
- ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
- cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- cell_2b(cell_x9_y9__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
- cell_2b(cell_x10_y10__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
- cell_2b(cell_x11_y11__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
- cell_2b(cell_x12_y12__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
- cell_2b(cell_x13_y13__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
-REL diag1__o() =
- ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
- cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- cell_2o(cell_x9_y9__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
- cell_2o(cell_x10_y10__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
- cell_2o(cell_x11_y11__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
- cell_2o(cell_x12_y12__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
- cell_2o(cell_x13_y13__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
-REL diag1__x() =
- ex cell_x9_y9__BLANK_, cell_x10_y10__BLANK_, cell_x11_y11__BLANK_,
- cell_x12_y12__BLANK_, cell_x13_y13__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_1__cell_1(cell_x9_y9__BLANK_, cell_x10_y10__BLANK_) and
- nextcol__cell_0__cell_0(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_1__cell_1(cell_x10_y10__BLANK_, cell_x11_y11__BLANK_) and
- nextcol__cell_0__cell_0(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_1__cell_1(cell_x11_y11__BLANK_, cell_x12_y12__BLANK_) and
- nextcol__cell_0__cell_0(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- nextcol__cell_1__cell_1(cell_x12_y12__BLANK_, cell_x13_y13__BLANK_) and
- cell_2x(cell_x9_y9__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x9_y9__BLANK_) and
- cell_2x(cell_x10_y10__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x10_y10__BLANK_) and
- cell_2x(cell_x11_y11__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x11_y11__BLANK_) and
- cell_2x(cell_x12_y12__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x12_y12__BLANK_) and
- cell_2x(cell_x13_y13__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x13_y13__BLANK_))
-REL diag2__b() =
- ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
- cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
- nextcol__cell_1__cell_1(cell_x15_y17__BLANK_, cell_x14_y18__BLANK_) and
- nextcol__cell_0__cell_0(cell_x15_y17__BLANK_, cell_x16_y16__BLANK_) and
- nextcol__cell_1__cell_1(cell_x16_y16__BLANK_, cell_x15_y17__BLANK_) and
- nextcol__cell_0__cell_0(cell_x16_y16__BLANK_, cell_x17_y15__BLANK_) and
- nextcol__cell_1__cell_1(cell_x17_y15__BLANK_, cell_x16_y16__BLANK_) and
- nextcol__cell_0__cell_0(cell_x17_y15__BLANK_, cell_x18_y14__BLANK_) and
- nextcol__cell_1__cell_1(cell_x18_y14__BLANK_, cell_x17_y15__BLANK_) and
- cell_2b(cell_x14_y18__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x14_y18__BLANK_) and
- cell_2b(cell_x15_y17__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x15_y17__BLANK_) and
- cell_2b(cell_x16_y16__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x16_y16__BLANK_) and
- cell_2b(cell_x17_y15__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x17_y15__BLANK_) and
- cell_2b(cell_x18_y14__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x18_y14__BLANK_))
-REL diag2__o() =
- ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
- cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
- nextcol__cell_1__cell_1(cell_x15_y17__BLANK_, cell_x14_y18__BLANK_) and
- nextcol__cell_0__cell_0(cell_x15_y17__BLANK_, cell_x16_y16__BLANK_) and
- nextcol__cell_1__cell_1(cell_x16_y16__BLANK_, cell_x15_y17__BLANK_) and
- nextcol__cell_0__cell_0(cell_x16_y16__BLANK_, cell_x17_y15__BLANK_) and
- nextcol__cell_1__cell_1(cell_x17_y15__BLANK_, cell_x16_y16__BLANK_) and
- nextcol__cell_0__cell_0(cell_x17_y15__BLANK_, cell_x18_y14__BLANK_) and
- nextcol__cell_1__cell_1(cell_x18_y14__BLANK_, cell_x17_y15__BLANK_) and
- cell_2o(cell_x14_y18__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x14_y18__BLANK_) and
- cell_2o(cell_x15_y17__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x15_y17__BLANK_) and
- cell_2o(cell_x16_y16__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x16_y16__BLANK_) and
- cell_2o(cell_x17_y15__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x17_y15__BLANK_) and
- cell_2o(cell_x18_y14__BLANK_) and
- cell__BLANK___BLANK___BLANK_(cell_x18_y14__BLANK_))
-REL diag2__x() =
- ex cell_x14_y18__BLANK_, cell_x15_y17__BLANK_, cell_x16_y16__BLANK_,
- cell_x17_y15__BLANK_, cell_x18_y14__BLANK_
- (true and
- nextcol__cell_0__cell_0(cell_x14_y18__BLANK_, cell_x15_y17__BLANK_) and
- ...
[truncated message content] |