The new chess rules (5-fold repetition and 75-move draw)

717 views
Skip to first unread message

Lyudmil Antonov

unread,
Nov 28, 2016, 2:26:08 AM11/28/16
to FishCooking
In July 2014, 2 new rules were added to the FIDE chess rule book, which are especially important for computer chess:

Article        9.6 

If one or both of the following occur(s) then the game is drawn:

  1. the same position has appeared, as in 9.2b, for at least five consecutive alternate moves by each player.
  2. any consecutive series of 75 moves have been completed by each player without the movement of any pawn and without any capture. If the last move resulted in checkmate, that shall take precedence


These are popularly known as 5-fold repetition and 75-move draw and apply if the draw is not claimed. Since engines cannot claim a draw, it is more logical to apply these rules in Stockfish instead of the older 3-fold repetition and 50-move draw.

By these rules Stockfish would have seen the win in the infamous TCEC game 17.

Mindbreaker

unread,
Nov 28, 2016, 2:48:56 AM11/28/16
to FishCooking
I suggested dealing with the 75-move rule about a year ago.  I think the problems are that the GUIs and the UCI protocols don't support the things, and there are tables which only consider the 50-move rule.  I think Fritz even takes the ending out of the hands of the engines and just plays the table moves for the engines once a table position is reached on the board.

I think we would have to get other engine authors to request as a group additional protocols and changes to the GUIs.

Uri Blass

unread,
Nov 28, 2016, 5:49:08 AM11/28/16
to FishCooking
It is not correct that engines cannot claim a draw.
Stockfish is a uci engine so it relies on the gui to claim a draw but many winboard engine claim a draw and simply refuse to play after the claim.

Lyudmil Antonov

unread,
Nov 28, 2016, 5:57:25 AM11/28/16
to FishCooking
Correction agreed

Ronald de Man

unread,
Nov 28, 2016, 4:07:46 PM11/28/16
to FishCooking
Since the opponent can claim a draw after 50 moves, it makes no sense for SF to evaluate the position as > 0.00. Similarly, since SF can claim a draw, it makes no sense to evaluate the position as < 0.00. So the only sensible evaluation of a position after 50 moves without pawn move or capture is 0.00. And that is what SF does.

That UCI does not include an engine command for claiming a draw is immaterial. It will just be the UCI GUI that claims the draw.

Mindbreaker

unread,
Nov 28, 2016, 7:18:51 PM11/28/16
to FishCooking
It probably would be an exercise in futility.  If we assume the opponent will make the right move, in this case a draw claim, then our assessment is a draw.  But shouldn't we play such positions so that if the opponent does not make the best move, we can take advantage of it.

If it is mate in 72, we should continue on that line rather than picking at random some other move that also draws by 50 move rule. And keep moving unless stopped by a GUI. As long as our side does the checkmating.  And if on the loosing side of a position that is a win beyond 50 moves, we should keep making the draw claim to the GUI the 50th move and all subsequent moves.

We should never refuse to move. That just gives the GUI or TD or whoever the opportunity to adjudicate against us and hand the point to the opponent.

Ronald de Man

unread,
Nov 28, 2016, 8:59:27 PM11/28/16
to FishCooking
On Tuesday, November 29, 2016 at 1:18:51 AM UTC+1, Mindbreaker wrote:
It probably would be an exercise in futility.  If we assume the opponent will make the right move, in this case a draw claim, then our assessment is a draw.  But shouldn't we play such positions so that if the opponent does not make the best move, we can take advantage of it.

If there is anything better than 0.00, SF should play that, because there will normally be no reason to expect the opponent not to take the draw after 50 moves. And if everything else is worse than 0.00, then SF should take the 0.00 score.

So to take advantage of the possibility you mention you would need to distinguish between 0.00 scores, at least when they are the result of 3-fold repetition or the 50-move rule (both depend on a draw claim). This would be possible by blowing up the 0.00 evaluation to e.g. -0.10 to 0.10:

score = pos.evaluate();
score +=  score > 0 ? 10
        : score < 0 ? -10 : 0;

Now you have the interval -10...10 for scoring 3-fold rep and 50-move draw positions, e.g. based on the static eval of those positions. When printing the score, the interval can be collapsed to 0.00 again.

One could also use this interval for scoring TB draws.

I very very much doubt there is any Elo to be gained here.
(Well, the TB-draw scoring could help a tiny bit against engines not using TBs.)
Reply all
Reply to author
Forward
0 new messages