3

In the UCI documentation, it says

  • mate x

    search for a mate in x moves

However, I believe this should say "search for mate in x plies", as plies are used in most of the protocol. I can not find any good documentation for this. Which way does it actually work?

  • Welcome to Chess.SE, and great questioin! Could you elaborate as to where in UCI documentation you found this? – Brandon_J Jan 24 at 2:28
  • The one here, in the section GUI to Engine (go mate <x>). – me' Jan 24 at 3:12
1

The specification is correct here.

An appropriate implementation would start a search, and then terminate it once a checkmate has been found in x full moves, or 2x plies

I believe this should say "search for mate in x plies", as plies are used in most of the protocol.

This is not the case.

The way that mate scores are handled is one of the quirks of the UCI Protocol. As it happens, using full moves to describe mates is consistent with the rest of the protocol.

For example, here is the section which describes how scores should be reported:

* score
    * cp <x>
        the score from the engine's point of view in centipawns.
    * mate <y>
        mate in y moves, not plies.
        If the engine is getting mated use negative values for y.

Here, the mate scores must also be reported in full moves, just like the requirement for go mate <x>.

You are, however, right to find this unusual, as most chess engines do represent mate scores in plies internally.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.