Syzygy Endgame Explorer v. 0.2 has been released!

Besides bugfixes, it includes some new features like searching for symmetrical positions. SEE now also accepts a pgn file as an input so it can search e.g. the van der Heijden database for anticipations.

You can find the download link here.

Added new features:

- Comments after any line are allowed
- Any "sq1-sq2" combination (e.g. "a1-a4", "a1-e1", or "a1-c3") can be used to give a set of squares along a file, rank or diagonal
- A rectangular region can be given by four squares (e.g. "c5-f5-f3-c3")
- Use "~e4", "~fileD", "~rank4" to exclude some squares
- The [BlackKing], [BlackQueen], ..., [WhitePawn] keywords now can use all square collections just like [Piece1], ..., [Piece7]. Additionally, they can use the initial squares of the pieces ("sq1", "sq2",..., "sq7" or "~sq1", "~sq2", ..., "~sq7")
- New keyword [Symmetry] for setting various symmetry axes
- New keywords [Identical] and [Different] . These are replacing the functionality of [RememberFEN], [RepeatPosition] and [NotRepeatPosition] which were removed (see the modified Example 22).
- [InputTXT] was changed to [Input] and now it accepts both text (FEN lists) and pgn files.
- Now [FEN] and [FENList] accepts both stripped and standard FENs
- New [Eval] values like "not_draw" and "loss/loss"
- [OutputScreen "diag"] will output the found positions not only with FENs but also in ASCII diagrams

**Example 28**

******ex28.txt*******

[Tablebase "KPkp"]

[Position "1"]

[Eval "loss/loss"] //full point mutual zugzwangs

********************

**Example 29**

******ex29.txt*******

[Tablebase "KPkp"]

[OutputScreen "diag"]

[Position "1w"]

[Eval "win"]

[OnlyMove "yes"]

[MovedPiece "K"]

[Capture "no"]

[Check "no"]

[Position "1b"]

[Position "2w"]

[Eval "win"]

[OnlyMove "yes"]

[MovedPiece "K"]

[Capture "no"]

[Position "2b"]

[WhiteKing "sq1"] //Switchback

********************

**1. Kc6! a5 2. Kb5! +-**

**Example 30**

******ex30.txt*******

//Place interchange

[Tablebase "KPkp"]

[Position "1w"]

[Piece1 "half"]

[Eval "win"]

[OnlyMove "yes"]

[Position "1b"]

[Position "2w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "2b"]

[Position "3w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "3b"]

[WhiteKing "sq2"]

[WhitePawn "sq1"]

********************

**1. Kb5! e5 2. c5 e4 3. Kc4! +-** Compared to the initial position, the white king and pawn have switched positions.

**Example 31**

******ex31.txt*******

//During the solution, all white pieces should move.

[Tablebase "KPk"]

[Position "1w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "1b"]

[Position "2w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "2b"]

[WhiteKing "~sq1"] The white king has left its initial square.

[WhitePawn "~sq2"] The white pawn also has left its initial square.

********************

**1. Kg7! Kf5 2. h5 +-**

**Example 32**

******ex32.txt*******

//Duplex Excelsior

[Tablebase "KPkp"]

[Position "1w"]

[Piece2 "rank2"]

[Symmetry "d5-e5-e4-d4"] //We are looking for a point symmetric position.

[Eval "win"]

[OnlyMove "yes"]

[Position "1b"]

[Position "2w"]

[WhitePawn "rank4"]

[Eval "win"]

[OnlyMove "yes"]

[Position "2b"]

[Position "3w"]

[WhitePawn "rank5"]

[Eval "win"]

[OnlyMove "yes"]

[Position "3b"]

[Position "4w"]

[WhitePawn "rank6"]

[Eval "win"]

[OnlyMove "yes"]

[Position "4b"]

[Position "5w"]

[WhitePawn "rank7"]

[Eval "win"]

[OnlyMove "yes"]

[Position "5b"]

[WhiteQueen "rank8"] //Excelsior to queen

********************

White to move:

**1. b4 g5 2. b5 g4 3. b6 g3 4. b7 g2 5. b8=Q g1=Q 6. Qh8+ Kg6 7. Qg8+ +-**

Black to move:

**1... g5 2. b4 g4 3. b5 g3 4. b6 g2 5. b7 g1=Q 6. b8=Q Qa1+ 7. Kb3 Qb1+ -+**

**Example 33**

******ex33.txt*******

// Finding Saavedra

[Tablebase "KPkr"]

[Input "heijden.pgn"]

[Position "1w"]

[Piece1 "b6"]

[Piece2 "c6"]

[Piece3 "a1"]

[Piece4 "d5"]

********************

With ordinary pgn files, only the initial positions will be searched. One needs a specially prepared pgn file which can be searched everywhere. This has a fen string added as a comment after each move. Use pgn-extract with --fencomments and --commentlines to prepare such a pgn file.

[Event "Glasgow Weekly Citizen#414 (m)"]

[Site "?"]

[Date "1895.05.04"]

[Round "?"]

[White "Saavedra=F Barbier=G"]

[Black "(+0300.10b6a1)"]

[Result "1-0"]

[EventDate "1895.??.??"]

[SetUp "1"]

[FEN "8/8/1KP5/3r4/8/8/8/k7 w - - 0 1"]

[PlyCount "13"]

1. c7

{ 8/2P5/1K6/3r4/8/8/8/k7 b - - 0 1 }

1... Rd6+

{ 8/2P5/1K1r4/8/8/8/8/k7 w - - 1 2 }

2. Kb5

{ 8/2P5/3r4/1K6/8/8/8/k7 b - - 2 2 }

(2. Kb7 $2

{ 8/1KP5/3r4/8/8/8/8/k7 b - - 2 2 }

2... Rd7 $11

{ 8/1KPr4/8/8/8/8/8/k7 w - - 3 3 }

) 2... Rd5+

{ 8/2P5/8/1K1r4/8/8/8/k7 w - - 3 3 }

3. Kb4

{ 8/2P5/8/3r4/1K6/8/8/k7 b - - 4 3 }

3... Rd4+

{ 8/2P5/8/8/1K1r4/8/8/k7 w - - 5 4 }

4. Kb3

{ 8/2P5/8/8/3r4/1K6/8/k7 b - - 6 4 }

(4. Kc3

{

{ 8/2P5/8/8/3r4/2K5/8/k7 b - - 6 4 }

4... Rd1

{ 8/2P5/8/8/8/2K5/8/k2r4 w - - 7 5 }

5. Kc2

{ 8/2P5/8/8/8/8/2K5/k2r4 b - - 8 5 }

) 4... Rd3+

{ 8/2P5/8/8/8/1K1r4/8/k7 w - - 7 5 }

5. Kc2

{ 8/2P5/8/8/8/3r4/2K5/k7 b - - 8 5 }

5... Rd4

{ 8/2P5/8/8/3r4/8/2K5/k7 w - - 9 6 }

6. c8=R $1

{ 2R5/8/8/8/3r4/8/2K5/k7 b - - 0 6 }

(6. c8=Q $2

{ 2Q5/8/8/8/3r4/8/2K5/k7 b - - 0 6 }

6... Rc4+ $1

{ 2Q5/8/8/8/2r5/8/2K5/k7 w - - 1 7 }

7. Qxc4

{ stalemate }

{ 8/8/8/8/2Q5/8/2K5/k7 b - - 0 7 }

) 6... Ra4

{ 2R5/8/8/8/r7/8/2K5/k7 w - - 1 7 }

7. Kb3

{ 2R5/8/8/8/r7/1K6/8/k7 b - - 2 7 }

1-0

With a file prepared like this, the search will find two additional examples in the van der Heijden database where the Saavedra position was reached during play.

******ex34.txt*******// Finding the Conrady positions

[Tablebase "KRknp"]

[OutputPGN "KRknp_D23.pgn"]

Move 1:

[Position "1w"]

[Piece5 "h6"]

[Eval "win"]

[OnlyMove "yes"]

[Position "1b"]

[Eval "loss"]

Move 2:

[Position "2w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "2b"]

[Eval "loss"]

Move 3:

[Position "3w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "3b"]

[Eval "loss"]

Move 4:

[Position "4w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "4b"]

[Eval "loss"]

Move 5:

[Position "5w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "5b"]

[Eval "loss"]

Move 6:

[Position "6w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "6b"]

[Eval "loss"]

Move 7:

[Position "7w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "7b"]

[Eval "loss"]

Move 8:

[Position "8w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "8b"]

[Eval "loss"]

Move 9:

[Position "9w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "9b"]

[Eval "loss"]

Move 10:

[Position "10w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "10b"]

[Eval "loss"]

Move 11:

[Position "11w"]

[Piece1 "half"]

[Eval "win"]

[OnlyMove "yes"]

[Position "11b"]

[Eval "loss"]

Move 12:

[Position "12w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "12b"]

[Eval "loss"]

Move 13:

[Position "13w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "13b"]

[Eval "loss"]

Move 14:

[Position "14w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "14b"]

[Eval "loss"]

Move 15:

[Position "15w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "15b"]

[Eval "loss"]

Move 16:

[Position "16w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "16b"]

[Eval "loss"]

Move 17:

[Position "17w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "17b"]

[Eval "loss"]

Move 18:

[Position "18w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "18b"]

[Eval "loss"]

Move 19:

[Position "19w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "19b"]

[Eval "loss"]

Move 20:

[Position "20w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "20b"]

[Eval "loss"]

Move 21:

[Position "21w"]

[Piece1 "half"]

[Eval "win"]

[OnlyMove "yes"]

[Position "21b"]

[Eval "loss"]

Move 22:

[Position "22w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "22b"]

[Eval "loss"]

Move 23:

[Position "23w"]

[Eval "win"]

[OnlyMove "yes"]

[Position "23b"]

[Eval "loss"]

********************

6 positions were found:

8/8/7p/7n/3R4/8/k7/2K5 w - - 0 1

8/8/7p/7n/3R4/8/k7/3K4 w - - 0 1

8/8/7p/7n/k7/8/2K5/3R4 w - - 0 1

8/8/7p/7n/k7/8/2KR4/8 w - - 0 1

8/8/7p/7n/k7/3R4/2K5/8 w - - 0 1

3R4/8/7p/7n/k7/8/2K5/8 w - - 0 1

One of them is what Helmut Conrady has published in 2003 *(Computer Schach und Spiele, Vol. 2, No. iv-v)* as being the longest AUM (absolutely unique move) sequence in the tablebases up to 5 men:

**1. Rd4+ Ka3 2. Kd3 Kb3 3. Rd6 Kb4 4. Kd4 Nf4 5. Rb6+ Ka5 6. Rf6 Ne2+ 7. Kc4 Ng3 8. Rg6 Ne4 9. Kd4 Nd2 10. Rg2 Nf3+ 11. Kc5 Ka6 12. Rg6+ Kb7 13. Kd5 h5 14. Rh6 h4 15. Rf6 Ne1 16. Rf1 Nc2 17. Rb1+ Ka6 18. Rb2 Ne1 19. Ke4 h3 20. Rb1 Nc2 21. Kd3 Na3 22. Ra1 h2 23. Rxa3+ +-**