Uri Blass wrote:Null move disadvantage is not only about zugzwang but also about finding long plans because R can be even more than 10 plies when the remaining depth is 20 plies based on the following formula.
Depth R = ((823 + 67 * depth) / 256 + std::min((eval - beta) / PawnValueMg, 3)) * ONE_PLY;
Well, as I just pointed out in another thread, reducing null move is a bad idea if the goal is a mate. Reductions of 10 are insane, and obviously make it impossible for the engine to be 'good at Chess' (as opposed to having a high Elo, which only means being better at beating opponents that are also not good at Chess).
Indeed there is an easy trigger here, which is that all non-Pawns have zero legal moves. The major justification for reducing null move is that the opponent can substitute it for any move he wants to delay any trouble.Obviously you cannot substitute it by anything if you have no legal moves.
Note that deepening on a node budget, rather than on plies, would also solve this: the branch where you keep the pin intact hardly branches at the black levels, (especially when taking transpositions of the Pawn moves into account), and can be searched far deeper with virtually no impact onthe total search cost. Such branches should always be extended. (e.g. with fractional plies a posiiton with only 2 legal moves should lower remaining depth only by ~ 0.2 ply.)