I have an idea for endgame solver, which would use precached endgame tables generated on the fly to search positions.
The whole point is to write something which would work on end positions reached by some search routines.
1.evaluate the endgame board very fast(optimized mate search)
2.write the result of evaluation and propogate it up the tree.
3.delete tree segments which are redudant( i.e. all move leading to mate from positionX(which is solved now))
4.repeat and move up the tree. Cached eval results are used and discarded in all steps(so nothing is solved twice)
Problem is search space grow exponentially, and Nalimov tables don't help with that.
The data cannot be stored for 14-piece boards statically, but some combinations of dynamic precache tables can work(only in process of search, they cannot be stored all at once). If engines can search 40 moves from start in seconds, 40 moves back from endgame is possible.
The trick is to discard data which is used on evaluating all segments and set to win/loss stored as "segment as two bits"(11=win 00=loss 01= draw 10=space not searched).