[proofplan]
We prove that the global section functor is essentially surjective and fully faithful. First, compactness gives a finite trivializing cover and a smooth partition of unity, which embeds every bundle as a direct summand of a trivial bundle; hence its section module is finitely generated projective. Conversely, every finitely generated projective module is the image of a smooth idempotent matrix, and the pointwise image of that matrix defines a smooth vector subbundle of a trivial bundle. Finally, a $C^\infty(M)$-[linear map](/page/Linear%20Map) between section modules is recovered pointwise on fibres, and the resulting fibre maps are smooth because they are locally represented by smooth coefficient functions.
[/proofplan]
[step:Embed every vector bundle as a direct summand of a trivial bundle]
Let $\pi_E:E \to M$ be a smooth real vector bundle of rank $r$. Since $M$ is compact, local triviality of $E$ gives a finite open cover $(U_a)_{a=1}^N$ over which $E$ is trivial. For each $a$, choose smooth local frames $e_{a,1},\dots,e_{a,r}:U_a \to E|_{U_a}$. By the [smooth partition of unity](/page/Partition%20of%20Unity) theorem on smooth manifolds, choose a smooth partition of unity $(\rho_a)_{a=1}^N$ subordinate to $(U_a)_{a=1}^N$. By the smooth cutoff consequence of the [smooth partition of unity](/page/Partition%20of%20Unity) theorem, for each $a$ choose a smooth cutoff function $\theta_a:M \to \mathbb{R}$ such that
\begin{align*}
\operatorname{supp}\rho_a \subset \{x\in M: \theta_a(x)=1\}\subset \operatorname{supp}\theta_a\subset U_a.
\end{align*}
Define global sections $s_{a,i}:M\to E$ as follows: set $s_{a,i}(x)=\rho_a(x)e_{a,i}(x)$ for $x\in U_a$, and set $s_{a,i}(x)=0$ for $x\in M\setminus \operatorname{supp}\rho_a$. These sections are smooth because $\rho_a$ vanishes on a neighbourhood of $M\setminus U_a$.
Define a $C^\infty(M)$-linear map
\begin{align*}
T:(C^\infty(M))^{Nr} &\to \Gamma(M,E)
\end{align*}
by
\begin{align*}
T\big((f_{a,i})_{1\leq a\leq N,\ 1\leq i\leq r}\big)
=
\sum_{a=1}^N\sum_{i=1}^r f_{a,i}s_{a,i}.
\end{align*}
We show that $T$ is surjective. Let $s\in \Gamma(M,E)$. On $U_a$, write
\begin{align*}
s(x)=\sum_{i=1}^r c_{a,i}(x)e_{a,i}(x),
\end{align*}
where each coefficient function $c_{a,i}:U_a \to \mathbb{R}$ is smooth. Since $\theta_a=1$ on $\operatorname{supp}\rho_a$, the function $f_{a,i}:M \to \mathbb{R}$ defined by extending $\theta_a c_{a,i}$ by $0$ outside $U_a$ is smooth. Then
\begin{align*}
T((f_{a,i}))=
\sum_{a=1}^N\sum_{i=1}^r f_{a,i}\rho_a e_{a,i}
=
\sum_{a=1}^N \rho_a s
=
s.
\end{align*}
Thus $\Gamma(M,E)$ is finitely generated.
To obtain projectivity, construct a smooth bundle map $A:E\to M\times \mathbb{R}^{Nr}$ by declaring, over each $U_a$, the $(a,i)$ component of $A(v)$ to be $\theta_a(x)$ times the $i$th coordinate of $v\in E_x$ in the frame $(e_{a,1}(x),\dots,e_{a,r}(x))$, and by setting this component to $0$ outside $U_a$. This is smooth because $\operatorname{supp}\theta_a\subset U_a$. Construct also the smooth bundle map $B:M\times \mathbb{R}^{Nr}\to E$ whose induced map on sections is $T$. For $v\in E_x$,
\begin{align*}
(B\circ A)(v)
=
\sum_{a=1}^N \rho_a(x)\theta_a(x)v
=
\sum_{a=1}^N \rho_a(x)v
=
v.
\end{align*}
Hence $B\circ A=\operatorname{id}_E$. Passing to sections, $\Gamma(M,E)$ is a direct summand of the free module $(C^\infty(M))^{Nr}$, so $\Gamma(M,E)$ is projective.
[guided]
The goal of this step is to prove that $\Gamma(M,E)$ is finitely generated projective using only compactness and local triviality. Compactness is used exactly once: it lets us replace an arbitrary trivializing cover by a finite one. Choose a finite open cover $(U_a)_{a=1}^N$ such that $E|_{U_a}$ has smooth frame sections $e_{a,1},\dots,e_{a,r}:U_a \to E|_{U_a}$. By the [smooth partition of unity](/page/Partition%20of%20Unity) theorem, choose a smooth partition of unity $(\rho_a)_{a=1}^N$ subordinate to this cover, so each $\rho_a:M\to \mathbb{R}$ is smooth, $\operatorname{supp}\rho_a\subset U_a$, and
\begin{align*}
\sum_{a=1}^N \rho_a(x)=1
\end{align*}
for every $x\in M$.
We now turn local frames into global generators. For every pair $(a,i)$, define the map $s_{a,i}:M \to E$ by setting $s_{a,i}(x)=\rho_a(x)e_{a,i}(x)$ for $x\in U_a$ and $s_{a,i}(x)=0$ for $x\notin \operatorname{supp}\rho_a$. This is smooth because $\rho_a$ vanishes on a neighbourhood of $M\setminus U_a$, so the formula does not create a boundary discontinuity at the edge of the coordinate patch.
Define
\begin{align*}
T:(C^\infty(M))^{Nr} &\to \Gamma(M,E)
\end{align*}
by
\begin{align*}
T\big((f_{a,i})\big)
=
\sum_{a=1}^N\sum_{i=1}^r f_{a,i}s_{a,i}.
\end{align*}
This map is $C^\infty(M)$-linear because multiplication of sections by smooth functions is pointwise multiplication in the fibres.
We verify surjectivity. Let $s\in \Gamma(M,E)$. On $U_a$, the frame gives unique smooth coefficient functions
\begin{align*}
s_{a,i}^{\mathrm{loc}}:U_a &\to \mathbb{R}
\end{align*}
such that
\begin{align*}
s(x)=\sum_{i=1}^r s_{a,i}^{\mathrm{loc}}(x)e_{a,i}(x)
\end{align*}
for $x\in U_a$. Using the cutoffs already chosen with $\operatorname{supp}\theta_a\subset U_a$, extend $\theta_a s_{a,i}^{\mathrm{loc}}$ by $0$ outside $U_a$ to obtain a global smooth function $f_{a,i}:M\to \mathbb{R}$. Then, pointwise on $M$,
\begin{align*}
T((f_{a,i}))
=
\sum_{a=1}^N\sum_{i=1}^r f_{a,i}\rho_a e_{a,i}
=
\sum_{a=1}^N \rho_a s
=
s.
\end{align*}
Thus the finitely many sections $s_{a,i}$ generate $\Gamma(M,E)$.
Projectivity requires more than finite generation: we must split this surjection from a free module. Define a smooth bundle map
\begin{align*}
A:E &\to M\times \mathbb{R}^{Nr}
\end{align*}
by taking, in each local frame over $U_a$, the coordinate vector of $v\in E_x$ and multiplying it by $\theta_a(x)$, with the resulting component extended by $0$ outside $U_a$. Define
\begin{align*}
B:M\times \mathbb{R}^{Nr} &\to E
\end{align*}
by sending the standard coordinate vector in the $(a,i)$ slot to $s_{a,i}(x)\in E_x$. Then for every $v\in E_x$,
\begin{align*}
(B\circ A)(v)
=
\sum_{a=1}^N \rho_a(x)\theta_a(x)v
=
\sum_{a=1}^N \rho_a(x)v
=
v,
\end{align*}
because $\theta_a=1$ on $\operatorname{supp}\rho_a$ and the partition of unity sums to $1$. Therefore $B\circ A=\operatorname{id}_E$, and after taking global sections, $\Gamma(M,E)$ is a direct summand of the free module $(C^\infty(M))^{Nr}$. Hence $\Gamma(M,E)$ is projective.
[/guided]
[/step]
[step:Realize every finitely generated projective module as the image of a smooth idempotent]
Let $P$ be a finitely generated projective $C^\infty(M)$-module. By definition of finite generation and projectivity, there exist an integer $n\geq 1$, a $C^\infty(M)$-module $Q$, and an isomorphism
\begin{align*}
\alpha:P\oplus Q &\to (C^\infty(M))^n.
\end{align*}
Let
\begin{align*}
\pi_P:P\oplus Q &\to P\oplus Q
\end{align*}
be the projection $\pi_P(p,q)=(p,0)$. Define
\begin{align*}
e:(C^\infty(M))^n &\to (C^\infty(M))^n
\end{align*}
by
\begin{align*}
e=\alpha\circ \pi_P\circ \alpha^{-1}.
\end{align*}
Then $e^2=e$, and $\operatorname{im}e\cong P$.
Every $C^\infty(M)$-linear endomorphism of $(C^\infty(M))^n$ is represented by an $n\times n$ matrix
\begin{align*}
A=(a_{ij})_{1\leq i,j\leq n},
\end{align*}
where $a_{ij}\in C^\infty(M)$ and
\begin{align*}
e(f_1,\dots,f_n)_i=\sum_{j=1}^n a_{ij}f_j.
\end{align*}
The identity $e^2=e$ is equivalent to
\begin{align*}
A(x)^2=A(x)
\end{align*}
for every $x\in M$, where
\begin{align*}
A(x):\mathbb{R}^n &\to \mathbb{R}^n
\end{align*}
is the linear map represented by the real matrix $(a_{ij}(x))$.
[/step]
[step:Build a smooth vector bundle from the idempotent matrix]
For each $x\in M$, define
\begin{align*}
E_x:=\operatorname{im}A(x)\subset \mathbb{R}^n.
\end{align*}
Set
\begin{align*}
E:=\bigsqcup_{x\in M} E_x\subset M\times \mathbb{R}^n.
\end{align*}
We prove that $E\to M$ is a smooth vector subbundle of constant finite rank. Since $A(x)^2=A(x)$, the real [vector space](/page/Vector%20Space) $\mathbb{R}^n$ decomposes as
\begin{align*}
\mathbb{R}^n=\operatorname{im}A(x)\oplus \ker A(x).
\end{align*}
Indeed, every $v\in\mathbb{R}^n$ satisfies $v=A(x)v+(v-A(x)v)$, with $A(x)v\in\operatorname{im}A(x)$ and $v-A(x)v\in\ker A(x)$, and the intersection is $\{0\}$. On $\operatorname{im}A(x)$ the map $A(x)$ acts as the identity, and on $\ker A(x)$ it acts as zero. Therefore the trace of $A(x)$ equals the dimension of $\operatorname{im}A(x)$:
\begin{align*}
\operatorname{rank}A(x)=\operatorname{tr}A(x)=\sum_{i=1}^n a_{ii}(x).
\end{align*}
Define the function $r:M\to \mathbb{Z}_{\geq 0}$ by $r(x)=\operatorname{rank}A(x)$. Viewed as a real-valued function, $r$ is smooth because it is the trace of the smooth matrix $A$, and it is integer-valued. Since an integer-valued [continuous function](/page/Continuous%20Function) is locally constant, $r$ is locally constant. Therefore $A$ has locally constant finite rank.
Let $x_0\in M$, and set $k:=r(x_0)$. Since $r$ is locally constant, there exists an open neighbourhood $U\subset M$ of $x_0$ such that $\operatorname{rank}A(x)=k$ for every $x\in U$. Choose vectors $v_1,\dots,v_k\in \mathbb{R}^n$ such that
\begin{align*}
A(x_0)v_1,\dots,A(x_0)v_k
\end{align*}
form a basis of $E_{x_0}$. By continuity of the determinant of a nonzero $k\times k$ minor, after shrinking $U$ around $x_0$, the vectors
\begin{align*}
A(x)v_1,\dots,A(x)v_k
\end{align*}
remain linearly independent for every $x\in U$. Since each vector lies in $E_x$ and $\dim E_x=k$, they form a smooth local frame for $E|_U$. By the definition of a smooth vector subbundle in terms of smooth local frames, $E\to M$ is a smooth real vector bundle of constant rank and a smooth subbundle of the trivial bundle $M\times \mathbb{R}^n$.
[guided]
The key point is that an idempotent matrix has image spaces whose dimension cannot jump continuously. For each $x\in M$, the equality $A(x)^2=A(x)$ gives the direct-sum decomposition
\begin{align*}
\mathbb{R}^n=\operatorname{im}A(x)\oplus \ker A(x).
\end{align*}
Indeed, every $v\in\mathbb{R}^n$ decomposes as $v=A(x)v+(v-A(x)v)$, the second term lies in $\ker A(x)$ because $A(x)(v-A(x)v)=A(x)v-A(x)^2v=0$, and the intersection $\operatorname{im}A(x)\cap\ker A(x)$ is $\{0\}$ because $w=A(x)u$ and $A(x)w=0$ imply $w=A(x)^2u=A(x)u=w=0$. Thus $A(x)$ acts as the identity on $\operatorname{im}A(x)$ and as zero on $\ker A(x)$, so $\operatorname{rank}A(x)=\operatorname{tr}A(x)$.
The trace is the smooth real-valued function $x\mapsto \sum_{i=1}^n a_{ii}(x)$, while the rank is integer-valued. Since an integer-valued continuous function is locally constant, $x\mapsto \operatorname{rank}A(x)$ is locally constant. Now fix an arbitrary point $x_0\in M$ and set $k:=\operatorname{rank}A(x_0)$. Local constancy gives an open neighbourhood $U\subset M$ of $x_0$ such that $\operatorname{rank}A(x)=k$ for every $x\in U$. Choose vectors $v_1,\dots,v_k\in\mathbb{R}^n$ such that $A(x_0)v_1,\dots,A(x_0)v_k$ form a basis of $\operatorname{im}A(x_0)$. A nonzero $k\times k$ minor witnessing this [linear independence](/page/Linear%20Independence) remains nonzero after shrinking $U$ around $x_0$, because its determinant is a smooth, hence continuous, function of $x$. Thus $A(x)v_1,\dots,A(x)v_k$ form a smooth local frame for $E|_U$. By the definition of a smooth vector subbundle in terms of smooth local frames, this proves that $E\to M$ is a smooth vector subbundle of constant rank in $M\times\mathbb{R}^n$.
[/guided]
[/step]
[step:Identify the section module of the constructed bundle with the projective module]
Let $\Gamma(M,M\times\mathbb{R}^n)$ be identified with $(C^\infty(M))^n$ by sending a smooth section to its $n$ component functions in the standard basis of $\mathbb{R}^n$. Under this identification, the induced endomorphism
\begin{align*}
\Gamma(M,M\times\mathbb{R}^n) &\to \Gamma(M,M\times\mathbb{R}^n)
\end{align*}
associated to the bundle map $(x,v)\mapsto (x,A(x)v)$ is exactly $e$.
A section
\begin{align*}
s:M &\to M\times\mathbb{R}^n
\end{align*}
belongs to $\Gamma(M,E)$ precisely when
\begin{align*}
s(x)\in E_x=\operatorname{im}A(x)
\end{align*}
for every $x\in M$. Since $A(x)$ is idempotent, this condition is equivalent to
\begin{align*}
A(x)s(x)=s(x)
\end{align*}
for every $x\in M$. Hence
\begin{align*}
\Gamma(M,E)=\operatorname{im}e.
\end{align*}
Because $\operatorname{im}e\cong P$, we obtain a $C^\infty(M)$-module isomorphism
\begin{align*}
\Gamma(M,E)\cong P.
\end{align*}
This proves essential surjectivity of the section functor.
[/step]
[step:Recover a bundle map from a module homomorphism]
Let $\pi_E:E\to M$ and $\pi_F:F\to M$ be smooth real vector bundles, and let $L:\Gamma(M,E)\to \Gamma(M,F)$ be a $C^\infty(M)$-linear homomorphism. For each $x\in M$ and each $v\in E_x$, choose a local frame $e_1,\dots,e_r:U\to E|_U$ on a neighbourhood $U$ of $x$, write $v=\sum_{i=1}^r c_i e_i(x)$ with coefficients $c_i\in\mathbb{R}$, and choose by the smooth bump-function lemma a function $\psi:M\to\mathbb{R}$ with $\psi=1$ on a neighbourhood of $x$ and $\operatorname{supp}\psi\subset U$. Extending $\psi e_i$ by zero gives global sections $\sigma_i\in\Gamma(M,E)$, and $s:=\sum_{i=1}^r c_i\sigma_i$ satisfies $s(x)=v$. Define the linear map $\Phi_x:E_x\to F_x$ by $\Phi_x(v)=L(s)(x)$.
We first check that $\Phi_x$ is well-defined. Suppose $s,t\in \Gamma(M,E)$ satisfy $s(x)=t(x)$. Then $u:=s-t$ satisfies $u(x)=0$. Choose a local frame $e_1,\dots,e_r:U\to E|_U$ on a neighbourhood $U$ of $x$, and choose, by the smooth bump-function consequence of the [smooth partition of unity](/page/Partition%20of%20Unity) theorem, a smooth function $\psi:M\to \mathbb{R}$ with $\psi=1$ on a neighbourhood of $x$ and $\operatorname{supp}\psi\subset U$. On $U$, write
\begin{align*}
u=\sum_{i=1}^r u_i e_i
\end{align*}
with smooth functions $u_i:U\to \mathbb{R}$ satisfying $u_i(x)=0$. Extend $\psi e_i$ by zero to a global section $\sigma_i\in \Gamma(M,E)$ and extend $\psi u_i$ by zero to a smooth function $g_i\in C^\infty(M)$. Near $x$,
\begin{align*}
u=\sum_{i=1}^r g_i\sigma_i.
\end{align*}
We justify the locality used at the point $x$. If $w\in\Gamma(M,E)$ vanishes on a neighbourhood $W$ of $x$, then the [closed set](/page/Closed%20Set) $\operatorname{supp}w$ is disjoint from $W$. The [smooth bump-function lemma](/page/Partition%20of%20Unity) gives a smooth function $\eta:M\to\mathbb{R}$ with $\eta=0$ on a smaller neighbourhood of $x$ contained in $W$ and $\eta=1$ on a neighbourhood of $\operatorname{supp}w$; then $w=\eta w$, so $C^\infty(M)$-linearity gives $L(w)=\eta L(w)$ and hence $L(w)(x)=\eta(x)L(w)(x)=0$. Applying this to the difference between $u$ and $\sum_{i=1}^r g_i\sigma_i$, which vanishes near $x$, gives
\begin{align*}
L(u)(x)=\sum_{i=1}^r g_i(x)L(\sigma_i)(x)=0.
\end{align*}
Thus $L(s)(x)=L(t)(x)$, so $\Phi_x$ is well-defined. Linearity of $\Phi_x$ follows from the $\mathbb{R}$-linearity of $L$.
Define
\begin{align*}
\Phi:E &\to F
\end{align*}
by $\Phi(v)=\Phi_x(v)$ for $v\in E_x$. The map covers $\operatorname{id}_M$ by construction. To prove smoothness, choose smooth local frames $e_1,\dots,e_r:U\to E|_U$ and $f_1,\dots,f_m:U\to F|_U$.
After replacing $U$ by a smaller neighbourhood whose closure is contained in a slightly larger trivializing neighbourhood $V$, choose a smooth function $\psi:M\to \mathbb{R}$ with $\psi=1$ on $U$ and $\operatorname{supp}\psi\subset V$. Extend $\psi e_i$ to global sections $\sigma_i\in \Gamma(M,E)$. On $U$, write
\begin{align*}
L(\sigma_i)=\sum_{j=1}^m b_{ji} f_j
\end{align*}
with smooth coefficient functions $b_{ji}:U\to \mathbb{R}$. Then for $x\in U$ and $v=\sum_{i=1}^r c_i e_i(x)$,
\begin{align*}
\Phi_x(v)=\sum_{j=1}^m\left(\sum_{i=1}^r b_{ji}(x)c_i\right)f_j(x).
\end{align*}
Thus $\Phi$ has smooth local matrix coefficients $(b_{ji})$, so $\Phi$ is a smooth vector bundle map.
Finally, for every $s\in \Gamma(M,E)$ and every $x\in M$, the definition of $\Phi_x$ with the chosen section $s$ gives
\begin{align*}
(\Phi\circ s)(x)=\Phi_x(s(x))=L(s)(x).
\end{align*}
Hence the induced map on sections is exactly $L$.
[guided]
The construction must show that a module homomorphism is determined fibrewise. For $x\in M$ and $v\in E_x$, first construct a global section with value $v$ at $x$: choose a local frame $e_1,\dots,e_r:U\to E|_U$ near $x$, write $v=\sum_{i=1}^r c_i e_i(x)$ with $c_i\in\mathbb{R}$, choose by the smooth bump-function lemma a function $\psi:M\to\mathbb{R}$ with $\psi=1$ near $x$ and $\operatorname{supp}\psi\subset U$, extend $\psi e_i$ by zero to global sections $\sigma_i$, and set $s=\sum_{i=1}^r c_i\sigma_i$. Then $s(x)=v$, so define $\Phi_x(v)=L(s)(x)$. The only possible problem is dependence on the chosen section. If two choices differ by $u\in\Gamma(M,E)$ with $u(x)=0$, choose a local frame $e_1,\dots,e_r:U\to E|_U$ near $x$ and, by the smooth bump-function lemma, a cutoff $\psi:M\to\mathbb{R}$ with $\psi=1$ near $x$ and $\operatorname{supp}\psi\subset U$. Writing $u=\sum_{i=1}^r u_i e_i$ on $U$, with $u_i(x)=0$, and extending $\psi e_i$ and $\psi u_i$ by zero gives global sections $\sigma_i$ and functions $g_i$ such that $u=\sum_{i=1}^r g_i\sigma_i$ near $x$.
Why does equality near $x$ suffice after applying $L$? If a section $w$ vanishes on a neighbourhood $W$ of $x$, then $\operatorname{supp}w$ is a closed subset of $M$ disjoint from $W$. The [smooth bump-function lemma](/page/Partition%20of%20Unity) gives $\eta\in C^\infty(M)$ with $\eta=0$ on a smaller neighbourhood of $x$ contained in $W$ and $\eta=1$ on a neighbourhood of $\operatorname{supp}w$. Then $w=\eta w$, so $L(w)=\eta L(w)$ by $C^\infty(M)$-linearity, and therefore $L(w)(x)=0$. Hence evaluation at $x$ gives $L(u)(x)=\sum_{i=1}^r g_i(x)L(\sigma_i)(x)=0$, because each $g_i(x)=0$. This proves $\Phi_x$ is well-defined.
To prove smoothness, take local frames $e_1,\dots,e_r$ for $E$ and $f_1,\dots,f_m$ for $F$ over a neighbourhood $U$. Choose a larger trivializing neighbourhood $V$ and shrink $U$ so that its closure is contained in $V$. By the [smooth bump-function lemma](/page/Partition%20of%20Unity), choose $\psi:M\to\mathbb{R}$ with $\psi=1$ on $U$ and $\operatorname{supp}\psi\subset V$. Extending $\psi e_i$ by zero outside $V$ gives global sections $\sigma_i\in\Gamma(M,E)$ satisfying $\sigma_i=e_i$ on $U$. Write $L(\sigma_i)=\sum_{j=1}^m b_{ji}f_j$ on $U$, where each $b_{ji}:U\to\mathbb{R}$ is smooth. For $v=\sum_{i=1}^r c_i e_i(x)$, the definition gives
\begin{align*}
\Phi_x(v)=\sum_{j=1}^m\left(\sum_{i=1}^r b_{ji}(x)c_i\right)f_j(x).
\end{align*}
Thus $\Phi$ has smooth local matrix coefficients and is a smooth bundle map inducing $L$ on global sections.
[/guided]
[/step]
[step:Verify uniqueness and conclude equivalence of categories]
Let the maps $\Phi:E\to F$ and $\Psi:E\to F$ be smooth vector bundle maps covering $\operatorname{id}_M$ and suppose they induce the same map on global sections. For any $x\in M$ and $v\in E_x$, choose $s\in \Gamma(M,E)$ with $s(x)=v$. The equality of induced maps gives
\begin{align*}
\Phi_x(v)=(\Phi\circ s)(x)=(\Psi\circ s)(x)=\Psi_x(v).
\end{align*}
Thus $\Phi=\Psi$. Therefore the map from bundle morphisms to $C^\infty(M)$-linear homomorphisms of section modules is injective, and the previous step proves it is surjective.
We have shown that $\Gamma(M,-)$ sends smooth real vector bundles to finitely generated projective $C^\infty(M)$-modules, that every finitely generated projective $C^\infty(M)$-module is isomorphic to the section module of a smooth real vector bundle, and that morphisms are exactly $C^\infty(M)$-linear maps between section modules. Let $\mathrm{Vect}_{\mathbb{R}}^\infty(M)$ denote the category of smooth real vector bundles over $M$ with smooth bundle maps over $\operatorname{id}_M$, and let $\mathrm{Proj}_{\mathrm{fg}}(C^\infty(M))$ denote the category of finitely generated projective $C^\infty(M)$-modules with $C^\infty(M)$-linear homomorphisms. Hence $\Gamma(M,-)$ is an equivalence
\begin{align*}
\mathrm{Vect}_{\mathbb{R}}^\infty(M)\simeq \mathrm{Proj}_{\mathrm{fg}}(C^\infty(M)).
\end{align*}
[/step]