+ Value table[PIECE_NB][SQUARE_NB];
+};
+
+typedef Stats<false> History;
+typedef Stats<true> Gains;
+
+// FIXME: Document me
+struct RefutationTable {
+
+ void clear() { memset(table, 0, sizeof(table)); }
+ void update(Piece p, Square to, Move m) { table[p][to] = m; }
+ Move get(Piece p, Square to) const { return table[p][to]; }
+
+private:
+ Move table[PIECE_NB][SQUARE_NB]; // Mapping: "move A" -> "move B which refutes move A"