matthewlai wrote:There's no advantage to sending "1/2-1/2" in any situation.
Symbolic handles all mates consistently. It sends 1/2-1/2 on stalemates, just as it sends 1-0 or 0-1 on checkmates.
Sure. Just saying there's no practical advantage.
And there is a practical disadvantage in not counting helpmates as draws - your search can be misled to get into those positions from winning positions.
If you REALLY want to be able to claim draws, I would have 2 separate insufficient material checks - one for the search, and one for claiming.
Disclosure: I work for DeepMind on the AlphaZero project, but everything I say here is personal opinion and does not reflect the views of DeepMind / Alphabet.
matthewlai wrote:There's no advantage to sending "1/2-1/2" in any situation.
Indeed, provided you are using the GUI with legality checking, mate detection and material-draws adjudication all switched on. Which is the recommended seting for normal Chess.
For variants, and in particular variants that XBoard does not know the rules about, it becomes a different matter. A position might be a stalemate without the GUI knowing it, because pieces move differently from what it expects. Then the 1/2-1/2 command from the engine becomes essential.
These RESULT commands in CECP should really be seen as a feature to support arbitrary variants. In reality they are of course a legacy from the time that normal Chess actually was such an arbitrary variant with unknown rules, as far as XBoard was concerned. The rules were programmed only later, initially XBoard was just a graphical front end for GNU Chess, deferring all game playing to the engine.
With Symbolic using its new and very restrictive definition of insufficient material, I may change the program to send 1/2-1/2 for all draws after it makes a move resulting in a draw. This should work in all cases regardless of whatever the GUI might be doing with respect to verification and adjudication.
The only problem I can see with the above is a possible race condition where the GUI processes the final move and starts a new game before it sees the result report. Perhaps this is not a problem with protocol version two using ping/pong synchronization.
----
How is XBoard terminating an engine when XBoard is commanded to quit? I have Symbolic ignoring SIGINT, so I guess it must be some other signal.