Numlists provide the compile-time index list structures that allow processing to happen in place. The compile-time nature of template recursion is key to coding this algorithm.
Girish surveys--and implements in C--algorithms for the "satisfiable" problem, including the Davis-Putnam algorithm, GSAT algorithm, and simulated annealing algorithms.
Splay trees are self-adjusting binary search trees that are typically used in caches, memory allocators, routers, garbage collectors, data compression, and the like.