sig
  type gameField
  type move
  val byDepth :
    (Minimax.M.gameField -> float) ->
    int -> Minimax.M.gameField -> Minimax.M.move
  val byTime :
    (Minimax.M.gameField -> float) ->
    float -> Minimax.M.gameField -> Minimax.M.move
  val byNodes :
    (Minimax.M.gameField -> float) ->
    int -> Minimax.M.gameField -> Minimax.M.move
end