Technically, cycle([]) *is* isInfinite, but the program will assert because of a run-time error due to the user's logic. Nobody said that just because a range is infinite, that it can't ever fail...
cycle([]) is not infinite. A infinitely repeated empty range is the empty range.
