Zero K proof that a chess position contains a checkmate

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 2K views
fluidistic
Gold Member
Messages
3,934
Reaction score
286
Hi people,
It's been years I wanted to post this question here. I would like to build a zero knowledge proof that a given chess position contains at least one checkmate. I know that anything provable admits a zero k proof. I know about https://crypto.stackexchange.com/questions/110939/zero-knowledge-proof-applied-to-a-chess-position and .
I know it's been done already (see https://github.com/risc0/risc0/tree/main/examples/chess):
This code demonstrates a minimal example of how to use the RISC Zero zkVM to make ZK proofs about chess.


The demo uses the shakmaty crate to prove that a chess position has a checkmate without revealing what that checkmate is.
But I would like to understand exactly how to do so, every single step. There are other ways to accomplish it. I think I should be able to transform the problem into a graph/map with 3 colors scheme. I.e. if I can convince the Verifier that I can color the map with 3 colors such that no 2 colors are adjacent, then the proof would be complete. The hard part I don't know how to do is to apply an algorithm to transform a given FEN (or chess position) into such a graph. For example, this position
Code:
6Q1/8/8/8/8/8/5K2/7k w - - 0 1
contains 4 ways to checkmate in 1.
 
Physics news on Phys.org
pasmith said:
You need to feed the FEN into a chess engine, and get it to tell you what all of the legal moves are and what the resulting positions are.
Not exactly. I could use shakmaty (not even a,chess engine) like risc0 does, to assert whether the FEN contains a checkmate. You don't even need to invoke the command to check all legal moves. However risc0 does more than this, for it is designed to be a real 0k setup. It's over my,head for now.