Covectors and the Cotangent Bundle

Covectors on a Vector Space The Dual Map Tangent Covectors on a Manifold The Cotangent Bundle Covector Fields and Coframes

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.