The question asks for Prover to prove to Verifier a property (exists chessmate in 1 move) about a chess position# they BOTH know. This is not what a Zero Knowledge Proof is designed to solve.
A standard kind of Zero Knowledge Proof aims at proving to Verifier that a property applies (or not) to the position known by Prover, without revealing anything else about that position to Verifier (here: without the Verifier gettign any clue about the position, beyond that it belongs to the set of positions with chessmate in 1 move). That is possible at least in principle. Basically we codify the finite set of operations to determine if the proposition stands or not, and give a ZKP proof of that.
If indeed we assume the position is known by Verifier, perhaps we really want that Prover demonstrates that they know a move that chessmates, without revealing anything about that move. I think that's possible in principle too: Prover gives a zero-knowledge commitment to the move, and a zero-knowledge proof that the committed value chessmates.
In both cases the details are beyond my current expertise, and I can't tell what size the proof would be, nor how hard it's to compute and verify.
Update: My statement above was misunderstood. It's that three things are possible in zero knowledge:
- For a position they know, Verifier gets convinced of the value (true or false) of the proposition "exists chessmate in 1 move". No communication with Prover is necessary, all that's needed is Verifier applying a finite set of rules. No crypto is involved. No data in the protocol trivially implies that the protocol is zero knowledge.
- For a position they do not necessarily know, Verifier gets convinced of the value (true or false) of that same proposition. They do not learn anything else about the position. This requires communication with Prover. But that's not what the question is about, thus I did not explore ramifications according to if we assume Prover is honest, or a third party knowing the position verifies that Prover is honest, or Verifier gets convinced that Prover is honest (e.g. because Prover committed the position in zero knowledge).
- For a position they know, Verifier gets convinced that Prover knows a moves that checksmates. They do not learn anything about which move Prover is thinking about, if there are several.
Update 2: We can also read the question as: For a position they know, Verifier gets convinced that Prover ran an agreed-upon algorithm that determined that "exists chessmate in 1 move". This can be seen as a special case of 2, in the ramification where Verifier gets convinced that Prover is honest, but with reduced work and communication because Verifier knows the position. Since the position is known in advance, that knowledge can not leak, thus as far as I can tell any protocol convincing the Verifier is zero-knowledge (and, like in 1, not one making good use of ZKP). The method of 1 (run the algorithm on verifier side) remains better on every count.
# "position" is in a notation that includes everything needed to decide the valid next moves (including w.r.t. castling and en-passant). Should we generalize to "Chessmate in $n>1$ moves", we may further assume the position was never reached before, and neutralize the 50-moves rule, so that there can't be ambiguity about if a line of play results in a draw.