This question already has an answer here:
- Why is time evolution unitary? 2 answers
Given two states $|A(t)\rangle$ and $|B(t)\rangle$. If $\langle A(0)|B(0)\rangle=0$ then for all $t$, $\langle A(t)|B(t)\rangle=0$.
This is a fundamental rule of quantum mechanics. And we can imply that states evolve unitary with $|A(t)\rangle = U(t)|A(0)\rangle$.
Which is equivalent(?) to saying that states evolve with linearly.
One can think of this as two arrows on a circle. And they evolve by going round the circle, keeping at right angles from each other.
But one could imagine an evolution where the speed of the arrow on a circle depends on it's position on the circle. Then the arrows would not stay orthogonal.
It would be replacing the unitary group with the holomorphic-diffeomophism group.
States would evolve with operators $\psi'(t)=iH(\psi(t))\psi(t)$. i.e. non-linearly. But would always remain distinguishable.
Would this be against some physical principle?
Edit: Although the arrows would move around the circle at different speeds they would stay on the circle and hence the evolution is still unitary and hence states would always stay the same length. You would simply have a unitary operator dependent on the state e.g. $U(\psi(t))$. e.g. $\langle A(t)|A(t)\rangle$ would always stay the same value. But $\langle A(t)|B(t)\rangle$ would not.