+ If you start with an orthonormal set, you get it back. We can use
+ the rationals here because we don't need any square roots::
+
+ sage: v1 = vector(QQ, (1,0,0))
+ sage: v2 = vector(QQ, (0,1,0))
+ sage: v3 = vector(QQ, (0,0,1))
+ sage: v = [v1,v2,v3]
+ sage: gram_schmidt(v) == v
+ True
+