def new_check_knot_vector(degree=0, knot_vector=(), control_points_size=0,
    tol=0.001):
    """ Checks if the input knot vector follows the mathematical rules. """
    if not knot_vector:
        raise ValueError('Input knot vector cannot be empty')
    if len(knot_vector) is not degree + control_points_size + 1:
        return False
    ret_val = True
    if ret_val:
        prev_knot = knot_vector[0]
        for knot in knot_vector:
            if prev_knot > knot:
                ret_val = False
                break
            prev_knot = knot
    return ret_val
