Suppose A is an m*n matrix with real values. It has a Null Space N(A) and a rank r. Can we infer N(ATA) and its rank?
We know that N(A) is contained in N(ATA), because if Ax = 0 then ATAx = 0. But how can we be sure that no x exists such that Ax != 0 but ATAx = 0?
Ax is a combinations of the columns of A, so it belongs to the columns space of A ( C(A) ) or equivalently to the row space of AT. At the same time, if AT(Ax) = 0, then it means that Ax belongs to the null space of AT. But we know that these 2 vector subspaces are orthogonal and share only the 0 vector; otherwise it would be that (Ax)T(Ax) = 0 while Ax != 0, but the inner product of a real vector is the square of its length, so it cannot be 0 for a non zero vector!
And this demonstrate that N(ATA) = N(A).
Because the rank of a matrix m*n is equal to n – dimension of N(matrix), we can also say that the rank(ATA) = rank(A).