Unlike other chess programs, DARKTHOUGHT features a leaf-node evaluation function whose properties are almost completely root-node programmable. Beside oracle-supplied PST values, this includes upper score bounds for futility-pruning decisions and plug-in functions for all remaining scoring tasks. The interplay of the programmable components is hard-wired inside the evaluation infrastructure and proceeds as follows.
For all steps marked with an H, the evaluation infrastructure automatically hashes the computed scores. While hashing of Pawn-structure scores and Pawn-related King scores works most efficiently with separate hash tables [29,161], the positional as well as the overall evaluation scores get stored in the extended transposition table because they relate to the entire board position. Hashing of material-balance scores was abandoned after none of several examined hash functions achieved acceptable hit rates.
After the completion of Pawn-structure scoring all important facts related to the bare Pawn constellation of the current position are known. The evaluation infrastructure automatically hashes these facts, too, before passing them to the subsequent scoring steps for efficient reuse.
The futility-pruning decisions provide quick exits if the sum of partial scores so far plus an upper bound for the remaining scores falls below alpha. The oracle determines appropriate upper bounds (one for the whole score excluding material balance and one for the positional score alone) with respect to the material situation at the root position and the programmed scoring plug-ins.
The root-node programming process itself includes the selection and installation of appropriate evaluation functions with associated parameter tables for material-balance scoring, Pawn-structure scoring, Pawn-related King scoring, Pawn-race scoring, and further positional scoring. Up to now, the oracle can choose between general functions for Pawn-structure analysis, Pawn-race analysis, and complex positional analysis as well as a special function for middlegame King safety analysis. These functions know about fianchetto Bishops, center control, connected Rooks, King attacks, mobility, open files, outposts, passed Pawns, Pawn shelters, Pawn storms, and weak Pawns. More special scoring functions for different endgames and general functions for the analysis of positions with reduced material will be implemented in the future.