Is there any chess engine that has an analysis mode that can show if a position is a forced draw by either side?
It is common for engines to output evaluations of 0.0 when they detect a draw. But an evaluation of 0.0 can mean many things. For example, assuming it is white to move, an evaluation of 0.0 can mean:
- The game is certainly a draw regardless of how either player plays (e.g. insufficient material).
- Both players can force a draw. Neither player can hope to win if their opponent plays perfectly.
- No matter which move white plays, the computer is 100% sure that black can force a draw if he wishes to. White cannot hope to win if black plays perfectly. A draw is the most likely outcome, but a deeper search might show that black can force a win.
- The computer is 100% sure that white can force a draw if he wishes to. Black cannot hope to win if white plays perfectly. A draw is the most likely outcome, but a deeper search might show that white can force a win.
- The computer has not found a forced draw for either side, but the evaluation so far is exactly level. A draw is the most likely outcome, but a deeper search may later show an advantage for one side.
Just to give an example of when this might be useful, if white doesn't need to win and just wants to be as sure as possible of getting a draw then they might prefer to play a move with evaluation +0.0 and a known forced draw even though another move with a higher evaluation is available.
Another example is that if you need a win (i.e. a draw is just as bad as a loss) you might want to play a move with a slight negative evaluation to avoid giving your opponent the opportunity to force a draw. Even though this increases your chance of losing, it also increases your chance of winning.
Obviously there are positions where it is difficult or impossible to be sure whether a forced draw is available or not. But if the engine announces a forced draw then it must be possible to force a draw. False negatives are acceptable but there should be no false positives.
So in summary, I'd like to know for a specific position if one (or both players) have a forced draw available to them. Calculating the numerical evaluation of the position is not necessary, but if it also provides this at the same time, that's a bonus.