For example, initially the ledger state version goes like 1 - 2 - 3. At this point, the validators collectively agree to make a fork based on version 2. So the ledger history now looks like 1 - 2 - 3’ - 4’.
Before the fork, a client already has knowledge about state version 3. Now it queries the network and gets a new state 4’. How can it detect the fork and find out 4’ is not a successor of 3?