[Toss-devel-svn] SF.net SVN: toss:[1414] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
|
From: <luk...@us...> - 2011-04-16 21:05:28
|
Revision: 1414
http://toss.svn.sourceforge.net/toss/?rev=1414&view=rev
Author: lukaszkaiser
Date: 2011-04-16 21:05:20 +0000 (Sat, 16 Apr 2011)
Log Message:
-----------
Changing ArenaParser to handle concurrency, adapting files.
Modified Paths:
--------------
trunk/Toss/Arena/Arena.ml
trunk/Toss/Arena/Arena.mli
trunk/Toss/Arena/ArenaParser.mly
trunk/Toss/Arena/ArenaTest.ml
trunk/Toss/GGP/tests/breakthrough-simpl.toss
trunk/Toss/GGP/tests/connect5-simpl.toss
trunk/Toss/examples/Breakthrough.toss
trunk/Toss/examples/Checkers.toss
trunk/Toss/examples/Chess.toss
trunk/Toss/examples/Connect4.toss
trunk/Toss/examples/Entanglement.toss
trunk/Toss/examples/Gomoku.toss
trunk/Toss/examples/Gomoku19x19.toss
trunk/Toss/examples/Pawn-Whopping.toss
trunk/Toss/examples/Tic-Tac-Toe.toss
trunk/Toss/examples/bounce.toss
trunk/Toss/examples/rewriting_example.toss
Modified: trunk/Toss/Arena/Arena.ml
===================================================================
--- trunk/Toss/Arena/Arena.ml 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/Arena/Arena.ml 2011-04-16 21:05:20 UTC (rev 1414)
@@ -47,14 +47,16 @@
cur_loc : int ;
}
+let zero_loc = { payoff = Formula.Const 0. ;
+ view = (Formula.And [], []);
+ heur = [];
+ moves = [] }
+
let empty_state =
let emp_struc = Structure.empty_structure () in
- let zero = Formula.Const 0.0 in
{rules = [];
patterns = [];
- graph = Array.make 1
- (Array.make 1
- { payoff = zero; moves = []; view = (Formula.And [],[]); heur = [] });
+ graph = Array.make 1 (Array.make 1 zero_loc);
player_names = ["1", 0] ;
data = [] ;
defined_rels = [] ;
@@ -134,27 +136,19 @@
parameters_in = parameters_in;
}, target_loc
+
+let make_player_loc defs =
+ let (payoff, moves) = List.fold_left
+ (fun (payoff, moves) -> function
+ | `Payoff poff -> (poff, moves)
+ | `Moves mvs -> (payoff, moves @ mvs)
+ ) (Formula.Const 0., []) defs in
+ { zero_loc with payoff = payoff ; moves = moves }
+
let make_location id loc_defs =
- let (pname, payoffs, moves) = List.fold_left
- (fun (pname, payoffs, moves) -> function
- | `PlayerName pn ->
- if pname = None then Some pn, payoffs, moves
- else raise (
- Arena_definition_error
- ("Location player redefined from " ^ Aux.unsome pname ^
- " to " ^ pn))
- | `Payoffs poffs -> pname, payoffs @ poffs, moves
- | `Moves mvs -> pname, payoffs, moves @ mvs
- ) (None, [], []) loc_defs in
- (* TODO: sanitize against redefinition in payoffs and equivalence of
- moves? *)
- let pname = match pname with None -> "1" | Some p -> p in
fun player_names ->
- let zero_loc = { payoff = Formula.Const 0. ; view = (Formula.And [], []);
- heur = []; moves = [] } in
- let locs = List.map (fun (pl, poff) ->
- (pl, { payoff = poff ; view = (Formula.And [], []); heur = [];
- moves = if pl = pname then moves else [] })) payoffs in
+ let locs = List.map
+ (fun (pl, pl_loc_defs) -> (pl, make_player_loc pl_loc_defs)) loc_defs in
array_of_players zero_loc player_names locs
@@ -247,8 +241,6 @@
if old_locs = [] then old_locs
else
let more = num_players - Array.length (List.hd old_locs) in
- let zero_loc = { payoff = Formula.Const 0. ; view = (Formula.And [], []);
- heur = []; moves = [] } in
let add_more loc = Array.append loc (Array.make more zero_loc) in
List.map add_more old_locs in
let add_def_rel loc =
@@ -299,27 +291,24 @@
(* Print a move as string. *)
let move_str (lb, i) = "["^ (label_str lb) ^" -> "^ (string_of_int i) ^"]"
-let fprint_loc_body_in struc pnames f player
- {payoff = payoff; moves = moves} =
- Format.fprintf f "@[<1>PLAYER@ %s@]@ "
- (Aux.rev_assoc pnames player);
- Format.fprintf f "@[<1>PAYOFF@ {@,@[<1>%a@]@,}@]@ "
- (Aux.fprint_sep_list ";" (fun f (p, ex) ->
- Format.fprintf f "@[<1>%s:@ %a@]" (Aux.rev_assoc pnames p)
- (Formula.fprint_real(* _nobra 0 *)) ex))
- (Array.to_list (Array.mapi (fun i l->i, l) [|payoff|]));
- Format.fprintf f "@[<1>MOVES@ %a@]"
- (Aux.fprint_sep_list ";" (fun f ({
- rule=r; time_in=(t_l, t_r); parameters_in=params}, target) ->
- Format.fprintf f "[@,@[<1>%s" r;
- if t_l <> cDEFAULT_TIMESTEP || t_r <> cDEFAULT_TIMESTEP then
- Format.fprintf f ",@ @[<1>t:@ %F@ --@ %F@]" t_l t_r;
- if params <> [] then
- Format.fprintf f ",@ %a"
- (Aux.fprint_sep_list "," (fun f (pn, (p_l, p_r)) ->
- Format.fprintf f "@[<1>%s:@ %F@ --@ %F@]" pn p_l p_r)) params;
- Format.fprintf f "@ ->@ %d@]@,]" target)) moves
-
+let fprint_loc_body_in struc pnames f player {payoff = in_p; moves = in_m} =
+ Format.fprintf f "@ @[<0>PLAYER@ %s@ {@ %a}@]@," (Aux.rev_assoc pnames player)
+ (fun f (payoff, moves) ->
+ Format.fprintf f "@[<1>PAYOFF@ @[<1>%a@]@]@ "
+ (Formula.fprint_real(* _nobra 0 *)) payoff;
+ if moves <> [] then
+ Format.fprintf f "@[<1>MOVES@ %a@]@ "
+ (Aux.fprint_sep_list ";" (fun f ({
+ rule=r; time_in=(t_l, t_r); parameters_in=params}, target) ->
+ Format.fprintf f "[@,@[<1>%s" r;
+ if t_l <> cDEFAULT_TIMESTEP || t_r <> cDEFAULT_TIMESTEP then
+ Format.fprintf f ",@ @[<1>t:@ %F@ --@ %F@]" t_l t_r;
+ if params <> [] then
+ Format.fprintf f ",@ %a"
+ (Aux.fprint_sep_list "," (fun f (pn, (p_l, p_r)) ->
+ Format.fprintf f "@[<1>%s:@ %F@ --@ %F@]" pn p_l p_r)) params;
+ Format.fprintf f "@ ->@ %d@]@,]" target)) moves
+ ) (in_p, in_m)
let fprint_loc_body struc pnames f loc =
Array.iteri (fun p l -> fprint_loc_body_in struc pnames f p l) loc
@@ -362,7 +351,7 @@
Format.fprintf ppf "@[<1>RULE %s:@ %a@]@ " rname
(ContinuousRule.fprint_full print_compiled_rules) r) rules;
Array.iteri (fun loc_id loc ->
- Format.fprintf ppf "@[<1>LOC %d@ {@,@[<1>@,%a@]@,}@]@ "
+ Format.fprintf ppf "@[<0>LOC@ %d@ {@,@[<2> %a@]@]@,}@ "
loc_id (fprint_loc_body struc player_names) loc) graph;
Format.fprintf ppf "@[<1>MODEL@ %a@]@ "
(Structure.fprint ~show_empty:true) struc;
@@ -392,8 +381,6 @@
let add_new_player (state_game, state) pname =
let player = state_game.num_players in
- let zero_loc = { payoff = Formula.Const 0. ; view = (Formula.And [], []);
- heur = []; moves = [] } in
let add_more loc = Array.append loc [|zero_loc|] in
let game = {state_game with
num_players = state_game.num_players + 1;
@@ -766,8 +753,6 @@
| SetLoc (i) ->
let l = Array.length state_game.graph in
if i < 0 || i > l then (* make new location and set there *)
- let zero_loc = { payoff = Formula.Const 0. ; heur = []; moves = [] ;
- view = (Formula.And [], []); } in
let a = Array.make (Array.length state_game.graph.(0)) zero_loc in
(({state_game with graph = Array.append state_game.graph [|a|]},
{state with cur_loc = l }),
Modified: trunk/Toss/Arena/Arena.mli
===================================================================
--- trunk/Toss/Arena/Arena.mli 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/Arena/Arena.mli 2011-04-16 21:05:20 UTC (rev 1414)
@@ -109,10 +109,9 @@
val make_location :
int ->
- [< `Moves of (label * int) list
- | `Payoffs of (string * Formula.real_expr) list
- | `PlayerName of string ]
- list -> (string * int) list -> player_loc array
+ (string * [< `Moves of (label * int) list
+ | `Payoff of Formula.real_expr ] list) list ->
+ (string * int) list -> player_loc array
(** Create a game state, possibly by extending an old state, from a
list of definitions (usually corresponding to a ".toss" file.) *)
Modified: trunk/Toss/Arena/ArenaParser.mly
===================================================================
--- trunk/Toss/Arena/ArenaParser.mly 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/Arena/ArenaParser.mly 2011-04-16 21:05:20 UTC (rev 1414)
@@ -51,19 +51,18 @@
"Syntax error in formula expression."
}
-location_defs:
- | PLAYER_MOD pname = id_int { `PlayerName pname }
- | PAYOFF poffs =
- delimited(OPENCUR, separated_list (
- SEMICOLON, separated_pair (id_int, COLON, real_expr_wrapper)), CLOSECUR)
- { `Payoffs poffs }
- | MOVES moves = separated_list (SEMICOLON, move)
- { `Moves moves }
+player_loc_defs:
+ | PAYOFF poff = real_expr_wrapper { `Payoff poff }
+ | MOVES moves = separated_list (SEMICOLON, move) { `Moves moves }
| error
{ Lexer.report_parsing_error $startpos $endpos
"Syntax error in location field."
}
+location_defs:
+ | PLAYER_MOD pname = id_int OPENCUR defs = list (player_loc_defs) CLOSECUR
+ { (pname, defs) }
+
location:
| ident = INT OPENCUR loc_defs = list (location_defs) CLOSECUR
{ try
Modified: trunk/Toss/Arena/ArenaTest.ml
===================================================================
--- trunk/Toss/Arena/ArenaTest.ml 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/Arena/ArenaTest.ml 2011-04-16 21:05:20 UTC (rev 1414)
@@ -59,11 +59,12 @@
REL Q(x) {ex y R(y, x)}
TIME 7.
LOC 0 {
- PLAYER white PAYOFF {white: :(ex x P(x)); black: 0.7}
- MOVES [RULE finish -> LOC 1]
+ PLAYER white { PAYOFF :(ex x P(x)) MOVES [RULE finish -> LOC 1] }
+ PLAYER black { PAYOFF 0.7 }
}
LOC 1 {
- PLAYER black PAYOFF {white: 0.3; black: :(ex x Q(x))}
+ PLAYER black { PAYOFF :(ex x Q(x)) }
+ PLAYER white { PAYOFF 0.3 }
}
STATE LOC 1" in
let res1 = "REL P(x) {ex y R(x, y)}
@@ -73,10 +74,12 @@
[a, b | R (a, b) | ] -> [a, c, b | R {(a, c); (c, b)} | ] emb R
with [a <- a, b <- b]
LOC 0 {
- PLAYER white PAYOFF {white: :(ex x ex y R(x, y)); black: 0.7}
- MOVES [finish -> 1]
- }
-LOC 1 {PLAYER black PAYOFF {white: 0.3; black: :(ex x ex y R(y, x))} MOVES }
+ PLAYER white { PAYOFF :(ex x ex y R(x, y)) MOVES [finish -> 1] }
+ PLAYER black { PAYOFF 0.7 }
+}
+LOC 1 {
+ PLAYER white { PAYOFF 0.3 } PLAYER black { PAYOFF :(ex x ex y R(y, x)) }
+}
MODEL [a, b | R (a, b) | ]
STATE LOC 1
TIME 7.
@@ -92,10 +95,12 @@
[a, b | R (a, b) | ] -> [a, c, b | R {(a, c); (c, b)} | ] emb R
with [a <- a, b <- b]
LOC 0 {
- PLAYER white PAYOFF {white: :(ex x ex y R(x, y)); black: 0.7}
- MOVES [finish -> 1]
- }
-LOC 1 {PLAYER black PAYOFF {white: 0.3; black: :(ex x ex y R(y, x))} MOVES }
+ PLAYER white { PAYOFF :(ex x ex y R(x, y)) MOVES [finish -> 1] }
+ PLAYER black { PAYOFF 0.7 }
+}
+LOC 1 {
+ PLAYER white { PAYOFF 0.3 } PLAYER black { PAYOFF :(ex x ex y R(y, x)) }
+}
MODEL [a, b | R (a, b) | ]
STATE LOC 1
TIME 7.
Modified: trunk/Toss/GGP/tests/breakthrough-simpl.toss
===================================================================
--- trunk/Toss/GGP/tests/breakthrough-simpl.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/GGP/tests/breakthrough-simpl.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -221,9 +221,8 @@
(cellholds_x2_y2_white(cellholds_x377_y369__blank_) and
not control_MV1(cellholds_x377_y369__blank_)))
LOC 0 {
- PLAYER white
- PAYOFF {
- white:
+ PLAYER white {
+ PAYOFF
100. *
:(
ex cellholds_x26_8__blank_
@@ -234,8 +233,13 @@
ex cellholds_x27_y26__blank_
(not control_MV1(cellholds_x27_y26__blank_) and
cellholds_x2_y2_black(cellholds_x27_y26__blank_))
- );
- black:
+ )
+ MOVES [move_x1_y1_x2_y2_0 -> 1]; [move_x1_y1_x2_y2_00 -> 1];
+ [move_x_y1_x_y2_0 -> 1]
+ }
+
+ PLAYER black {
+ PAYOFF
100. *
:(
ex cellholds_x30_1__blank_
@@ -248,25 +252,10 @@
cellholds_x2_y2_white(cellholds_x31_y28__blank_))
)
}
- MOVES [move_x1_y1_x2_y2_0 -> 1]; [move_x1_y1_x2_y2_00 -> 1]; [
- move_x_y1_x_y2_0 -> 1]
}
LOC 1 {
- PLAYER black
- PAYOFF {
- white:
- 100. *
- :(
- ex cellholds_x26_8__blank_
- (cellholds_x2_8_MV1(cellholds_x26_8__blank_) and
- cellholds_x2_y2_white(cellholds_x26_8__blank_) and
- not control_MV1(cellholds_x26_8__blank_)) or
- not
- ex cellholds_x27_y26__blank_
- (not control_MV1(cellholds_x27_y26__blank_) and
- cellholds_x2_y2_black(cellholds_x27_y26__blank_))
- );
- black:
+ PLAYER black {
+ PAYOFF
100. *
:(
ex cellholds_x30_1__blank_
@@ -278,9 +267,24 @@
(not control_MV1(cellholds_x31_y28__blank_) and
cellholds_x2_y2_white(cellholds_x31_y28__blank_))
)
+ MOVES [move_x1_y1_x2_y2_1 -> 0]; [move_x1_y1_x2_y2_10 -> 0];
+ [move_x_y1_x_y2_1 -> 0]
+ }
+
+ PLAYER white {
+ PAYOFF
+ 100. *
+ :(
+ ex cellholds_x26_8__blank_
+ (cellholds_x2_8_MV1(cellholds_x26_8__blank_) and
+ cellholds_x2_y2_white(cellholds_x26_8__blank_) and
+ not control_MV1(cellholds_x26_8__blank_)) or
+ not
+ ex cellholds_x27_y26__blank_
+ (not control_MV1(cellholds_x27_y26__blank_) and
+ cellholds_x2_y2_black(cellholds_x27_y26__blank_))
+ )
}
- MOVES [move_x1_y1_x2_y2_1 -> 0]; [move_x1_y1_x2_y2_10 -> 0]; [
- move_x_y1_x_y2_1 -> 0]
}
MODEL
[control_MV1, cellholds_8_8_MV1, cellholds_8_7_MV1, cellholds_8_6_MV1,
Modified: trunk/Toss/GGP/tests/connect5-simpl.toss
===================================================================
--- trunk/Toss/GGP/tests/connect5-simpl.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/GGP/tests/connect5-simpl.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -233,9 +233,8 @@
cell_x_y_o(cell_x181_y181__blank_)) and
ex cell_x182_y182__blank_ cell_x_y_b(cell_x182_y182__blank_))
LOC 0 {
- PLAYER x
- PAYOFF {
- x:
+ PLAYER x {
+ PAYOFF
50. +
-50. *
:(
@@ -329,8 +328,12 @@
cell_x_y_x(cell_x48_y48__blank_) and
cell_x_y_x(cell_x47_y47__blank_) and
cell_x_y_x(cell_x46_y46__blank_))
- );
- o:
+ )
+ MOVES [mark_x149_y149_0 -> 1]
+ }
+
+ PLAYER o {
+ PAYOFF
50. +
-50. *
:(
@@ -427,108 +430,11 @@
cell_x_y_o(cell_x47_y47__blank_) and
cell_x_y_o(cell_x46_y46__blank_))
)
- }
- MOVES [mark_x149_y149_0 -> 1]
+ }
}
LOC 1 {
- PLAYER o
- PAYOFF {
- x:
- 50. +
- -50. *
- :(
- ex cell_x51_e7__blank_, cell_x51_d7__blank_, cell_x51_c7__blank_,
- cell_x51_b7__blank_, cell_x51_a7__blank_
- (R(cell_x51_a7__blank_, cell_x51_b7__blank_) and
- R(cell_x51_b7__blank_, cell_x51_c7__blank_) and
- R(cell_x51_c7__blank_, cell_x51_d7__blank_) and
- R(cell_x51_d7__blank_, cell_x51_e7__blank_) and
- cell_x_y_o(cell_x51_a7__blank_) and
- cell_x_y_o(cell_x51_b7__blank_) and
- cell_x_y_o(cell_x51_c7__blank_) and
- cell_x_y_o(cell_x51_d7__blank_) and cell_x_y_o(cell_x51_e7__blank_)) or
- ex cell_e8_y51__blank_, cell_d8_y51__blank_, cell_c8_y51__blank_,
- cell_b8_y51__blank_, cell_a8_y51__blank_
- (R0(cell_a8_y51__blank_, cell_b8_y51__blank_) and
- R0(cell_b8_y51__blank_, cell_c8_y51__blank_) and
- R0(cell_c8_y51__blank_, cell_d8_y51__blank_) and
- R0(cell_d8_y51__blank_, cell_e8_y51__blank_) and
- cell_x_y_o(cell_a8_y51__blank_) and
- cell_x_y_o(cell_b8_y51__blank_) and
- cell_x_y_o(cell_c8_y51__blank_) and
- cell_x_y_o(cell_d8_y51__blank_) and
- cell_x_y_o(cell_e8_y51__blank_)) or
- ex cell_x56_y56__blank_, cell_x55_y55__blank_, cell_x54_y54__blank_,
- cell_x53_y53__blank_, cell_x52_y52__blank_
- (R1(cell_x53_y53__blank_, cell_x52_y52__blank_) and
- R1(cell_x54_y54__blank_, cell_x53_y53__blank_) and
- R1(cell_x55_y55__blank_, cell_x54_y54__blank_) and
- R1(cell_x56_y56__blank_, cell_x55_y55__blank_) and
- cell_x_y_o(cell_x56_y56__blank_) and
- cell_x_y_o(cell_x55_y55__blank_) and
- cell_x_y_o(cell_x54_y54__blank_) and
- cell_x_y_o(cell_x53_y53__blank_) and
- cell_x_y_o(cell_x52_y52__blank_)) or
- ex cell_x61_y61__blank_, cell_x60_y60__blank_, cell_x59_y59__blank_,
- cell_x58_y58__blank_, cell_x57_y57__blank_
- (R2(cell_x58_y58__blank_, cell_x57_y57__blank_) and
- R2(cell_x59_y59__blank_, cell_x58_y58__blank_) and
- R2(cell_x60_y60__blank_, cell_x59_y59__blank_) and
- R2(cell_x61_y61__blank_, cell_x60_y60__blank_) and
- cell_x_y_o(cell_x61_y61__blank_) and
- cell_x_y_o(cell_x60_y60__blank_) and
- cell_x_y_o(cell_x59_y59__blank_) and
- cell_x_y_o(cell_x58_y58__blank_) and
- cell_x_y_o(cell_x57_y57__blank_))
- )
- +
- 50. *
- :(
- ex cell_x40_e5__blank_, cell_x40_d5__blank_, cell_x40_c5__blank_,
- cell_x40_b5__blank_, cell_x40_a5__blank_
- (R(cell_x40_a5__blank_, cell_x40_b5__blank_) and
- R(cell_x40_b5__blank_, cell_x40_c5__blank_) and
- R(cell_x40_c5__blank_, cell_x40_d5__blank_) and
- R(cell_x40_d5__blank_, cell_x40_e5__blank_) and
- cell_x_y_x(cell_x40_a5__blank_) and
- cell_x_y_x(cell_x40_b5__blank_) and
- cell_x_y_x(cell_x40_c5__blank_) and
- cell_x_y_x(cell_x40_d5__blank_) and cell_x_y_x(cell_x40_e5__blank_)) or
- ex cell_e6_y40__blank_, cell_d6_y40__blank_, cell_c6_y40__blank_,
- cell_b6_y40__blank_, cell_a6_y40__blank_
- (R0(cell_a6_y40__blank_, cell_b6_y40__blank_) and
- R0(cell_b6_y40__blank_, cell_c6_y40__blank_) and
- R0(cell_c6_y40__blank_, cell_d6_y40__blank_) and
- R0(cell_d6_y40__blank_, cell_e6_y40__blank_) and
- cell_x_y_x(cell_a6_y40__blank_) and
- cell_x_y_x(cell_b6_y40__blank_) and
- cell_x_y_x(cell_c6_y40__blank_) and
- cell_x_y_x(cell_d6_y40__blank_) and
- cell_x_y_x(cell_e6_y40__blank_)) or
- ex cell_x45_y45__blank_, cell_x44_y44__blank_, cell_x43_y43__blank_,
- cell_x42_y42__blank_, cell_x41_y41__blank_
- (R1(cell_x42_y42__blank_, cell_x41_y41__blank_) and
- R1(cell_x43_y43__blank_, cell_x42_y42__blank_) and
- R1(cell_x44_y44__blank_, cell_x43_y43__blank_) and
- R1(cell_x45_y45__blank_, cell_x44_y44__blank_) and
- cell_x_y_x(cell_x45_y45__blank_) and
- cell_x_y_x(cell_x44_y44__blank_) and
- cell_x_y_x(cell_x43_y43__blank_) and
- cell_x_y_x(cell_x42_y42__blank_) and
- cell_x_y_x(cell_x41_y41__blank_)) or
- ex cell_x50_y50__blank_, cell_x49_y49__blank_, cell_x48_y48__blank_,
- cell_x47_y47__blank_, cell_x46_y46__blank_
- (R2(cell_x47_y47__blank_, cell_x46_y46__blank_) and
- R2(cell_x48_y48__blank_, cell_x47_y47__blank_) and
- R2(cell_x49_y49__blank_, cell_x48_y48__blank_) and
- R2(cell_x50_y50__blank_, cell_x49_y49__blank_) and
- cell_x_y_x(cell_x50_y50__blank_) and
- cell_x_y_x(cell_x49_y49__blank_) and
- cell_x_y_x(cell_x48_y48__blank_) and
- cell_x_y_x(cell_x47_y47__blank_) and
- cell_x_y_x(cell_x46_y46__blank_))
- );
- o:
+ PLAYER o {
+ PAYOFF
50. +
-50. *
:(
@@ -625,8 +531,106 @@
cell_x_y_o(cell_x47_y47__blank_) and
cell_x_y_o(cell_x46_y46__blank_))
)
+ MOVES [mark_x159_y159_1 -> 0]
}
- MOVES [mark_x159_y159_1 -> 0]
+
+ PLAYER x {
+ PAYOFF
+ 50. +
+ -50. *
+ :(
+ ex cell_x51_e7__blank_, cell_x51_d7__blank_, cell_x51_c7__blank_,
+ cell_x51_b7__blank_, cell_x51_a7__blank_
+ (R(cell_x51_a7__blank_, cell_x51_b7__blank_) and
+ R(cell_x51_b7__blank_, cell_x51_c7__blank_) and
+ R(cell_x51_c7__blank_, cell_x51_d7__blank_) and
+ R(cell_x51_d7__blank_, cell_x51_e7__blank_) and
+ cell_x_y_o(cell_x51_a7__blank_) and
+ cell_x_y_o(cell_x51_b7__blank_) and
+ cell_x_y_o(cell_x51_c7__blank_) and
+ cell_x_y_o(cell_x51_d7__blank_) and cell_x_y_o(cell_x51_e7__blank_)) or
+ ex cell_e8_y51__blank_, cell_d8_y51__blank_, cell_c8_y51__blank_,
+ cell_b8_y51__blank_, cell_a8_y51__blank_
+ (R0(cell_a8_y51__blank_, cell_b8_y51__blank_) and
+ R0(cell_b8_y51__blank_, cell_c8_y51__blank_) and
+ R0(cell_c8_y51__blank_, cell_d8_y51__blank_) and
+ R0(cell_d8_y51__blank_, cell_e8_y51__blank_) and
+ cell_x_y_o(cell_a8_y51__blank_) and
+ cell_x_y_o(cell_b8_y51__blank_) and
+ cell_x_y_o(cell_c8_y51__blank_) and
+ cell_x_y_o(cell_d8_y51__blank_) and
+ cell_x_y_o(cell_e8_y51__blank_)) or
+ ex cell_x56_y56__blank_, cell_x55_y55__blank_, cell_x54_y54__blank_,
+ cell_x53_y53__blank_, cell_x52_y52__blank_
+ (R1(cell_x53_y53__blank_, cell_x52_y52__blank_) and
+ R1(cell_x54_y54__blank_, cell_x53_y53__blank_) and
+ R1(cell_x55_y55__blank_, cell_x54_y54__blank_) and
+ R1(cell_x56_y56__blank_, cell_x55_y55__blank_) and
+ cell_x_y_o(cell_x56_y56__blank_) and
+ cell_x_y_o(cell_x55_y55__blank_) and
+ cell_x_y_o(cell_x54_y54__blank_) and
+ cell_x_y_o(cell_x53_y53__blank_) and
+ cell_x_y_o(cell_x52_y52__blank_)) or
+ ex cell_x61_y61__blank_, cell_x60_y60__blank_, cell_x59_y59__blank_,
+ cell_x58_y58__blank_, cell_x57_y57__blank_
+ (R2(cell_x58_y58__blank_, cell_x57_y57__blank_) and
+ R2(cell_x59_y59__blank_, cell_x58_y58__blank_) and
+ R2(cell_x60_y60__blank_, cell_x59_y59__blank_) and
+ R2(cell_x61_y61__blank_, cell_x60_y60__blank_) and
+ cell_x_y_o(cell_x61_y61__blank_) and
+ cell_x_y_o(cell_x60_y60__blank_) and
+ cell_x_y_o(cell_x59_y59__blank_) and
+ cell_x_y_o(cell_x58_y58__blank_) and
+ cell_x_y_o(cell_x57_y57__blank_))
+ )
+ +
+ 50. *
+ :(
+ ex cell_x40_e5__blank_, cell_x40_d5__blank_, cell_x40_c5__blank_,
+ cell_x40_b5__blank_, cell_x40_a5__blank_
+ (R(cell_x40_a5__blank_, cell_x40_b5__blank_) and
+ R(cell_x40_b5__blank_, cell_x40_c5__blank_) and
+ R(cell_x40_c5__blank_, cell_x40_d5__blank_) and
+ R(cell_x40_d5__blank_, cell_x40_e5__blank_) and
+ cell_x_y_x(cell_x40_a5__blank_) and
+ cell_x_y_x(cell_x40_b5__blank_) and
+ cell_x_y_x(cell_x40_c5__blank_) and
+ cell_x_y_x(cell_x40_d5__blank_) and cell_x_y_x(cell_x40_e5__blank_)) or
+ ex cell_e6_y40__blank_, cell_d6_y40__blank_, cell_c6_y40__blank_,
+ cell_b6_y40__blank_, cell_a6_y40__blank_
+ (R0(cell_a6_y40__blank_, cell_b6_y40__blank_) and
+ R0(cell_b6_y40__blank_, cell_c6_y40__blank_) and
+ R0(cell_c6_y40__blank_, cell_d6_y40__blank_) and
+ R0(cell_d6_y40__blank_, cell_e6_y40__blank_) and
+ cell_x_y_x(cell_a6_y40__blank_) and
+ cell_x_y_x(cell_b6_y40__blank_) and
+ cell_x_y_x(cell_c6_y40__blank_) and
+ cell_x_y_x(cell_d6_y40__blank_) and
+ cell_x_y_x(cell_e6_y40__blank_)) or
+ ex cell_x45_y45__blank_, cell_x44_y44__blank_, cell_x43_y43__blank_,
+ cell_x42_y42__blank_, cell_x41_y41__blank_
+ (R1(cell_x42_y42__blank_, cell_x41_y41__blank_) and
+ R1(cell_x43_y43__blank_, cell_x42_y42__blank_) and
+ R1(cell_x44_y44__blank_, cell_x43_y43__blank_) and
+ R1(cell_x45_y45__blank_, cell_x44_y44__blank_) and
+ cell_x_y_x(cell_x45_y45__blank_) and
+ cell_x_y_x(cell_x44_y44__blank_) and
+ cell_x_y_x(cell_x43_y43__blank_) and
+ cell_x_y_x(cell_x42_y42__blank_) and
+ cell_x_y_x(cell_x41_y41__blank_)) or
+ ex cell_x50_y50__blank_, cell_x49_y49__blank_, cell_x48_y48__blank_,
+ cell_x47_y47__blank_, cell_x46_y46__blank_
+ (R2(cell_x47_y47__blank_, cell_x46_y46__blank_) and
+ R2(cell_x48_y48__blank_, cell_x47_y47__blank_) and
+ R2(cell_x49_y49__blank_, cell_x48_y48__blank_) and
+ R2(cell_x50_y50__blank_, cell_x49_y49__blank_) and
+ cell_x_y_x(cell_x50_y50__blank_) and
+ cell_x_y_x(cell_x49_y49__blank_) and
+ cell_x_y_x(cell_x48_y48__blank_) and
+ cell_x_y_x(cell_x47_y47__blank_) and
+ cell_x_y_x(cell_x46_y46__blank_))
+ )
+ }
}
MODEL
[control_MV1, cell_h_h_MV1, cell_h_g_MV1, cell_h_f_MV1, cell_h_e_MV1,
Modified: trunk/Toss/examples/Breakthrough.toss
===================================================================
--- trunk/Toss/examples/Breakthrough.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Breakthrough.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -39,31 +39,30 @@
B
" emb W, B pre not ex x (W(x) and not ex y C(x, y))
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1:
- :(ex x (W(x) and not ex y C(x, y))) +
- -1. * :(ex x (B(x) and not ex y C(y, x)));
- 2:
- :(ex x (B(x) and not ex y C(y, x))) +
- -1. * :(ex x (W(x) and not ex y C(x, y)))
- }
- MOVES [WhiteDiag -> 1]; [WhiteStraight -> 1]
- }
+ PLAYER 1 {
+ PAYOFF
+ :(ex x (W(x) and not ex y C(x, y))) - :(ex x (B(x) and not ex y C(y, x)))
+ MOVES
+ [WhiteDiag -> 1]; [WhiteStraight -> 1]
+ }
+ PLAYER 2 {
+ PAYOFF
+ :(ex x (B(x) and not ex y C(y, x))) - :(ex x (W(x) and not ex y C(x, y)))
+ }
+}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1:
- :(ex x (W(x) and not ex y C(x, y))) +
- -1. * :(ex x (B(x) and not ex y C(y, x)));
- 2:
- :(ex x (B(x) and not ex y C(y, x))) +
- -1. * :(ex x (W(x) and not ex y C(x, y)))
- }
- MOVES [BlackDiag -> 0]; [BlackStraight -> 0]
- }
-MODEL [ | |
- ] "
+ PLAYER 1 {
+ PAYOFF
+ :(ex x (W(x) and not ex y C(x, y))) - :(ex x (B(x) and not ex y C(y, x)))
+ }
+ PLAYER 2 {
+ PAYOFF
+ :(ex x (B(x) and not ex y C(y, x))) - :(ex x (W(x) and not ex y C(x, y)))
+ MOVES
+ [BlackDiag -> 0]; [BlackStraight -> 0]
+ }
+}
+MODEL [ | | ] "
... ... ... ...
B B..B B..B B..B B..
... ... ... ...
Modified: trunk/Toss/examples/Checkers.toss
===================================================================
--- trunk/Toss/examples/Checkers.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Checkers.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -84,40 +84,47 @@
[ a, b, c | Bq { a }; w { b } | - ] -> [ a, b, c | Bq { c } | - ] emb w, b
pre Diag2 (a, b, c)
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: :(ex x w(x)) - :(ex x b(x));
- 2: :(ex x b(x)) - :(ex x w(x))
+ PLAYER 1 {
+ PAYOFF :(ex x w(x)) - :(ex x b(x))
+ MOVES
+ [RedMove -> 1]; [RedPromote -> 1]; [RedQMove -> 1];
+ [RedBeat -> 1]; [RedBeatPromote -> 1]; [RedQBeat -> 1];
+ [RedBeatCont -> 2]
}
- MOVES [RedMove -> 1]; [RedPromote -> 1]; [RedQMove -> 1];
- [RedBeat -> 1]; [RedBeatPromote -> 1]; [RedQBeat -> 1];
- [RedBeatCont -> 2]
+ PLAYER 2 {
+ PAYOFF :(ex x b(x)) - :(ex x w(x))
+ }
}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: :(ex x w(x)) - :(ex x b(x));
- 2: :(ex x b(x)) - :(ex x w(x))
+ PLAYER 1 {
+ PAYOFF :(ex x w(x)) - :(ex x b(x))
}
- MOVES [WhiteMove -> 0]; [WhitePromote -> 0]; [WhiteQMove -> 0];
- [WhiteBeat -> 0]; [WhiteBeatPromote -> 0]; [WhiteQBeat -> 0];
- [WhiteBeatCont -> 3]
+ PLAYER 2 {
+ PAYOFF :(ex x b(x)) - :(ex x w(x))
+ MOVES
+ [WhiteMove -> 0]; [WhitePromote -> 0]; [WhiteQMove -> 0];
+ [WhiteBeat -> 0]; [WhiteBeatPromote -> 0]; [WhiteQBeat -> 0];
+ [WhiteBeatCont -> 3]
+ }
}
LOC 2 {
- PLAYER 1
- PAYOFF {
- 1: :(ex x w(x)) - :(ex x b(x));
- 2: :(ex x b(x)) - :(ex x w(x))
+ PLAYER 1 {
+ PAYOFF :(ex x w(x)) - :(ex x b(x))
+ MOVES [RedBeatBoth -> 1]; [RedBeatPromote -> 1]; [RedBeatBothCont -> 2]
}
- MOVES [RedBeatBoth -> 1]; [RedBeatPromote -> 1]; [RedBeatBothCont -> 2]
+ PLAYER 2 {
+ PAYOFF :(ex x b(x)) - :(ex x w(x))
+ }
}
LOC 3 {
- PLAYER 2
- PAYOFF {
- 1: :(ex x w(x)) - :(ex x b(x));
- 2: :(ex x b(x)) - :(ex x w(x))
+ PLAYER 1 {
+ PAYOFF :(ex x w(x)) - :(ex x b(x))
}
- MOVES [WhiteBeatBoth -> 0]; [WhiteBeatPromote -> 0]; [WhiteBeatBothCont -> 3]
+ PLAYER 2 {
+ PAYOFF :(ex x b(x)) - :(ex x w(x))
+ MOVES
+ [WhiteBeatBoth -> 0]; [WhiteBeatPromote -> 0]; [WhiteBeatBothCont -> 3]
+ }
}
MODEL [ | Wq:1 { }; Bq:1 { } |
] "
Modified: trunk/Toss/examples/Chess.toss
===================================================================
--- trunk/Toss/examples/Chess.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Chess.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -313,11 +313,8 @@
...bR bK.
" emb w,b pre not (wBeats(a1) or wBeats(b1) or wBeats(c1)) post true
LOC 0 { // both can castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 1];
[WhitePawnMoveDbl -> 1];
@@ -336,12 +333,11 @@
[WhiteRightCastle -> 7];
[WhiteKing -> 7]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 1 { // both can castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 0];
[BlackPawnMoveDbl -> 0];
@@ -360,12 +356,11 @@
[BlackRightCastle -> 24];
[BlackKing -> 24]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 2 { // w left, b can castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 3];
[WhitePawnMoveDbl -> 3];
@@ -383,12 +378,11 @@
[WhiteLeftCastle -> 7];
[WhiteKing -> 7]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 3 { // w left, b can castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 2];
[BlackPawnMoveDbl -> 2];
@@ -407,12 +401,11 @@
[BlackRightCastle -> 26];
[BlackKing -> 26]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 4 { // w right, b can castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 5];
[WhitePawnMoveDbl -> 5];
@@ -430,12 +423,11 @@
[WhiteRightCastle -> 7];
[WhiteKing -> 7]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 5 { // w right, b can castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 4];
[BlackPawnMoveDbl -> 4];
@@ -454,12 +446,11 @@
[BlackRightCastle -> 28];
[BlackKing -> 28]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 6 { // w no, b can castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 7];
[WhitePawnMoveDbl -> 7];
@@ -476,12 +467,11 @@
[WhiteQueen -> 7];
[WhiteKing -> 7]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 7 { // w no, b can castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 6];
[BlackPawnMoveDbl -> 6];
@@ -500,12 +490,11 @@
[BlackRightCastle -> 30];
[BlackKing -> 30]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 8 { // w can, b left castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 9];
[WhitePawnMoveDbl -> 9];
@@ -524,12 +513,11 @@
[WhiteRightCastle -> 15];
[WhiteKing -> 15]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 9 { // w can, b left castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 8];
[BlackPawnMoveDbl -> 8];
@@ -547,12 +535,11 @@
[BlackLeftCastle -> 24];
[BlackKing -> 24]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 10 { // w left, b left castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 11];
[WhitePawnMoveDbl -> 11];
@@ -570,12 +557,11 @@
[WhiteLeftCastle -> 15];
[WhiteKing -> 15]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 11 { // w left, b left castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 10];
[BlackPawnMoveDbl -> 10];
@@ -593,12 +579,11 @@
[BlackLeftCastle -> 26];
[BlackKing -> 26]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 12 { // w right, b left castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 13];
[WhitePawnMoveDbl -> 13];
@@ -616,12 +601,11 @@
[WhiteRightCastle -> 15];
[WhiteKing -> 15]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 13 { // w right, b left castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 12];
[BlackPawnMoveDbl -> 12];
@@ -639,12 +623,11 @@
[BlackLeftCastle -> 28];
[BlackKing -> 28]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 14 { // w no, b left castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 15];
[WhitePawnMoveDbl -> 15];
@@ -661,12 +644,11 @@
[WhiteQueen -> 15];
[WhiteKing -> 15]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 15 { // w no, b left castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 14];
[BlackPawnMoveDbl -> 14];
@@ -684,12 +666,11 @@
[BlackLeftCastle -> 30];
[BlackKing -> 30]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 16 { // w can, b right castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 17];
[WhitePawnMoveDbl -> 17];
@@ -708,12 +689,11 @@
[WhiteRightCastle -> 23];
[WhiteKing -> 23]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 17 { // w can, b right castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 16];
[BlackPawnMoveDbl -> 16];
@@ -731,12 +711,11 @@
[BlackRightCastle -> 24];
[BlackKing -> 24]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 18 { // w left, b right castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 19];
[WhitePawnMoveDbl -> 19];
@@ -754,12 +733,11 @@
[WhiteLeftCastle -> 23];
[WhiteKing -> 23]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 19 { // w left, b right castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 18];
[BlackPawnMoveDbl -> 18];
@@ -777,12 +755,11 @@
[BlackRightCastle -> 26];
[BlackKing -> 26]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 20 { // w right, b right castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 21];
[WhitePawnMoveDbl -> 21];
@@ -800,12 +777,11 @@
[WhiteRightCastle -> 23];
[WhiteKing -> 23]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 21 { // w right, b right castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 20];
[BlackPawnMoveDbl -> 20];
@@ -823,12 +799,11 @@
[BlackRightCastle -> 28];
[BlackKing -> 28]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 22 { // w no, b right castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 23];
[WhitePawnMoveDbl -> 23];
@@ -845,12 +820,11 @@
[WhiteQueen -> 23];
[WhiteKing -> 23]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 23 { // w no, b right castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 22];
[BlackPawnMoveDbl -> 22];
@@ -868,12 +842,11 @@
[BlackRightCastle -> 30];
[BlackKing -> 30]
}
- LOC 24 { // w can, b no castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
+LOC 24 { // w can, b no castle
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 25];
[WhitePawnMoveDbl -> 25];
@@ -892,12 +865,11 @@
[WhiteRightCastle -> 31];
[WhiteKing -> 31]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 25 { // w can, b no castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 24];
[BlackPawnMoveDbl -> 24];
@@ -914,12 +886,11 @@
[BlackQueen -> 24];
[BlackKing -> 24]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 26 { // w left, b no castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 27];
[WhitePawnMoveDbl -> 27];
@@ -937,12 +908,11 @@
[WhiteLeftCastle -> 31];
[WhiteKing -> 31]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 27 { // w left, b no castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 26];
[BlackPawnMoveDbl -> 26];
@@ -959,12 +929,11 @@
[BlackQueen -> 26];
[BlackKing -> 26]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 28 { // w right, b no castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 29];
[WhitePawnMoveDbl -> 29];
@@ -982,12 +951,11 @@
[WhiteRightCastle -> 31];
[WhiteKing -> 31]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 29 { // w right, b no castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 28];
[BlackPawnMoveDbl -> 28];
@@ -1004,12 +972,11 @@
[BlackQueen -> 28];
[BlackKing -> 28]
}
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
LOC 30 { // w no, b no castle
- PLAYER 1
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 1 {
+ PAYOFF :(CheckB()) - :(CheckW())
MOVES
[WhitePawnMove -> 31];
[WhitePawnMoveDbl -> 31];
@@ -1026,12 +993,11 @@
[WhiteQueen -> 31];
[WhiteKing -> 31]
}
+ PLAYER 2 { PAYOFF :(CheckW()) - :(CheckB()) }
+}
LOC 31 { // w no, b no castle
- PLAYER 2
- PAYOFF {
- 1: :(CheckB()) - :(CheckW());
- 2: :(CheckW()) - :(CheckB())
- }
+ PLAYER 2 {
+ PAYOFF :(CheckW()) - :(CheckB())
MOVES
[BlackPawnMove -> 30];
[BlackPawnMoveDbl -> 30];
@@ -1048,8 +1014,9 @@
[BlackQueen -> 30];
[BlackKing -> 30]
}
-MODEL [ | |
- ] "
+ PLAYER 1 { PAYOFF :(CheckB()) - :(CheckW()) }
+}
+MODEL [ | | ] "
... ... ... ...
bR bN.bB bQ.bK bB.bN bR.
... ... ... ...
Modified: trunk/Toss/examples/Connect4.toss
===================================================================
--- trunk/Toss/examples/Connect4.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Connect4.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -18,23 +18,24 @@
[a | Q:1 {} | - ] -> [a | Q (a) | - ] emb Q, P
pre not EmptyUnder (a) and not WinP()
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
+ PLAYER 1 {
+ PAYOFF :(WinP()) - :(WinQ())
+ MOVES [Cross -> 1]
}
- MOVES [Cross -> 1]
+ PLAYER 2 {
+ PAYOFF :(WinQ()) - :(WinP())
+ }
}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
+ PLAYER 1 {
+ PAYOFF :(WinP()) - :(WinQ())
}
- MOVES [Circle -> 0]
+ PLAYER 2 {
+ PAYOFF :(WinQ()) - :(WinP())
+ MOVES [Circle -> 0]
+ }
}
-MODEL [ | P:1 {}; Q:1 {} |
- ] "
+MODEL [ | P:1 {}; Q:1 {} | ] "
... ... ...
... ... ...
... ... ... ...
Modified: trunk/Toss/examples/Entanglement.toss
===================================================================
--- trunk/Toss/examples/Entanglement.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Entanglement.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -25,22 +25,17 @@
x { a1->-10., a2->10. }; y { a1->-10., a2->-10. } ]
emb R, C
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: 0.;
- 2: 0.
+ PLAYER 1 {
+ PAYOFF 0.
+ MOVES [Follow -> 1]; [Wait -> 1]
}
- MOVES
- [Follow -> 1];
- [Wait -> 1]
- }
+ PLAYER 2 { PAYOFF 0. }
+}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: 1.;
- 2: -1.
+ PLAYER 1 { PAYOFF 1. }
+ PLAYER 2 {
+ PAYOFF -1.
+ MOVES [Run -> 0]
}
- MOVES
- [Run -> 0]
}
MODEL [ d4, a2, a1, b1, b2, e4, c2, c1, f4, d2, d1, f1, f2, g1, g2, h1, h2, e1, e2, i1, i2 | C { (d4); (e4); (f4) }; E { (a2, a1); (a2, b2); (a1, a2); (a1, b1); (b1, a1); (b1, b2); (b1, c1); (b2, a2); (b2, b1); (b2, c2); (c2, b2); (c2, c1); (c2, d2); (c1, b1); (c1, c2); (c1, d1); (d2, c2); (d2, d1); (d2, e1); (d1, c1); (d1, d2); (d1, e2); (f1, f2); (f1, g1); (f1, e1); (f2, f1); (f2, g2); (f2, e2); (g1, f1); (g1, g2); (g1, h1); (g2, f2); (g2, g1); (g2, h2); (h1, g1); (h1, h2); (h1, i1); (h2, g2); (h2, h1); (h2, i2); (e1, d2); (e1, f1); (e1, e2); (e2, d1); (e2, f2); (e2, e1); (i1, h1); (i1, i2); (i2, h2); (i2, i1) }; R { (e1) }; _opt_C:1 { } | vx { d4->0., a2->0., a1->0., b1->0., b2->0., e4->0., c2->0., c1->0., f4->0., d2->0., d1->0., f1->0., f2->0., g1->0., g2->0., h1->0., h2->0., e1->0., e2->0., i1->0., i2->0. }; vy { d4->0., a2->0., a1->0., b1->0., b2->0., e4->0., c2->0., c1->0., f4->0., d2->0., d1->0., f1->0., f2->0., g1->0., g2->0., h1->0., h2->0., e1->0., e2->0., i1->0., i2->0. }; x { d4->100., a2->-50., a1->-50., b1->0., b2->0., e4->150., c2->50., c1->50., f4->200., d2->100., d1->100., f1->200., f2->200., g1->250., g2->250., h1->300., h2->300., e1->150., e2->150., i1->350., i2->350. }; y { d4->-150., a2->-100., a1->-50., b1->-50., b2->-100., e4->0., c2->-100., c1->-50., f4->-150., d2->-100., d1->-50., f1->-100., f2->-50., g1->-100., g2->-50., h1->-100., h2->-50., e1->-100., e2->-50., i1->-100., i2->-50. } ]
Modified: trunk/Toss/examples/Gomoku.toss
===================================================================
--- trunk/Toss/examples/Gomoku.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Gomoku.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -1,5 +1,5 @@
PLAYERS 1, 2
-DATA r1: circle, r2: line, adv_ratio: 5, depth: 2
+DATA rCircle: circle, rCross: line, adv_ratio: 5, depth: 2
REL Row5 (x, y, z, v, w) = R(x, y) and R(y, z) and R(z, v) and R(v, w)
REL Col5 (x, y, z, v, w) = C(x, y) and C(y, z) and C(z, v) and C(v, w)
REL DiagA5 (x, y, z, v, w) =
@@ -23,23 +23,20 @@
[a1 | P:1 {}; Q (a1) | - ]
emb Q, P pre not WinP()
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
+ PLAYER 1 {
+ PAYOFF :(WinP()) - :(WinQ())
+ MOVES [Cross -> 1]
}
- MOVES [Cross -> 1]
+ PLAYER 2 { PAYOFF :(WinQ()) - :(WinP()) }
}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
+ PLAYER 1 { PAYOFF :(WinP()) - :(WinQ()) }
+ PLAYER 2 {
+ PAYOFF :(WinQ()) - :(WinP())
+ MOVES [Circle -> 0]
}
- MOVES [Circle -> 0]
}
-MODEL [ | P:1 {}; Q:1 {} |
- ] "
+MODEL [ | P:1 {}; Q:1 {} | ] "
... ... ... ...
... ... ... ...
... ... ... ...
Modified: trunk/Toss/examples/Gomoku19x19.toss
===================================================================
--- trunk/Toss/examples/Gomoku19x19.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Gomoku19x19.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -1,158 +1,42 @@
PLAYERS 1, 2
-RULE 1:
- [a1 | P:1 {}; Q:1 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}] ->
- [a1 | P (a1); Q:1 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
- emb Q, P
- pre
- not
- ex v, w, x, y, z
- (Q(v) and Q(w) and Q(x) and Q(y) and Q(z) and
- (R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- ex r, s, t, u
- (R(v, r) and C(r, w) and R(w, s) and C(s, x) and R(x, t) and C(t, y) and
- R(y, u) and
- C(u, z)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y, t) and
- R(y, u) and
- C(z, u))))
-RULE 2:
- [a1 | P:1 {}; Q:1 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}] ->
- [a1 | P:1 {}; Q (a1) | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
- emb Q, P
- pre
- not
- ex v, w, x, y, z
- (P(v) and P(w) and P(x) and P(y) and P(z) and
- (R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- ex r, s, t, u
- (R(v, r) and C(r, w) and R(w, s) and C(s, x) and R(x, t) and C(t, y) and
- R(y, u) and
- C(u, z)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y, t) and
- R(y, u) and
- C(z, u))))
+DATA rCircle: circle, rCross: line, adv_ratio: 5, depth: 2
+REL Row5 (x, y, z, v, w) = R(x, y) and R(y, z) and R(z, v) and R(v, w)
+REL Col5 (x, y, z, v, w) = C(x, y) and C(y, z) and C(z, v) and C(v, w)
+REL DiagA5 (x, y, z, v, w) =
+ DiagA(x, y) and DiagA(y, z) and DiagA(z, v) and DiagA(v, w)
+REL DiagB5 (x, y, z, v, w) =
+ DiagB(x, y) and DiagB(y, z) and DiagB(z, v) and DiagB(v, w)
+REL Conn5 (x, y, z, v, w) =
+ Row5(x,y,z,v,w) or Col5(x,y,z,v,w) or DiagA5(x,y,z,v,w) or DiagB5(x,y,z,v,w)
+REL WinQ() =
+ ex x,y,z,v,w (Q(x) and Q(y) and Q(z) and Q(v) and Q(w) and Conn5(x,y,z,v,w))
+REL WinP() =
+ ex x,y,z,v,w (P(x) and P(y) and P(z) and P(v) and P(w) and Conn5(x,y,z,v,w))
+RULE Cross:
+ [a1 | P:1 {}; Q:1 {} | - ]
+ ->
+ [a1 | P (a1); Q:1 {} | - ]
+ emb Q, P pre not WinQ()
+RULE Circle:
+ [a1 | P:1 {}; Q:1 {} | - ]
+ ->
+ [a1 | P:1 {}; Q (a1) | - ]
+ emb Q, P pre not WinP()
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1:
- :(
- ex v, w, x, y, z
- (P(v) and P(w) and P(x) and P(y) and P(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- ) +
- -1. *
- :(
- ex v, w, x, y, z
- (Q(v) and Q(w) and Q(x) and Q(y) and Q(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- );
- 2:
- :(
- ex v, w, x, y, z
- (Q(v) and Q(w) and Q(x) and Q(y) and Q(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- ) +
- -1. *
- :(
- ex v, w, x, y, z
- (P(v) and P(w) and P(x) and P(y) and P(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- )
- }
- MOVES [1 -> 1]
- }
+ PLAYER 1 {
+ PAYOFF :(WinP()) - :(WinQ())
+ MOVES [Cross -> 1]
+ }
+ PLAYER 2 { PAYOFF :(WinQ()) - :(WinP()) }
+}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1:
- :(
- ex v, w, x, y, z
- (P(v) and P(w) and P(x) and P(y) and P(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- ) +
- -1. *
- :(
- ex v, w, x, y, z
- (Q(v) and Q(w) and Q(x) and Q(y) and Q(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- );
- 2:
- :(
- ex v, w, x, y, z
- (Q(v) and Q(w) and Q(x) and Q(y) and Q(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- ) +
- -1. *
- :(
- ex v, w, x, y, z
- (P(v) and P(w) and P(x) and P(y) and P(z) and
- (C(v, w) and C(w, x) and C(x, y) and C(y, z) or
- R(v, w) and R(w, x) and R(x, y) and R(y, z) or
- ex r, s, t, u
- (C(r, w) and C(s, x) and C(t, y) and C(u, z) and R(v, r) and R(w,
- s) and R(x, t) and R(y, u)) or
- ex r, s, t, u
- (R(v, r) and C(w, r) and R(w, s) and C(x, s) and R(x, t) and C(y,
- t) and R(y, u) and C(z, u))))
- )
- }
- MOVES [2 -> 0]
- }
-MODEL [ | P:1 {}; Q:1 {} |
- ] "
+ PLAYER 1 { PAYOFF :(WinP()) - :(WinQ()) }
+ PLAYER 2 {
+ PAYOFF :(WinQ()) - :(WinP())
+ MOVES [Circle -> 0]
+ }
+}
+MODEL [ | P:1 {}; Q:1 {} | ] "
.......................................................
. . . . . . . . . . . . . . . . . . .
Modified: trunk/Toss/examples/Pawn-Whopping.toss
===================================================================
--- trunk/Toss/examples/Pawn-Whopping.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Pawn-Whopping.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -135,22 +135,22 @@
...?
" emb wP, bP pre not WhiteEnds()
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: :(WhiteEnds()) - :(BlackEnds());
- 2: :(BlackEnds()) - :(WhiteEnds())
+ PLAYER 1 {
+ PAYOFF :(WhiteEnds()) - :(BlackEnds())
+ MOVES
+ [WhiteBeat -> 1]; [WhiteMove -> 1]; [WhiteMoveTwo -> 1];
+ [WhiteRightPassant -> 1]; [WhiteLeftPassant -> 1]
}
- MOVES [WhiteBeat -> 1]; [WhiteMove -> 1]; [WhiteMoveTwo -> 1];
- [WhiteRightPassant -> 1]; [WhiteLeftPassant -> 1]
+ PLAYER 2 { PAYOFF :(BlackEnds()) - :(WhiteEnds()) }
}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: :(WhiteEnds()) - :(BlackEnds());
- 2: :(BlackEnds()) - :(WhiteEnds())
+ PLAYER 1 { PAYOFF :(WhiteEnds()) - :(BlackEnds()) }
+ PLAYER 2 {
+ PAYOFF :(BlackEnds()) - :(WhiteEnds())
+ MOVES
+ [BlackBeat -> 0]; [BlackMove -> 0]; [BlackMoveTwo -> 0];
+ [BlackRightPassant -> 0]; [BlackLeftPassant -> 0]
}
- MOVES [BlackBeat -> 0]; [BlackMove -> 0]; [BlackMoveTwo -> 0];
- [BlackRightPassant -> 0]; [BlackLeftPassant -> 0]
}
MODEL [ | | ] "
... ... ... ...
Modified: trunk/Toss/examples/Tic-Tac-Toe.toss
===================================================================
--- trunk/Toss/examples/Tic-Tac-Toe.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/Tic-Tac-Toe.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -15,23 +15,16 @@
RULE Circle:
[a | Q:1 {} | - ] -> [a | Q (a) | - ] emb Q, P pre not WinP()
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
- }
- MOVES [Cross -> 1]
+ PLAYER 1 { PAYOFF :(WinP()) - :(WinQ())
+ MOVES [Cross -> 1] }
+ PLAYER 2 { PAYOFF :(WinQ()) - :(WinP()) }
}
LOC 1 {
- PLAYER 2
- PAYOFF {
- 1: :(WinP()) - :(WinQ());
- 2: :(WinQ()) - :(WinP())
- }
- MOVES [Circle -> 0]
+ PLAYER 1 { PAYOFF :(WinP()) - :(WinQ()) }
+ PLAYER 2 { PAYOFF :(WinQ()) - :(WinP())
+ MOVES [Circle -> 0] }
}
-MODEL [ | P:1 {}; Q:1 {} |
- ] "
+MODEL [ | P:1 {}; Q:1 {} | ] "
. . .
Modified: trunk/Toss/examples/bounce.toss
===================================================================
--- trunk/Toss/examples/bounce.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/bounce.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -18,13 +18,8 @@
(-1. * 0.)) + (-1. * 0.)) < 0)))
post true
LOC 0 {
- PLAYER 1
- PAYOFF {
- 1: 0.;
- 2: 0.
- }
- MOVES
- [Move, t: 3. -- 3. -> 0]
+ PLAYER 1 { PAYOFF 0. MOVES [Move, t: 3. -- 3. -> 0] }
+ PLAYER 2 { PAYOFF 0. }
}
MODEL [ 1, 2, 3 | G { (2, 3); (3, 2) } |
vx { 1->0., 2->0., 3->0. }; vy { 1->27., 2->0., 3->0. };
Modified: trunk/Toss/examples/rewriting_example.toss
===================================================================
--- trunk/Toss/examples/rewriting_example.toss 2011-04-16 14:56:40 UTC (rev 1413)
+++ trunk/Toss/examples/rewriting_example.toss 2011-04-16 21:05:20 UTC (rev 1414)
@@ -35,7 +35,10 @@
x(3) = 2. * x(2) - x(1);
x(2) = x(2);
x(1) = x(1)
-LOC 0 {PLAYER 1 PAYOFF {1: 0.; 2: 0.} MOVES [Rewrite, t: 1. -- 1. -> 0]}
+LOC 0 {
+ PLAYER 1 { PAYOFF 0. MOVES [Rewrite, t: 1. -- 1. -> 0] }
+ PLAYER 2 { PAYOFF 0. }
+}
MODEL
[1, 2, 3, 4, 5, 6, 7, 9, 10, 11 |
R (1, 2);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|