.\" ========================================================================
.\"
.IX Title "POLYGLOT 6"
-.TH POLYGLOT 6 "2009-01-14" "" ""
+.TH POLYGLOT 6 "2009-08-03" "" ""
.SH "NAME"
PolyGlot \- Winboard protocol to UCI protocol adapter
\- book engine for Polyglot books
- \- a collection of utilities for creating opening books
+ \- a collection of utilities for creating and analyzing opening books
\- a utility for analyzing epd files
\- a perft counter
.SH "SYNOPSIS"
.PP
polyglot merge-book \-in1 inputfile1 \-in2 inputfile2 [\-out outputfile]
.PP
+polyglot info-book [\-bin inputfile] [\-exact]
+.PP
+polyglot dump-book [\-bin inputfile] \-color color [\-out outputfile]
+.PP
polyglot [configfile] epd-test [\-epd inputfile] [\-min\-depth depth] [\-max\-depth depth] [\-max\-time time] [\-depth\-delta delta]
.PP
polyglot perft [\-fen fen] [\-max\-depth depth]
by their own GUIs.
.PP
PolyGlot can compile a pgn file into a binary PolyGlot book and furthermore
-it can merge two such binary books into a third one.
+it can merge two such binary books into a third one.
+.PP
+PolyGlot can also extract some useful information from PolyGlot books. The utility
+\&\*(L"dump\-book\*(R" dumps the \*(L"lines\*(R" in a book for a given color. By definition
+a line is a sequence of moves (from the starting position) in which
+the given color makes only book moves and the other color makes
+arbitrary moves (i.e. not necessarily book moves).
+.PP
+Since a PolyGlot book is built up from positions and not lines there
+may be (and there usually are) many positions in the book that are not
+on a \*(L"line\*(R" as defined in the previous paragraph. It is convenient
+to call such positions \*(L"isolated\*(R" positions. The utility \*(L"info\-book\*(R"
+counts such isolated positions.
+.PP
+Some of the isolated positions are provably unreachable and they
+could in principle be deleted from the book. For example if a book
+contains only the move \*(L"e4\*(R" in the starting position but also the
+position after \*(L"d4 d5\*(R" then this last position is provably unreachable
+since it requires white to make a non-book move when a book move is
+available. Such situations arise frequently from the priority rules
+in merging books.
+.PP
+Unfortunately not all isolated positions are provably unreachable and
+it is difficult to identify the latter. If invoked with \*(L"\-exact\*(R" the
+utility info-book will attempt to count the isolated positions which
+require a player to make a non-book move when a book move is available.
+Due to the possibility of transpositions this is not a fool proof method.
.Sh "Epd test mode"
.IX Subsection "Epd test mode"
In epd test mode, PolyGlot will search positions in an epd file and
words when a position occurs both in \*(L"in1\*(R" and \*(L"in2\*(R" only the
moves and weights from \*(L"in1\*(R" will be retained in \*(L"out\*(R".
.PP
+When invoked
+as
+.Sh "polyglot dump-book"
+.IX Subsection "polyglot dump-book"
+PolyGlot supports the following options
+.IP "\fB\-bin\fR (default: book.bin)" 4
+.IX Item "-bin (default: book.bin)"
+Input file in PolyGlot book format.
+.IP "\fB\-color\fR" 4
+.IX Item "-color"
+The color for whom to generate the lines.
+.IP "\fB\-out\fR (default: book_<color>.txt)" 4
+.IX Item "-out (default: book_<color>.txt)"
+The name of the output file.
+.PP
+When invoked
+as
+.Sh "polyglot info-book"
+.IX Subsection "polyglot info-book"
+PolyGlot supports the following options
+.IP "\fB\-bin\fR (default: book.bin)" 4
+.IX Item "-bin (default: book.bin)"
+Input file in PolyGlot book format.
+.IP "\fB\-exact\fR" 4
+.IX Item "-exact"
+Attempt to count the provably unreachable positions among the isolated ones.
+Note that this takes a very long time.
+.PP
When invoked as
.Sh "polyglot epd-test"
.IX Subsection "polyglot epd-test"
Unconditionally stop the seach after this amount of time.
.IP "\fB\-depth\-delta\fR (default: 3)" 4
.IX Item "-depth-delta (default: 3)"
-Stop the search if the best move has been constant for this many depths,
-on condition that the mininal depth and minimal time have been reached.
+Stop the search if the solution as been found and the best move has
+been constant for this many depths, on condition that the mininal
+depth and minimal time have been reached.
.IP "\fB\-min\-depth\fR (default: 8)" 4
.IX Item "-min-depth (default: 8)"
Minimal search depth when the search is stopped using \*(L"\-depth\-delta\*(R".
\& ...
.Ve
.PP
-Lines starting with \*(L"#\*(R" are ignored.
+The characters \*(L"#\*(R" and \*(L";\*(R" serve as comment characters.
.PP
\&\s-1NOTE:\s0 There can be spaces in option names or values. Do not use
quotes. Boolean values are written as \*(L"true\*(R" or \*(L"false\*(R".
.IX Item "ShowPonder (default: true)"
Show search information during engine pondering. Turning this off
might be better for interactive use in some interfaces.
+.IP "\fBScoreWhite\fR (default: true)" 4
+.IX Item "ScoreWhite (default: true)"
+Report score from white's point of view in xboard mode.
.IP "\fBKibitzMove\fR (default: false)" 4
.IX Item "KibitzMove (default: false)"
Whether to kibitz when playing a move.
How many seconds to wait before starting kibitzing. This has an
effect only if \*(L"KibitzPV\*(R" is selected, move kibitzes are always sent
regardless of the delay.
+.IP "\fBKibitzInterval\fR (default: 0)" 4
+.IX Item "KibitzInterval (default: 0)"
+This is another form of throttling. PolyGlot will usually wait this
+many seconds before doing the next kibitz.
.IP "\fB\s-1UCI\s0\fR (default: false)" 4
.IX Item "UCI (default: false)"
If true PolyGlot will not understand xboard commands.
.IX Item "RepeatPV (default: true)"
When true, PolyGlot repeats the last pv string (which also contains
score,depth and time usage) it got from the engine. Some engines
-however do not send a new pv string just before sending the move and
-the now old pv string might confuse debugtools that parse the winboard
-debug files.
+however do not send a new pv string just before sending the move.
+In that case the output of PolyGlot would be inconsistent.
+When RepeatPV is false PolyGlot does not repeat the last pv string.
+Due to the way kibitzing is implemented, KibitzMove is disabled in that case.
.Sh "[Engine] section"
.IX Subsection "[Engine] section"
This section contains engine \s-1UCI\s0 options. PolyGlot does not
\& polyglot make\-book \-pgn games.pgn \-bin book.bin \-max\-ply 30
.Ve
.PP
-Merge books \*(L"in1.bin\*(R" and \*(L"in2.bin\*(R" into a book \*(L"out.bin\*(R".
+Merge books \*(L"w1.bin\*(R" and \*(L"w2.bin\*(R" into a book \*(L"w.bin\*(R".
.PP
.Vb 1
\& polyglot merge\-book \-in1 w1.bin \-in2 w2.bin \-out w.bin
.Ve
.PP
+Inspect lines for white in \*(L"w.bin\*(R"
+.PP
+.Vb 1
+\& polyglot dump\-book \-bin w.bin \-color white \-out w_white.txt
+.Ve
+.PP
+Test epd file \*(L"test.epd\*(R" with a (maximum) search time of 7 minutes per position
+.PP
+.Vb 1
+\& polyglot epd\-test \-epd test.epd \-max\-time 420
+.Ve
+.PP
The command line for using the \s-1UCI\s0 engine \*(L"fruit\*(R" in a \s-1GUI\s0 which uses the
xboard protocol.
.PP