Is it possible for the engine to indicate when it finds a Forced Mate in X moves vs when it calculates a Mate in X moves (that may not necessarily be absolute). For example, currently if the engine displays #10 after a certain depth, it doesn't necessarily mean that there isn't a quicker mate or that the losing side can't find a way to last more than 10 moves.
I think it would be a nice feature to display a different symbol when the engine has exhausted all possible moves leading to a mate. In other words, the engine has solved the position and can confidently display Forced Mate in X moves.
Is this possible to implement?
#10 means forced mate in 10 found by the engine. There may exist a forced checkmate in less than 10, that the engine has not yet detected then.
tpr I don't think that's true. There are situations where the engine displays #10 at a certain depth but then it would display #12 when it reaches a greater depth.
Some fruitful effects of adding such a feature:
- If one knows that a certain position absolutely leads to a forced mate in X moves, one can stop the local evaluation from looking for a more optimal solution.
- Can be used for creating puzzles. For example, if the engine says Forced Mate in 7 moves, the position automatically becomes worthy of a puzzle without the creator being afraid that it's not the best solution, or if it's not even a forced mate at all.
Can you give an example where the engine indicates #10 and later for the same position #12?
The reverse is common it finds #12 and later it finds a #10.
An example is where the engine cuts off a branch that it doesn’t see promising and doesn’t look enough on that branch before moving on to a new depth. If someone else has an actual example that’d be great. I’ll see if I can find one.
#1 Given enough time and energy, many things are possible. But I don't think you are asking out of an academic sense of interest about what is possible or impossible.
I don't think anyone is interested in working on such an engine, but I could be proven wrong. Popeye is an interesting chess puzzle engine and I don't know everything about it.
@Toadofsky I don’t think you need to build a whole other engine to accomplish this. Maybe there just needs to be a check after each line checking whether it’s a forced move. If all moves are forced, then the engine can designate it as being a forced mate.
#8 You proposed:
"I think it would be a nice feature to display a different symbol when the engine has exhausted all possible moves leading to a mate."
and your recommended solution is:
"Maybe there just needs to be a check after each line checking whether it’s a forced move. If all moves are forced, then the engine can designate it as being a forced mate."
Maybe, although I don't see what that has to do with the problem.
@Toadofsky It has to do everything to do with the problem. Problem is: When people see the engine display #10, for example, they might think that means there is a forced mate in 10 moves. However, if the engine keeps searching, it might find that mate can be delayed by a few more moves.