def validate_time_course(simulation):
    """ Validate that BoolNet can execute the desired time course

    Args:
        simulation (:obj:`UniformTimeCourseSimulation`): simulation

    Returns:
        nested of :obj:`list` of :obj:`str`: errors
    """
    errors = []

    if simulation.initial_time != 0:
        errors.append(['Initial time must be 0.'])

    if simulation.output_start_time != int(simulation.output_start_time):
        errors.append(['Output start time must be a non-negative integer.'])

    if simulation.output_end_time != int(simulation.output_end_time):
        errors.append(['Output end time must be a non-negative integer.'])

    if (simulation.output_end_time - simulation.output_start_time) != simulation.number_of_points:
        errors.append(['Number of points ({}) must be equal to the difference between the output end ({}) and start times ({}).'.format(
            simulation.number_of_points, simulation.output_end_time, simulation.output_start_time)])

    return errors