Computer Chess Club Archives




Subject: Re: Static Mate Detection

Author: Ed Schröder

Date: 15:12:45 01/23/02

Go up one level in this thread

On January 22, 2002 at 19:03:51, Gerd Isenberg wrote:

>Some notes on Static Mate Detection (excuse my bad english)
>In December, when i entered CCT4, i was quite sure to have the
>Winboard-Interface ready with the help of some free days around christmas and
>new year. But instead i had to solve some problems with the engine itself. Some
>bugs in my static mate detection made me crazy.
>Mate detection is part of the kingsafety-routine after or during scanning all
>adjacent king squares, contolled by enemy pieces, specially sliders. Before,
>during Piece evaluation, sevaral BitBoards got prepared with informations like
>priorised square controls for both sides (tabu for kings, semitabu for queens
>and rooks), squares, at least controlled twice (but no batteries), squares,
>controlled by Sliders, RookMover and so on. Detection of pinned pieces and pawns
>was also done. During "adjacent king squares controlled by slide"-scan, few more
>BitBoards, indexed by direction (hor, ver, a1h8, h1a8) from one exclusive
>sliding attacker, are evaluated to determine possible x-ray interrupts of the
>potential mater, giving the king a possible escape square.
>Mate detection is tried in following order:
>1.supported queen mates adjacend to king (during the scan)
>2.queen mates with straight distance two
>3.mates with sliding pieces, if king can only move/capture in one or no
>direction and no intermove (mate in one), or only worthless, mate delaying
>intermoves are possible (determing them was the main problem) (mate in N; N>1).
>Special care if distance to king is one or two (must be bishop or rook)
>4.mates with knights
>5.mates with pawns

Hey Gerd, good to see you posting here.

In the early Rebel's (1981-1984) I had also a mate_evaluation for every checking
move, a large piece of nasty tricky code. When I later moved to Q-search I put
it into the trash, because Q-search did a faster job.

What is left in Rebel are a few special (non-checking) cases, an example:

[d]6k1/8/5Q1P/8/8/8/8/6K1 w - -

Since white is to move Rebel evaluates this as a (static) mate. It's nice to
have because you don't have to go deeper into the tree to discover it. However
there are of course a few stings such as white being in check (add a black rook
to the position) or an indirect covering of the mate square G7 (add a black
bishop to the position) and more of such exceptions.


This page took 0.18 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.