The Griffin-Lim algorithm for phase recovery (based on the magnitude of an STFT) involves a step that is: STFT(Inverse STFT(...)). This seems to be the key iteration in the algorithm.
I don't understand what makes this algorithm convergent - isn't the STFT supposed to be invertible? Why does STFT(ISTFT(...)) do anything interesting? If the usage of different window functions make it non-invertible, why does this step recover any phase information about the original signal?