+ // Is the PV leading to a draw position? Assumes all pv moves are legal
+ bool pv_is_draw(Position& pos) {
+
+ StateInfo st[MAX_PLY];
+ auto& pv = pos.this_thread()->rootMoves[0].pv;
+
+ for (size_t i = 0; i < pv.size(); ++i)
+ pos.do_move(pv[i], st[i]);
+
+ bool isDraw = pos.is_draw(pv.size());
+
+ for (size_t i = pv.size(); i > 0; --i)
+ pos.undo_move(pv[i-1]);
+
+ return isDraw;
+ }
+
+