Moore-Penrose pseudoinverse are limits: $A^+ = \lim_{\alpha \searrow 0} (A^T A + \alpha I)^{-1} A^T$.
I have noticed that: $A^+ A = \lim_{\alpha \searrow 0}(A^T A + \alpha I)^{-1} A^T A = I$, even $A$ is not invertible. But I wonder why does calculating the pseudoinverse require to add $\alpha I$ even $\alpha$ converged zero.
$A^TA$ is not sure be full rank. Any $0$ eigen/singular value of $A$ will be $0$ for $A^TA$, but any non-zero eigenvalue of $A$ will be $>0$ for $A^TA$ and $+\alpha I$ moves all eigenvalues by $+\alpha$ which is positively so any previous $0$ will be $>0$ and any previous non-zero will be even bigger so sure to not become a $0$.