Gram-Schmidt process
Suppose we have a set of vectors  that form a basis for , and that we wish to convert these into a "friendly" basis which is easier to work with later. We begin by finding out which component of a vector is being unfriendly to a second vector, which we may do with inner products. If we have two vectors , then we may find the component of  being unfriendly to  with . By subtracting this from , we get the component friendly to . By returning to our abstract set , we may make use of this observation to construct a general algorithm to convert an arbitrary basis into a friendly basis.  Like from our original set, each time we use the process on a new vector, it is guaranteed to be mutually friendly with all the previous vectors.