I'm back! I found it. The issue is that after the null move, Rxe4# _isn't_ searched. The reason is that only non-capture checks are generated, and that is only after all of the captures failed low. But because alpha is 20 pawns, Rxe4 is delta pruned!hgm wrote:If below 8 ply Rxc7 is refuted by a null move, the node following that null-move must be a low-failing all-node. At d=3 that null move jumps into QS. But as you do checks in the first ply of QS, it should play Rxe4#, as a checkmate is also a check. So how can you fail low on a checkmate (that is faster than any checkmate you have seen so far)?
I don't understand what under-promotion has to do with it.
I'm not sure of a good general solution to this. Maybe not to delta prune checks? I tried this and came up with this result:
Code: Select all
Depth Time Score PV (nodes)
1/ 4 0.001 -8.16 1. d6 (31)
1/12 0.001 +12.80 1. h8=Q Kxf4 2. Bxc7+ Ne5 3. Nxg2+ Bxg2 (259)
1/12 0.002 +15.11 1. Nd3+ Kxd4 2. Bxa7+ Kxd3 3. Rxc7+ Ke2 (416)
1/12 0.002 +16.74 1. Nexf3+ Kxf4 2. Qxc7+ Qxc7 3. Bxc7+ Re5 4. Bxe5+ Ke4 (511)
1/12 0.003 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (689)
[ 1/12] 0.003 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (884)
2/12 0.003 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (986)
[ 2/12] 0.014 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (7861)
3/12 0.014 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (8238)
[ 3/12] 0.018 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (10659)
4/12 0.018 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (10802)
[ 4/12] 0.047 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (32642)
5/12 0.049 +#4 1. Bxc7+ Qxc7 2. Nexf3+ Kxf4 3. Qxc7+ Re5 4. Qxe5# (34334)
5/12 0.058 +#2 1. Rxc7 Rexd4 2. Rf5# (46271)
[ 5/12] 0.058 +#2 1. Rxc7 Rexd4 2. Rf5# (46333)