Its just a tiny nitpick, but it drives me crazy that so many people use the term nondeterministic wrongly, like how "exponential" has just become a synonym for "very fast". You have nondeterminism when you know everything there is to know about your current state, but you still can't predict the following state. User input or timing does not introduce nondeterminism. The fact that you don't know the timing or user input simply means that you don't know what state you are in. But if you knew ALL about yout state, you could perfectly predict the next state of a program. In fact, the very approach used here, of replaying these input demonstrates that all software is deterministic!
Its just a tiny nitpick, but it drives me crazy that so many people use the term nondeterministic wrongly, like how "exponential" has just become a synonym for "very fast". You have nondeterminism when you know everything there is to know about your current state, but you still can't predict the following state. User input or timing does not introduce nondeterminism. The fact that you don't know the timing or user input simply means that you don't know what state you are in. But if you knew ALL about yout state, you could perfectly predict the next state of a program. In fact, the very approach used here, of replaying these input demonstrates that all software is deterministic!
by that definition, nothing would ever be non-deterministic because if you know everything about everything, you can always predict the next state.