def is_solution_valid(board, solution):
    """
    Check if a generated solution is valid for a given board.

    :param board: The original, starting board.
    :param solution: A full solution, i.e. a list of Coordinates.
    :return: True if the solution is valid; False otherwise.
    """
    if not solution:
        return board.is_solved()

    return is_solution_valid(board.pop_from(solution[0]), solution[1:])