If V is a finite-dimensional vector space over R (the real numbers), it's dual space V* is defined as the set of linear functions from V into R. Since V* is also a finite-dimensional vector space, we can use the same definition to construct its dual space V**. What you're describing is the definition of V**, not V, so there's nothing circular about it.
Note that V is isomorphic to V**. Just define f:V→V** by f(v)v*=v*v for all v* in V*. This f is an isomorphism, and it's the reason why you can think of V** as "the same thing" as V.
In general relativity, V is the tangent space of spacetime M at some point p in M. So there's a different V for each p. In SR, we have the option to instead take spacetime M to be a vector space, and then there's no need to talk about tangent spaces.
One way to define the tangent space: Let C be the set of smooth functions from M into R. Define V to be the set of linear functions v:C→R such that v(fg)=v(f)g(p)+f(p)v(g) for all f,g in C. Define a vector space structure on V by (u+v)(f)=uf+vf and (av)f=a(vf). Each coordinate system defines a basis for this vector space. The basis vectors are the partial derivative operators defined this way:
Fredrik said:
If M is a manifold, U is an open subset of M, p is a point in U, and x:U\rightarrow \mathbb{R}^n is a coordinate system, then the partial derivative operators
\frac{\partial}{\partial x^\mu}\bigg|_p
are basis vectors of the tangent space TpM of M at p.
These operators are defined by their action on functions f:M\rightarrow\mathbb{R}.
\frac{\partial}{\partial x^\mu}\bigg|_p f=(f\circ x^{-1}),_\mu(x(p))
where ,_\mu denotes the partial derivate of the function, with respect to the \muth variable.
(Edit: I should have said
smooth functions.)
The proof of that involves a trick that you can find in Wald's GR book or Isham's differential geometry book, if you're interested.
Another option is discussed
here. The vector spaces defined by these two definitions are isomorphic, so it doesn't matter which one of them we think of as "the" tangent space at p.
One more detail that may be of interest to you:
Fredrik said:
If an inner product is defined on V, you can use it to define an isomorphism between V and V*. Just let x* be the map y\mapsto \langle x,y\rangle. Now the map x\mapsto x^* is an isomorphism.
It actually doesn't have to be an inner product. Any symmetric non-degenerate bilinear form (like the metric tensor) will do.