def METHOD_NAME(board, depth_limit: int) -> float:
    """ Calculate the maximum value for play if players acts optimally
    Args:
        player (int): Player token to maximize value of
        board (Board): Current board state
        depth_limit (int): Depth limit
    Returns:
        float: Maximum value possible if players play optimally
    """
    # Check if terminal or depth limit has been reached
    if depth_limit == 0 or board.terminal():
        # If leaf node return the calculated board value
        return value(board, depth_limit)
    # If not leaf then continue searching for maximum value
    best_value = -math.inf
    # Generate all possible moves for maximizing player and store the
    # max possible value while exploring down to terminal nodes
    for move, child_board in board.get_child_boards(player):
        best_value = max(best_value, min_value(child_board, depth_limit - 1))
    return best_value