[Toss-devel-svn] SF.net SVN: toss:[1283] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
|
From: <luk...@us...> - 2011-01-21 20:46:19
|
Revision: 1283
http://toss.svn.sourceforge.net/toss/?rev=1283&view=rev
Author: lukaszkaiser
Date: 2011-01-21 20:46:12 +0000 (Fri, 21 Jan 2011)
Log Message:
-----------
Extending structure parser to add positions in line when requested, using it to shorten game descriptions.
Modified Paths:
--------------
trunk/Toss/Solver/Structure.ml
trunk/Toss/Solver/Structure.mli
trunk/Toss/Solver/StructureParser.mly
trunk/Toss/Solver/StructureTest.ml
trunk/Toss/examples/Breakthrough.toss
trunk/Toss/examples/Checkers.toss
trunk/Toss/examples/Chess.toss
trunk/Toss/examples/Gomoku.toss
trunk/Toss/examples/Pawns.toss
trunk/Toss/examples/Tic-Tac-Toe.toss
Modified: trunk/Toss/Solver/Structure.ml
===================================================================
--- trunk/Toss/Solver/Structure.ml 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/Solver/Structure.ml 2011-01-21 20:46:12 UTC (rev 1283)
@@ -312,6 +312,14 @@
| None -> empty_structure ()
| Some s -> s in
add_from_lists struc els rels funs
+
+let create_from_lists_position ?struc els rels =
+ let s = create_from_lists ?struc els rels [] in
+ let elems = Elems.elements s.elements in
+ let zero = List.map (fun e -> (e, 0.)) elems in
+ let next = List.map (fun e -> (e, cBOARD_DX*. (float_of_int (e-1)))) elems in
+ let afuns s (fn, asg) = add_funs s fn asg in
+ List.fold_left afuns s [("x", next); ("y", zero); ("vx", zero); ("vy", zero)]
(* ---------- REMOVING RELATION TUPLES AND ELEMENTS FROM A STRUCTURE -------- *)
Modified: trunk/Toss/Solver/Structure.mli
===================================================================
--- trunk/Toss/Solver/Structure.mli 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/Solver/Structure.mli 2011-01-21 20:46:12 UTC (rev 1283)
@@ -172,7 +172,10 @@
(string * int option * string array list) list ->
(string * (string * float) list) list -> structure
+val create_from_lists_position : ?struc:structure -> string list ->
+ (string * int option * string array list) list -> structure
+
(** {2 Removing relation tuples and elements from a structure} *)
(** Remove the tuple [tp] from relation [rn] in structure [struc]. May
Modified: trunk/Toss/Solver/StructureParser.mly
===================================================================
--- trunk/Toss/Solver/StructureParser.mly 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/Solver/StructureParser.mly 2011-01-21 20:46:12 UTC (rev 1283)
@@ -69,6 +69,12 @@
{ fun struc ->
create_from_lists ~struc elems rels funs }
| OPENSQ
+ elems = separated_list (COMMA, id_int)
+ MID
+ rels = separated_list (SEMICOLON, rel_expr)
+ MID MINUS CLOSESQ
+ { fun struc -> create_from_lists_position ~struc elems rels }
+ | OPENSQ
separated_list (COMMA, id_int)
MID
separated_list (SEMICOLON, rel_expr)
Modified: trunk/Toss/Solver/StructureTest.ml
===================================================================
--- trunk/Toss/Solver/StructureTest.ml 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/Solver/StructureTest.ml 2011-01-21 20:46:12 UTC (rev 1283)
@@ -54,6 +54,9 @@
~result:"[a | P (a) | f {a->1.3}]"
"[ a | P{a} | f { a-> 1.3 } ]";
test_parse
+ ~result:"[a | P (a) | vx {a->0.}; vy {a->0.}; x {a->0.}; y {a->0.}]"
+ "[ a | P{a} | - ]";
+ test_parse
~result:"[a, b, c | | f {a->1.3, b->2., c->2.}]"
"[ | | f { a-> 1.3, b->2, c->3.3 } ; f { c -> 2 } ]";
test_parse
Modified: trunk/Toss/examples/Breakthrough.toss
===================================================================
--- trunk/Toss/examples/Breakthrough.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Breakthrough.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -3,12 +3,10 @@
REL DiagW (x, y) = ex z (C(x, z) and (R(y, z) or R(z, y)))
REL DiagB (x, y) = ex z (C(z, x) and (R(y, z) or R(z, y)))
RULE WhiteDiag:
- [ a, b | W { a }; _opt_B { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | W { a }; _opt_B { b } | - ]
->
- [ a, b | W { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb W, B pre DiagW(a, b) and not ex x (B(x) and not ex y C(y, x))
+ [ a, b | W { b } | - ]
+ emb W, B pre DiagW(a, b) and not ex x (B(x) and not ex y C(y, x))
RULE WhiteStraight:
[ | B:1 {}; R:2 {} | ] "
@@ -23,12 +21,10 @@
.
" emb W, B pre not ex x (B(x) and not ex y C(y, x))
RULE BlackDiag:
- [ a, b | B { a }; _opt_W { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | B { a }; _opt_W { b } | - ]
->
- [ a, b | B { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb W, B pre DiagB(a, b) and not ex x (W(x) and not ex y C(x, y))
+ [ a, b | B { b } | - ]
+ emb W, B pre DiagB(a, b) and not ex x (W(x) and not ex y C(x, y))
RULE BlackStraight:
[ | R:2 {}; W:1 {} | ] "
Modified: trunk/Toss/examples/Checkers.toss
===================================================================
--- trunk/Toss/examples/Checkers.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Checkers.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -22,167 +22,67 @@
REL BJumps() = ex x, y ((B(x) and BeatsB (x, y)) or (Bq(x) and BeatsBX (x, y)))
REL WJumps() = ex x, y ((W(x) and BeatsW (x, y)) or (Wq(x) and BeatsWX (x, y)))
RULE RedMove:
- [ a, b | W { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | W { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (not IsEight(b)) and (DiagWa(a, b) or DiagWb(a, b))
- and not WJumps()
+ [ a, b | W { a } | - ] -> [ a, b | W { b } | - ] emb w, b
+ pre (not IsEight(b)) and (DiagWa(a, b) or DiagWb(a, b)) and not WJumps()
RULE WhiteMove:
- [ a, b | B { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | B { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (not IsFirst(b)) and (DiagBa(a, b) or DiagBb(a, b))
- and not BJumps()
+ [ a, b | B { a } | - ] -> [ a, b | B { b } | - ] emb w, b
+ pre (not IsFirst(b)) and (DiagBa(a, b) or DiagBb(a, b)) and not BJumps()
RULE RedPromote:
- [ a, b | W { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | Wq { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (IsEight(b)) and (DiagWa(a, b) or DiagWb(a, b))
- and not WJumps()
+ [ a, b | W { a } | - ] -> [ a, b | Wq { b } | - ] emb w, b
+ pre (IsEight(b)) and (DiagWa(a, b) or DiagWb(a, b)) and not WJumps()
RULE WhitePromote:
- [ a, b | B { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | Bq { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (IsFirst(b)) and (DiagBa(a, b) or DiagBb(a, b))
- and not BJumps()
+ [ a, b | B { a } | - ] -> [ a, b | Bq { b } | - ] emb w, b
+ pre (IsFirst(b)) and (DiagBa(a, b) or DiagBb(a, b)) and not BJumps()
RULE RedQMove:
- [ a, b | Wq { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | Wq { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre AnyDiag (a, b) and not WJumps()
+ [ a, b | Wq { a } | - ] -> [ a, b | Wq { b } | - ] emb w, b
+ pre AnyDiag (a, b) and not WJumps()
RULE WhiteQMove:
- [ a, b | Bq { a } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- ->
- [ a, b | Bq { b } |
- vx {a->0.,b->0.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre AnyDiag (a, b) and not BJumps()
+ [ a, b | Bq { a } | - ] -> [ a, b | Bq { b } | - ] emb w, b
+ pre AnyDiag (a, b) and not BJumps()
RULE RedBeat:
- [ a, b, c | W { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | W { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagW2 (a, b, c) and not IsEight(c)
- post not ex x, y (_new_W(x) and BeatsWX (x, y))
+ [ a, b, c | W { a }; b { b } | - ] -> [ a, b, c | W { c } | - ] emb w, b
+ pre DiagW2 (a, b, c) and not IsEight(c)
+ post not ex x, y (_new_W(x) and BeatsWX (x, y))
RULE WhiteBeat:
- [ a, b, c | B { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | B { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagB2 (a, b, c) and not IsFirst(c)
- post not ex x, y (_new_B(x) and BeatsBX (x, y))
+ [ a, b, c | B { a }; w { b } | - ] -> [ a, b, c | B { c } | - ] emb w, b
+ pre DiagB2 (a, b, c) and not IsFirst(c)
+ post not ex x, y (_new_B(x) and BeatsBX (x, y))
RULE RedBeatBoth:
- [ a, b, c | W { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | W { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre _new_W(a) and Diag2 (a, b, c) and not IsEight(c)
- post not ex x, y (_new_W(x) and BeatsWX (x, y))
+ [ a, b, c | W { a }; b { b } | - ] -> [ a, b, c | W { c } | - ] emb w, b
+ pre _new_W(a) and Diag2 (a, b, c) and not IsEight(c)
+ post not ex x, y (_new_W(x) and BeatsWX (x, y))
RULE WhiteBeatBoth:
- [ a, b, c | B { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | B { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre _new_B(a) and Diag2 (a, b, c) and not IsFirst(c)
- post not ex x, y (_new_B(x) and BeatsBX (x, y))
+ [ a, b, c | B { a }; w { b } | - ] -> [ a, b, c | B { c } | - ] emb w, b
+ pre _new_B(a) and Diag2 (a, b, c) and not IsFirst(c)
+ post not ex x, y (_new_B(x) and BeatsBX (x, y))
RULE RedBeatPromote:
- [ a, b, c | W { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | Wq { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagW2 (a, b, c) and IsEight(c)
+ [ a, b, c | W { a }; b { b } | - ] -> [ a, b, c | Wq { c } | - ] emb w, b
+ pre DiagW2 (a, b, c) and IsEight(c)
RULE WhiteBeatPromote:
- [ a, b, c | B { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | Bq { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagB2 (a, b, c) and IsFirst(c)
+ [ a, b, c | B { a }; w { b } | - ] -> [ a, b, c | Bq { c } | - ] emb w, b
+ pre DiagB2 (a, b, c) and IsFirst(c)
RULE RedBeatCont:
- [ a, b, c | W { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | W { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagW2 (a, b, c) and not IsEight(c)
- post ex x, y (_new_W(x) and BeatsWX (x, y))
+ [ a, b, c | W { a }; b { b } | - ] -> [ a, b, c | W { c } | - ] emb w, b
+ pre DiagW2 (a, b, c) and not IsEight(c)
+ post ex x, y (_new_W(x) and BeatsWX (x, y))
RULE WhiteBeatCont:
- [ a, b, c | B { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | B { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre DiagB2 (a, b, c) and not IsFirst(c)
- post ex x, y (_new_B(x) and BeatsBX (x, y))
+ [ a, b, c | B { a }; w { b } | - ] -> [ a, b, c | B { c } | - ] emb w, b
+ pre DiagB2 (a, b, c) and not IsFirst(c)
+ post ex x, y (_new_B(x) and BeatsBX (x, y))
RULE RedBeatBothCont:
- [ a, b, c | W { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | W { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre _new_W(a) and Diag2 (a, b, c) and not IsEight(c)
- post ex x, y (_new_W(x) and BeatsWX (x, y))
+ [ a, b, c | W { a }; b { b } | - ] -> [ a, b, c | W { c } | - ] emb w, b
+ pre _new_W(a) and Diag2 (a, b, c) and not IsEight(c)
+ post ex x, y (_new_W(x) and BeatsWX (x, y))
RULE WhiteBeatBothCont:
- [ a, b, c | B { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | B { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre _new_B(a) and Diag2 (a, b, c) and not IsFirst(c)
- post ex x, y (_new_B(x) and BeatsBX (x, y))
+ [ a, b, c | B { a }; w { b } | - ] -> [ a, b, c | B { c } | - ] emb w, b
+ pre _new_B(a) and Diag2 (a, b, c) and not IsFirst(c)
+ post ex x, y (_new_B(x) and BeatsBX (x, y))
RULE RedQBeat:
- [ a, b, c | Wq { a }; b { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | Wq { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre Diag2 (a, b, c)
+ [ a, b, c | Wq { a }; b { b } | - ] -> [ a, b, c | Wq { c } | - ] emb w, b
+ pre Diag2 (a, b, c)
RULE WhiteQBeat:
- [ a, b, c | Bq { a }; w { b } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- ->
- [ a, b, c | Bq { c } |
- vx {a->0.,b->0.,c->0.}; vy {a->0.,b->0.,c->0.};
- x {a->0.,b->10.,c->20.}; y {a->0.,b->10.,c->20.} ]
- emb w, b pre Diag2 (a, b, c)
+ [ 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 {
Modified: trunk/Toss/examples/Chess.toss
===================================================================
--- trunk/Toss/examples/Chess.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Chess.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -231,103 +231,75 @@
bQ
" emb w, b pre IsFirst(a1) post not CheckB()
RULE WhiteKnight:
- [ a, b | wN { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wN { a }; _opt_b { b } | - ]
->
- [ a, b | wN { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Knight(a, b) post not CheckW()
+ [ a, b | wN { b } | - ]
+ emb w, b pre Knight(a, b) post not CheckW()
RULE BlackKnight:
- [ a, b | bN { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bN { a }; _opt_w { b } | - ]
->
- [ a, b | bN { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Knight(a, b) post not CheckB()
+ [ a, b | bN { b } | - ]
+ emb w, b pre Knight(a, b) post not CheckB()
RULE WhiteBishop:
- [ a, b | wB { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wB { a }; _opt_b { b } | - ]
->
- [ a, b | wB { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Diag(a, b) post not CheckW()
+ [ a, b | wB { b } | - ]
+ emb w, b pre Diag(a, b) post not CheckW()
RULE BlackBishop:
- [ a, b | bB { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bB { a }; _opt_w { b } | - ]
->
- [ a, b | bB { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Diag(a, b) post not CheckB()
+ [ a, b | bB { b } | - ]
+ emb w, b pre Diag(a, b) post not CheckB()
RULE WhiteRook:
- [ a, b | wR { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wR { a }; _opt_b { b } | - ]
->
- [ a, b | wR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre not IsA1(a) and not IsH1(a) and Line(a, b) post not CheckW()
+ [ a, b | wR { b } | - ]
+ emb w, b pre not IsA1(a) and not IsH1(a) and Line(a, b) post not CheckW()
RULE WhiteRookA1:
- [ a, b | wR { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wR { a }; _opt_b { b } | - ]
->
- [ a, b | wR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre IsA1(a) and Line(a, b) post not CheckW()
+ [ a, b | wR { b } | - ]
+ emb w, b pre IsA1(a) and Line(a, b) post not CheckW()
RULE WhiteRookH1:
- [ a, b | wR { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wR { a }; _opt_b { b } | - ]
->
- [ a, b | wR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre IsH1(a) and Line(a, b) post not CheckW()
+ [ a, b | wR { b } | - ]
+ emb w, b pre IsH1(a) and Line(a, b) post not CheckW()
RULE BlackRook:
- [ a, b | bR { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bR { a }; _opt_w { b } | - ]
->
- [ a, b | bR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre not IsA8(a) and not IsH8(a) and Line(a, b) post not CheckB()
+ [ a, b | bR { b } | - ]
+ emb w, b pre not IsA8(a) and not IsH8(a) and Line(a, b) post not CheckB()
RULE BlackRookA8:
- [ a, b | bR { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bR { a }; _opt_w { b } | - ]
->
- [ a, b | bR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre IsA8(a) and Line(a, b) post not CheckB()
+ [ a, b | bR { b } | - ]
+ emb w, b pre IsA8(a) and Line(a, b) post not CheckB()
RULE BlackRookH8:
- [ a, b | bR { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bR { a }; _opt_w { b } | - ]
->
- [ a, b | bR { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre IsH8(a) and Line(a, b) post not CheckB()
+ [ a, b | bR { b } | - ]
+ emb w, b pre IsH8(a) and Line(a, b) post not CheckB()
RULE WhiteQueen:
- [ a, b | wQ { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wQ { a }; _opt_b { b } | - ]
->
- [ a, b | wQ { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (Line(a, b) or Diag(a, b)) post not CheckW()
+ [ a, b | wQ { b } | - ]
+ emb w, b pre (Line(a, b) or Diag(a, b)) post not CheckW()
RULE BlackQueen:
- [ a, b | bQ { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bQ { a }; _opt_w { b } | - ]
->
- [ a, b | bQ { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre (Line(a, b) or Diag(a, b)) post not CheckB()
+ [ a, b | bQ { b } | - ]
+ emb w, b pre (Line(a, b) or Diag(a, b)) post not CheckB()
RULE WhiteKing:
- [ a, b | wK { a }; _opt_b { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | wK { a }; _opt_b { b } | - ]
->
- [ a, b | wK { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Near(a, b) post not CheckW()
+ [ a, b | wK { b } | - ]
+ emb w, b pre Near(a, b) post not CheckW()
RULE BlackKing:
- [ a, b | bK { a }; _opt_w { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | bK { a }; _opt_w { b } | - ]
->
- [ a, b | bK { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb w, b pre Near(a, b) post not CheckB()
+ [ a, b | bK { b } | - ]
+ emb w, b pre Near(a, b) post not CheckB()
RULE WhiteLeftCastle:
[ | | ] "
... ... ...
Modified: trunk/Toss/examples/Gomoku.toss
===================================================================
--- trunk/Toss/examples/Gomoku.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Gomoku.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -15,14 +15,14 @@
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 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
+ [a1 | P:1 {}; Q:1 {} | - ]
->
- [a1 | P (a1); Q:1 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
+ [a1 | P (a1); Q:1 {} | - ]
emb Q, P pre not WinQ()
RULE Circle:
- [a1 | P:1 {}; Q:1 {} | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
+ [a1 | P:1 {}; Q:1 {} | - ]
->
- [a1 | P:1 {}; Q (a1) | vx {a1->0.}; vy {a1->0.}; x {a1->0.}; y {a1->0.}]
+ [a1 | P:1 {}; Q (a1) | - ]
emb Q, P pre not WinP()
LOC 0 {
PLAYER 1
Modified: trunk/Toss/examples/Pawns.toss
===================================================================
--- trunk/Toss/examples/Pawns.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Pawns.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -7,12 +7,10 @@
REL IsEight(x) = not ex z C(x, z)
REL IsSeventh(x) = ex y (C(x, y) and IsEight(y))
RULE WhiteDiag:
- [ a, b | W { a }; B { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | W { a }; B { b } | - ]
->
- [ a, b | W { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb W, B pre DiagW(a, b) and not ex x (B(x) and not ex y C(y, x))
+ [ a, b | W { b } | - ]
+ emb W, B pre DiagW(a, b) and not ex x (B(x) and not ex y C(y, x))
RULE WhiteStraight:
[ | B:1 {}; R:2 {} | ] "
@@ -76,12 +74,10 @@
....
" emb W, B
RULE BlackDiag:
- [ a, b | B { a }; W { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
+ [ a, b | B { a }; W { b } | - ]
->
- [ a, b | B { b } |
- vx {a->0.,b->10.}; vy {a->0.,b->0.}; x {a->0.,b->10.}; y {a->0.,b->10.} ]
- emb W, B pre DiagB(a, b) and not ex x (W(x) and not ex y C(x, y))
+ [ a, b | B { b } | - ]
+ emb W, B pre DiagB(a, b) and not ex x (W(x) and not ex y C(x, y))
RULE BlackStraight:
[ | R:2 {}; W:1 {} | ] "
Modified: trunk/Toss/examples/Tic-Tac-Toe.toss
===================================================================
--- trunk/Toss/examples/Tic-Tac-Toe.toss 2011-01-19 20:57:15 UTC (rev 1282)
+++ trunk/Toss/examples/Tic-Tac-Toe.toss 2011-01-21 20:46:12 UTC (rev 1283)
@@ -11,15 +11,9 @@
REL WinQ() = ex x, y, z (Q(x) and Q(y) and Q(z) and Conn3(x, y, z))
REL WinP() = ex x, y, z (P(x) and P(y) and P(z) and Conn3(x, y, z))
RULE Cross:
- [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 WinQ()
+ [a | P:1 {} | - ] -> [a | P (a) | - ] emb Q, P pre not WinQ()
RULE Circle:
- [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 WinP()
+ [a | Q:1 {} | - ] -> [a | Q (a) | - ] emb Q, P pre not WinP()
LOC 0 {
PLAYER 1
PAYOFF {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|