Covectors on a Vector Space
Throughout this section, \(V\) denotes a finite-dimensional real vector space. The objects of
interest are the real-valued linear functionals on \(V\): just as tangent vectors at a point provide
a coordinate-free interpretation of directional derivatives, the linear functionals dual to them will
provide a coordinate-free interpretation of differentials, and later of metrics built from inner
products on each tangent space. We inherit throughout the
Einstein summation convention,
under which an index repeated once as a superscript and once as a subscript is implicitly summed over
its range.
Definition: Covector and Dual Space
Let \(V\) be a real vector space. A covector on \(V\) is a linear functional
\(\omega : V \to \mathbb{R}\). The set of all covectors on \(V\), with pointwise addition and
scalar multiplication, is a real vector space called the dual space of \(V\),
denoted \(V^*\).
A linear map out of a finite-dimensional vector space is determined by its values on a basis, and
those values may be assigned freely. Applied to functionals into \(\mathbb{R}\), this principle
produces a distinguished basis of \(V^*\) attached to each basis of \(V\).
Theorem: The Dual Basis
Let \(V\) be a finite-dimensional real vector space and let \((E_1, \ldots, E_n)\) be a basis
for \(V\). For each \(i \in \{1, \ldots, n\}\) there is a unique covector
\(\varepsilon^i \in V^*\) determined by
\[
\varepsilon^i(E_j) = \delta^i_j ,
\]
where \(\delta^i_j\) is the Kronecker delta. The \(n\)-tuple
\((\varepsilon^1, \ldots, \varepsilon^n)\) is a basis for \(V^*\), called the
dual basis to \((E_j)\). In particular, \(\dim V^* = \dim V\).
Proof:
For each \(i\), the assignment \(E_j \mapsto \delta^i_j\) extends, by linearity, to a unique
linear functional \(\varepsilon^i : V \to \mathbb{R}\): writing \(v = v^j E_j\), the only
candidate is \(\varepsilon^i(v) = v^i\), and this map is linear,
so \(\varepsilon^i\) exists and is uniquely determined by its prescribed values on the basis.
It remains to show that \((\varepsilon^1, \ldots, \varepsilon^n)\) is a basis for \(V^*\). For
independence, suppose \(c_i \varepsilon^i = 0\) in \(V^*\) for scalars \(c_1, \ldots, c_n\).
Evaluating both sides on \(E_j\) gives \(c_i \varepsilon^i(E_j) = c_i \delta^i_j = c_j = 0\) for
every \(j\), so all coefficients vanish. For spanning, let \(\omega \in V^*\) be arbitrary and
set \(\omega_i = \omega(E_i)\). For each basis vector \(E_j\),
\[
(\omega_i \varepsilon^i)(E_j) = \omega_i \varepsilon^i(E_j) = \omega_i \delta^i_j = \omega_j
= \omega(E_j) ,
\]
and since two linear functionals agreeing on a basis are equal, \(\omega = \omega_i
\varepsilon^i\). Thus \((\varepsilon^i)\) spans \(V^*\). Having \(n\) linearly independent
spanning covectors, \(V^*\) has dimension \(n = \dim V\).
The computation in the spanning argument records two facts worth isolating. First, every covector
\(\omega \in V^*\) has a unique expansion in the dual basis,
\[
\omega = \omega_i \varepsilon^i, \qquad \omega_i = \omega(E_i) ,
\]
so the scalars \(\omega_i\) are the components of \(\omega\) with respect to
\((E_i)\). Second, the basis covector \(\varepsilon^i\) extracts the \(i\)-th coordinate of a vector:
if \(v = v^j E_j\), then \(\varepsilon^i(v) = v^i\). Combining the two expansions gives the value of
a covector on a vector purely in terms of components,
\[
\omega(v) = \omega_i v^i .
\]
The standard dual basis and the row–column picture
Applied to the standard basis \((e_1, \ldots, e_n)\) of \(\mathbb{R}^n\), the dual basis is written
with upper indices, \((e^1, \ldots, e^n)\), and is called the standard dual basis.
Here \(e^i(v) = v^i\) is the linear functional picking out the \(i\)-th entry of \(v\). Since a linear
map \(\mathbb{R}^n \to \mathbb{R}\) is represented in standard bases by a \(1 \times n\) matrix, the
basis covectors are exactly the row matrices
\[
\begin{align*}
e^1 &= \begin{pmatrix} 1 & 0 & \cdots & 0 \end{pmatrix}, &
e^2 &= \begin{pmatrix} 0 & 1 & \cdots & 0 \end{pmatrix}, \\
&\;\;\vdots &
e^n &= \begin{pmatrix} 0 & \cdots & 0 & 1 \end{pmatrix} ,
\end{align*}
\]
and the pairing \(\omega(v) = \omega_i v^i\) is the product of the row matrix
\((\omega_1 \; \cdots \; \omega_n)\) with the column matrix of components of \(v\). A vector is a
column; a covector is a row; their pairing is matrix multiplication yielding a scalar.
Why basis covectors carry upper indices
The placement of indices is not decorative. Components of a vector carry upper indices
(\(v = v^j E_j\)), basis covectors carry upper indices (\(\varepsilon^i\)), and components of a
covector carry lower indices (\(\omega = \omega_i \varepsilon^i\)). Under this scheme every
index summed over in a meaningful expression appears once as a superscript and once as a
subscript, as in \(\omega(v) = \omega_i v^i\) and \(\omega = \omega_i \varepsilon^i\). The
convention is engineered so that any expression violating it — a sum over two upper or two
lower indices — signals a likely error. This bookkeeping becomes essential once components
are allowed to depend on a choice of coordinates and one must track how they respond to a change
of basis.
The Dual Map
A linear map between vector spaces induces a linear map between their duals, running in the opposite
direction. This is the algebraic mechanism that will later turn a smooth map between manifolds into
an operation on covector fields, and it is the first place where the contravariance characteristic
of cotangent objects appears.
Definition: Dual Map
Let \(V\) and \(W\) be real vector spaces and let \(A : V \to W\) be a linear map. The
dual map (or transpose) of \(A\), denoted
\(A^* : W^* \to V^*\), is defined by
\[
(A^*\omega)(v) = \omega(Av), \qquad \omega \in W^*, \;\; v \in V .
\]
For each \(\omega \in W^*\), the composite \(A^*\omega = \omega \circ A\) is linear on \(V\), so
\(A^*\omega \in V^*\); and \(A^*\) is itself linear in \(\omega\).
In coordinates the dual map is represented by the transposed matrix, and it reverses the order of
compositions. These two facts are the substance of the next results.
Theorem: Properties of the Dual Map
Let \(U\), \(V\), \(W\) be finite-dimensional real vector spaces.
(a) Matrix representation. If \((E_i)\) is a basis for \(V\) with dual basis
\((\varepsilon^i)\), and \((F_a)\) is a basis for \(W\) with dual basis \((\varphi^a)\), and if
\(A : V \to W\) has matrix \((A^a_i)\) defined by \(A E_i = A^a_i F_a\), then the matrix of
\(A^* : W^* \to V^*\) with respect to the dual bases is the transpose: writing
\(A^* \varphi^a = (A^*)^a_i \varepsilon^i\), one has \((A^*)^a_i = A^a_i\). That is, the matrix
of \(A^*\) in the dual bases is the transpose of the matrix of \(A\).
(b) Contravariance. For linear maps \(A : V \to W\) and \(B : W \to U\),
\[
(B \circ A)^* = A^* \circ B^*,
\]
and \((\operatorname{Id}_V)^* = \operatorname{Id}_{V^*}\).
Proof:
(a) By definition, \(A^* \varphi^a\) is the covector on \(V\) whose value on
the basis vector \(E_i\) is
\[
(A^* \varphi^a)(E_i) = \varphi^a(A E_i) = \varphi^a(A^b_i F_b) = A^b_i \varphi^a(F_b)
= A^b_i \delta^a_b = A^a_i .
\]
On the other hand, the component of any covector \(\eta = \eta_i \varepsilon^i\) on \(E_i\) is
\(\eta(E_i) = \eta_i\). Applying this to \(\eta = A^* \varphi^a\) gives
\((A^*)^a_i = (A^* \varphi^a)(E_i) = A^a_i\), which is the asserted transpose relation.
(b) For \(\omega \in U^*\) and \(v \in V\),
\[
\big((B \circ A)^* \omega\big)(v) = \omega\big((B \circ A)v\big) = \omega\big(B(Av)\big)
= (B^*\omega)(Av) = \big(A^*(B^*\omega)\big)(v) ,
\]
so \((B \circ A)^* \omega = (A^* \circ B^*)\omega\) for every \(\omega\), giving
\((B \circ A)^* = A^* \circ B^*\). Finally
\((\operatorname{Id}_V)^* \omega = \omega \circ \operatorname{Id}_V = \omega\), so
\((\operatorname{Id}_V)^* = \operatorname{Id}_{V^*}\).
The two formulas in part (b) say precisely that passing from a vector space to its dual, and from a
linear map to its dual map, preserves identities and reverses the order of composition. An assignment
of this kind — objects to objects, arrows to arrows in reversed order — is a
contravariant functor on the category of finite-dimensional real vector spaces. The terminology is
recorded for later use; nothing below depends on it.
The double dual
Since \(V^*\) is again a finite-dimensional real vector space, it has its own dual
\(V^{**} = (V^*)^*\), the double dual space of \(V\). The dimension count
\(\dim V^{**} = \dim V^* = \dim V\) already shows \(V^{**} \cong V\); what distinguishes \(V^{**}\)
is that it is isomorphic to \(V\) by a map requiring no choice of basis.
Theorem: Canonical Isomorphism with the Double Dual
Let \(V\) be a finite-dimensional real vector space. For each \(v \in V\), define a linear
functional \(\xi(v) : V^* \to \mathbb{R}\) by evaluation,
\[
\xi(v)(\omega) = \omega(v), \qquad \omega \in V^* .
\]
Then \(\xi(v) \in V^{**}\), and the map \(\xi : V \to V^{**}\) is a linear isomorphism that does
not depend on any choice of basis.
Proof:
For fixed \(v\), the map \(\omega \mapsto \omega(v)\) is linear in \(\omega\), so
\(\xi(v) \in V^{**}\); and \(\xi\) is linear in \(v\) because \(\omega\) is linear. Since
\(\dim V = \dim V^{**}\), it suffices to show \(\xi\) is injective. Suppose \(v \neq 0\); extend
\(v\) to a basis \((E_1, \ldots, E_n)\) with \(E_1 = v\), and let \((\varepsilon^i)\) be the dual
basis. Then
\[
\xi(v)(\varepsilon^1) = \varepsilon^1(v) = \varepsilon^1(E_1) = 1 \neq 0 ,
\]
so \(\xi(v) \neq 0\). Hence \(\ker \xi = \{0\}\) and \(\xi\) is an isomorphism. The definition of
\(\xi\) refers only to evaluation of covectors on vectors, with no basis involved, so the
isomorphism is canonical.
Because \(\xi\) is canonical, one identifies \(V^{**}\) with \(V\) outright, treating a vector
\(v \in V\) and the evaluation functional \(\xi(v) \in V^{**}\) as the same object. The space \(V^*\)
is also isomorphic to \(V\) in finite dimensions, but only after a basis is chosen: there is no
isomorphism \(V \cong V^*\) defined without reference to extra structure. This asymmetry —
\(V^{**}\) canonically \(V\), but \(V^*\) only non-canonically — is exactly why vectors and
covectors remain genuinely distinct objects rather than being silently identified, and it persists
pointwise on a manifold once \(V\) is taken to be a tangent space. The identification \(V^{**} = V\)
also fails in infinite dimensions, where the analogous evaluation map into the double dual need not
be surjective; the well-behaved case there is singled out under the name
reflexivity,
treated in the functional-analytic setting of normed spaces.
The pairing of vectors and covectors
The canonical identification \(V^{**} = V\) makes the evaluation \(\omega(v)\) symmetric in
status: it is at once the action of the covector \(\omega\) on the vector \(v\), and the action
of the vector \(v\), viewed as an element of \(V^{**}\), on \(\omega\). To emphasize this
even-handedness one often writes the value as a pairing,
\[
\langle \omega, v \rangle = \langle v, \omega \rangle = \omega(v) .
\]
This bracket is the natural pairing between a space and its dual, and is not an inner product:
its two arguments come from different spaces, \(V^*\) and \(V\). The notational coincidence with
the inner-product bracket is deliberate but the meanings should not be conflated — an inner
product pairs two vectors of the same space, whereas this pairing pairs a covector with a vector.
On a manifold equipped with a metric the two will become linked, but the link is additional data,
not an identity.
Tangent Covectors on a Manifold
The linear-algebraic dual construction now applies pointwise on a manifold. At each point of a
smooth manifold \(M\) the
tangent space
is a finite-dimensional real vector space, so it has a dual, and the elements of that dual are the
covectors of the present chapter.
Definition: Cotangent Space and Tangent Covectors
Let \(M\) be a smooth manifold with or without boundary, and let \(p \in M\). The
cotangent space at \(p\), denoted \(T^*_pM\), is the dual space of the tangent
space:
\[
T^*_pM = (T_pM)^* .
\]
An element of \(T^*_pM\) is a tangent covector at \(p\), or simply a
covector at \(p\).
Given smooth local coordinates \((x^i)\) on an open subset \(U \subseteq M\), each point \(p \in U\)
carries the
coordinate basis
\(\big(\partial/\partial x^i|_p\big)\) of \(T_pM\). By the dual basis theorem this basis determines a
dual basis of \(T^*_pM\), which we denote for the moment by \(\big(\lambda^i|_p\big)\), characterized
by
\[
\lambda^i|_p\!\left( \frac{\partial}{\partial x^j}\bigg|_p \right) = \delta^i_j .
\]
Every covector \(\omega \in T^*_pM\) is then written uniquely as \(\omega = \omega_i\,\lambda^i|_p\),
with components
\[
\omega_i = \omega\!\left( \frac{\partial}{\partial x^i}\bigg|_p \right) .
\]
A better, intrinsic notation for these basis covectors will emerge once the differential of a
coordinate function is available; for now \(\lambda^i\) is a placeholder.
How covector components transform
The defining feature of tangent covectors, historically and computationally, is the way their
components respond to a change of coordinates. Suppose \((\tilde x^j)\) is a second smooth
coordinate system whose domain contains \(p\), with dual basis \(\big(\tilde\lambda^j|_p\big)\) for
\(T^*_pM\). The
change-of-basis rule for coordinate vectors
states that
\[
\frac{\partial}{\partial x^i}\bigg|_p
= \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \frac{\partial}{\partial \tilde x^j}\bigg|_p ,
\]
where \(\widehat p\) is the coordinate representation of \(p\). Writing the same covector \(\omega\)
in both dual bases as \(\omega = \omega_i\,\lambda^i|_p = \tilde\omega_j\,\tilde\lambda^j|_p\), we
recover its old components by evaluating on the old coordinate vectors:
\[
\begin{align*}
\omega_i
&= \omega\!\left( \frac{\partial}{\partial x^i}\bigg|_p \right)
= \omega\!\left( \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \frac{\partial}{\partial \tilde x^j}\bigg|_p \right) \\
&= \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \omega\!\left( \frac{\partial}{\partial \tilde x^j}\bigg|_p \right)
= \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \tilde\omega_j .
\end{align*}
\]
Thus the components of a covector transform by
\[
\omega_i = \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \tilde\omega_j .
\]
Covariant and contravariant components
Comparing the two rules side by side reveals the opposition that gives the indices their names.
Vector components transform with the Jacobian \(\partial \tilde x^j / \partial x^i\) sending old
to new,
\[
\tilde v^j = \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, v^i ,
\]
whereas covector components transform with the same Jacobian sending new to old,
\[
\omega_i = \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \tilde\omega_j .
\]
Because covector components vary in the same way as the coordinate partial derivatives
\(\partial/\partial x^i\) — with the Jacobian acting on the lower index — they are
classically called covariant; vector components, varying oppositely, are called
contravariant. The terms are entrenched but slightly misleading: this
classical use of covariant and contravariant for tensor components is a different use of the
same words than the variance of functors between categories, and the two should not be
conflated. The index placement enforces the distinction automatically. A lower index on a covector component
and an upper index on a basis covector keep every summation balanced, exactly as the convention
was designed to do.
The Cotangent Bundle
Collecting the cotangent spaces at all points of \(M\) into a single space yields a smooth
vector bundle,
the cotangent bundle. Its construction parallels that of the
tangent bundle,
with the dual spaces playing the role formerly held by the tangent spaces.
Definition: The Cotangent Bundle
Let \(M\) be a smooth manifold with or without boundary. The cotangent bundle of
\(M\) is the disjoint union of the cotangent spaces,
\[
T^*M = \coprod_{p \in M} T^*_pM ,
\]
equipped with the natural projection \(\pi : T^*M \to M\) sending a covector \(\omega \in T^*_pM\)
to the point \(p\).
To make \(T^*M\) a smooth vector bundle one supplies, over each coordinate domain, a trivialization
built from the dual coordinate basis. Let \((x^i)\) be smooth coordinates on an open subset
\(U \subseteq M\). For \(p \in U\) every covector at \(p\) is \(\xi_i\,\lambda^i|_p\) for unique
components \((\xi_1, \ldots, \xi_n)\), and the assignment
\[
\xi_i\,\lambda^i|_p \longmapsto \big( p, (\xi_1, \ldots, \xi_n) \big) \in U \times \mathbb{R}^n
\]
is a bijection from \(\pi^{-1}(U)\) onto \(U \times \mathbb{R}^n\), fiberwise linear. These maps are
the candidate
local trivializations.
Theorem: The Cotangent Bundle Is a Smooth Vector Bundle
Let \(M\) be a smooth \(n\)-manifold with or without boundary. With the projection \(\pi\) and the
natural vector space structure on each fiber, the cotangent bundle \(T^*M\) admits a unique
topology and smooth structure making it a smooth rank-\(n\) vector bundle over \(M\), for which
each of the coordinate trivializations above is a smooth local trivialization.
Proof:
The argument is the dual of the corresponding statement for the tangent bundle. The candidate
trivializations over two overlapping coordinate domains differ by the change of dual basis. On the
overlap of charts \((x^i)\) and \((\tilde x^j)\), the covector transformation law derived above
gives, for a covector with old components \(\xi_i\) and new components \(\tilde\xi_j\),
\[
\xi_i = \frac{\partial \tilde x^j}{\partial x^i}(\widehat p)\, \tilde\xi_j .
\]
The matrix of this fiber change is the
transition function
relating the two trivializations; its entries \(\partial \tilde x^j / \partial x^i\) are smooth
functions of \(p\), being partial derivatives of the smooth coordinate transition map. The
vector bundle chart lemma
then provides a unique smooth structure on \(T^*M\) making it a smooth rank-\(n\) vector bundle
for which the coordinate trivializations are smooth. Uniqueness follows from the same lemma, since
the smooth structure it produces is the only one rendering these trivializations smooth.
The dual bundle and natural coordinates
The transition functions of the tangent bundle, acting on vector components, are the Jacobian
matrices \(\big(\partial \tilde x^j / \partial x^i\big)\). The computation in the proof shows that the
cotangent bundle's transition functions, acting on covector components, are governed by the inverse
transpose of those matrices: if a smooth vector bundle \(E\) has transition function
\(\tau : U \to GL(n, \mathbb{R})\) between two trivializations, then its dual bundle \(E^*\), whose
fiber over \(p\) is the dual space \(E_p^*\), has the corresponding transition function
\[
\tau^* = \big(\tau^{-1}\big)^\top .
\]
The cotangent bundle is exactly the dual bundle of the tangent bundle: matching the law
\(\xi_i = \big(\partial \tilde x^j / \partial x^i\big)\,\tilde\xi_j\) derived above against the
chart-lemma convention \(\tilde\xi = \tau^*\xi\) recovers \(\tau^* = \big(\tau^{-1}\big)^\top\),
with \(\tau = \big(\partial \tilde x^j / \partial x^i\big)\) the tangent transition function. The
inverse transpose is the
bundle-level shadow of the opposing variance already seen for components: the inverse undoes the
direction of the change, and the transpose accounts for covectors pairing against vectors rather than
transforming alongside them.
Given smooth coordinates \((x^i)\) on \(U\), the trivialization above defines a coordinate chart for
\(T^*M\) over \(\pi^{-1}(U)\), assigning to the covector \(\xi_i\,\lambda^i|_p\) the \(2n\) numbers
\[
\big( x^1(p), \ldots, x^n(p), \xi_1, \ldots, \xi_n \big) \in \mathbb{R}^{2n} .
\]
These are the natural coordinates for \(T^*M\) associated with \((x^i)\). Here one
must abandon the insistence that coordinate functions carry upper indices: the fiber coordinates
\(\xi_i\) are covector components and are already required by the index convention to be subscripts.
The compensating rule still holds — in any meaningful summation each repeated index appears once
up and once down — so the bookkeeping survives intact even though the chart labels do not all
sit upstairs.
Covector Fields and Coframes
With \(T^*M\) established as a smooth vector bundle, the objects of primary interest are its
sections: smoothly varying choices of a covector at each point. These are the covector fields, the
cotangent counterpart of vector fields, and the carrier of the differential of a function developed
next.
Definition: Covector Field
Let \(M\) be a smooth manifold with or without boundary. A covector field, or
differential \(1\)-form, is a
section
of the cotangent bundle: a continuous map \(\omega : M \to T^*M\) with
\(\omega(p) \in T^*_pM\) for every \(p\). A smooth covector field is a
smooth section
of \(T^*M\). The value of \(\omega\) at \(p\) is written \(\omega_p\), to keep it distinct from
the action of a covector on a vector.
As with vector fields, many constructions are clearest when no regularity is presupposed and
smoothness is imposed afterwards.
Definition: Rough Covector Field
A rough covector field on \(M\) is a (not necessarily continuous) map
\(\omega : M \to T^*M\) with \(\pi \circ \omega = \mathrm{Id}_M\). Equivalently, a rough covector
field assigns to each \(p \in M\) some covector \(\omega_p \in T^*_pM\), with no continuity
assumed.
In smooth coordinates \((x^i)\) on \(U\), the dual coordinate basis assembles into \(n\) covector
fields \(\lambda^1, \ldots, \lambda^n\) on \(U\), where \(\lambda^i\) assigns to \(p\) the basis
covector \(\lambda^i|_p\). Any rough covector field on \(U\) is then \(\omega = \omega_i\,\lambda^i\)
for uniquely determined component functions \(\omega_i : U \to \mathbb{R}\), given
by \(\omega_i(p) = \omega_p\big(\partial/\partial x^i|_p\big)\). Smoothness of \(\omega\) can be read
off these components, exactly as for
vector fields.
Proposition: Smoothness Criteria for Covector Fields
Let \(M\) be a smooth manifold with or without boundary and let \(\omega : M \to T^*M\) be a
rough covector field. The following are equivalent.
(a) \(\omega\) is smooth.
(b) In every smooth coordinate chart, the component functions of \(\omega\) are
smooth.
(c) Each point of \(M\) lies in a coordinate chart on which \(\omega\) has smooth
component functions.
(d) For every smooth vector field \(X\) on \(M\), the function
\(\omega(X) : M \to \mathbb{R}\) defined by \(\omega(X)(p) = \omega_p(X_p)\) is smooth.
(e) For every open subset \(U \subseteq M\) and every smooth vector field \(X\)
on \(U\), the function \(\omega(X) : U \to \mathbb{R}\) is smooth.
Proof:
The implications mirror the smoothness criteria for vector fields, with sections of \(T^*M\) in
place of sections of \(TM\). For (a) \(\Leftrightarrow\) (b) \(\Leftrightarrow\) (c): in a
natural coordinate chart for \(T^*M\) the map \(\omega\) is represented by
\(p \mapsto \big(x(p), \omega_1(p), \ldots, \omega_n(p)\big)\), which is smooth precisely when the
component functions \(\omega_i\) are smooth; smoothness is local, so checking it on some chart
about each point suffices, giving the equivalence of (a), (b), (c).
For (b) \(\Rightarrow\) (e): on a coordinate domain, writing \(\omega = \omega_i\,\lambda^i\) and
a smooth vector field as \(X = X^j\,\partial/\partial x^j\), the pairing is
\(\omega(X) = \omega_i X^j \lambda^i\big(\partial/\partial x^j\big) = \omega_i X^i\), a finite sum
of products of smooth functions, hence smooth; this holds on a neighbourhood of each point of any
\(U\), so \(\omega(X)\) is smooth on \(U\). Clause (e) \(\Rightarrow\) (d) is the special case
\(U = M\). For (d) \(\Rightarrow\) (b): fix coordinates and a point; on a neighbourhood the
coordinate vector field \(\partial/\partial x^i\) extends to a globally defined smooth vector
field \(X\) agreeing with it near the point, by multiplying through with a bump function. Then
\(\omega(X) = \omega_i\) near the point, so each component function is smooth there. As the point
and chart were arbitrary, (b) holds.
The smooth covector fields on \(M\) form a real vector space, denoted \(\mathfrak{X}^*(M)\). It is
moreover a module over the ring \(C^\infty(M)\) of smooth functions: for \(f \in C^\infty(M)\) and
\(\omega \in \mathfrak{X}^*(M)\), the product \(f\omega\) defined by \((f\omega)_p = f(p)\,\omega_p\)
is again a smooth covector field. This is the cotangent analogue of the \(C^\infty(M)\)-module
structure on
smooth vector fields.
Coframes
A
frame
for \(T^*M\) over an open set is, by the general definition for vector bundles, an ordered tuple of
covector fields forming a basis of each fiber. Such a tuple is given its own name in the cotangent
setting.
Definition: Local and Global Coframe
Let \(M\) be a smooth manifold with or without boundary and let \(U \subseteq M\) be open. A
local coframe for \(M\) over \(U\) is an ordered \(n\)-tuple of covector fields
\((\varepsilon^1, \ldots, \varepsilon^n)\) on \(U\) such that \((\varepsilon^i|_p)\) is a basis
for \(T^*_pM\) at each \(p \in U\); equivalently, it is a local frame for the cotangent bundle.
If \(U = M\) it is a global coframe. Given a local frame
\((E_1, \ldots, E_n)\) for \(TM\) over \(U\), the pointwise dual bases assemble into a coframe
\((\varepsilon^i)\) determined by \(\varepsilon^i(E_j) = \delta^i_j\), called the
coframe dual to \((E_i)\). In particular, the dual coordinate basis fields
\((\lambda^i)\) form the coordinate coframe over a chart domain.
A frame and its dual coframe have a shared regularity: one is smooth if and only if the other is.
Over a chart the coordinate frame \((\partial/\partial x^i)\) and the coordinate coframe
\((\lambda^i)\) are both smooth, since the latter's component functions in the chart are constants.
More generally, for an arbitrary frame the matrix relating it to a coordinate frame is invertible at
each point, and matrix inversion is a smooth operation on \(GL(n, \mathbb{R})\), so smoothness of the
frame transfers to its dual coframe and back. Relative to a smooth coframe \((\varepsilon^i)\), a
covector field \(\omega\) is smooth exactly when its component functions \(\omega_i\), defined by
\(\omega = \omega_i\,\varepsilon^i\), are smooth.
The geometry of a covector field
A vector field is pictured as an arrow attached to each point. A nonzero covector
\(\omega_p \in T^*_pM\) instead carries two pieces of data: its kernel, a hyperplane in \(T_pM\)
of codimension one, and the affine hyperplane parallel to it on which \(\omega_p\) takes the
value \(1\). The value \(\omega_p(v)\) on any other vector is then fixed by linear interpolation
between these parallel hyperplanes. A covector field is thus visualized as a pair of parallel
hyperplanes in each tangent space — one through the origin, one alongside it — varying
from point to point, with the second hyperplane receding to infinity wherever the field
approaches zero. This level-set picture is the geometry behind reading a covector as something a
vector is measured against, and it is the picture that the differential of a function will make
concrete: the hyperplanes become the level sets of the function, and the spacing records its rate
of change.