[proofplan]
We use the standard smooth atlas on the Grassmannian by writing a $k$-plane as the graph of a [linear map](/page/Linear%20Map) after choosing a coordinate projection that is an isomorphism on that plane. A rank-$k$ subbundle of the trivial bundle has local smooth frames; in a suitable Grassmannian chart those frames give a smooth matrix-valued graph map, so $x\mapsto E_x$ is smooth. Conversely, a smooth Grassmannian map is locally represented by smooth graph matrices, and these matrices give local smooth frames for the subset of $X\times\mathbb{R}^n$ with fibre $f(x)$. Finally, the two constructions agree fibrewise, and the agreement is smooth because it is the identity on the ambient trivial bundle.
[/proofplan]
[step:Describe the Grassmannian charts by coordinate graphs]
For each subset $I\subset\{1,\dots,n\}$ with $|I|=k$, let $\mathbb{R}^I\subset\mathbb{R}^n$ be the coordinate subspace spanned by the standard basis vectors $e_i$ with $i\in I$, and let $\mathbb{R}^{I^c}$ be the complementary coordinate subspace. Let $P_I:\mathbb{R}^n\to \mathbb{R}^I$ and $P_{I^c}:\mathbb{R}^n\to \mathbb{R}^{I^c}$ be the coordinate projections. Define
\begin{align*}
\mathcal{U}_I:=\{W\in\operatorname{Gr}(k,n):P_I|_W:W\to\mathbb{R}^I \text{ is a linear isomorphism}\}.
\end{align*}
For $W\in\mathcal{U}_I$, define the linear map $A_I(W):\mathbb{R}^I\to\mathbb{R}^{I^c}$ by
\begin{align*}
A_I(W)(u)=P_{I^c}\big((P_I|_W)^{-1}(u)\big)
\end{align*}
for $u\in\mathbb{R}^I$.
Then
\begin{align*}
W=\{u+A_I(W)u:u\in\mathbb{R}^I\}.
\end{align*}
Let $\operatorname{Lin}(V,W)$ denote the finite-dimensional real [vector space](/page/Vector%20Space) of linear maps from a real vector space $V$ to a real vector space $W$. Each $A_I$ is a map from $\mathcal{U}_I$ to $\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$. Together they are the standard coordinate charts for $\operatorname{Gr}(k,n)$; equivalently, this is the usual smooth structure described on the Grassmannian. This is the chart criterion for smoothness of maps into a smooth manifold: a map into $\operatorname{Gr}(k,n)$ is smooth if its local representatives in these coordinate charts are smooth. On overlaps $\mathcal{U}_I\cap\mathcal{U}_J$, the transition maps are explicit as follows. If $W=\{u+A_I(W)u:u\in\mathbb{R}^I\}$, then the $J$-coordinate representative is obtained by restricting the projection $P_J$ to this graph:
\begin{align*}
P_J(u+A_I(W)u)=B_{JI}(A_I(W))u,
\end{align*}
where $B_{JI}(A_I(W)):\mathbb{R}^I\to\mathbb{R}^J$ is the $k\times k$ coordinate-minor map determined by the $J$-rows of the graph matrix. The condition $W\in\mathcal{U}_J$ is exactly that $B_{JI}(A_I(W))$ is invertible. In that case, for $y\in\mathbb{R}^J$, set
\begin{align*}
u=B_{JI}(A_I(W))^{-1}y,
\end{align*}
and define
\begin{align*}
A_J(W)y=P_{J^c}\big(u+A_I(W)u\big).
\end{align*}
Thus the transition maps are built from coordinate projection, matrix multiplication, and matrix inversion on the [open set](/page/Open%20Set) of invertible matrices. The inversion map on invertible $k\times k$ matrices is smooth because each entry of the inverse is a cofactor divided by the determinant, and the determinant is nonzero on this open set. Therefore the transition maps are smooth.
[guided]
The purpose of this step is to fix the local coordinates in which smoothness will be checked. Let $I\subset\{1,\dots,n\}$ be a subset with $|I|=k$. The coordinate subspace $\mathbb{R}^I$ has dimension $k$, and $\mathbb{R}^{I^c}$ is its coordinate complement, so every vector $v\in\mathbb{R}^n$ decomposes uniquely as
\begin{align*}
v=P_Iv+P_{I^c}v.
\end{align*}
A $k$-plane $W\subset\mathbb{R}^n$ belongs to $\mathcal{U}_I$ precisely when $P_I|_W:W\to\mathbb{R}^I$ is a linear isomorphism. In that case, each $u\in\mathbb{R}^I$ has a unique lift $(P_I|_W)^{-1}(u)\in W$. Its complementary coordinate component defines a linear map $A_I(W):\mathbb{R}^I\to\mathbb{R}^{I^c}$ by
\begin{align*}
A_I(W)(u)=P_{I^c}\big((P_I|_W)^{-1}(u)\big)
\end{align*}
for $u\in\mathbb{R}^I$.
Thus every vector in $W$ has the form $u+A_I(W)u$, and every vector of this form lies in $W$ by construction. Hence
\begin{align*}
W=\{u+A_I(W)u:u\in\mathbb{R}^I\}.
\end{align*}
These graph coordinates are exactly the standard smooth charts on the Grassmannian. They reduce smoothness of a map into $\operatorname{Gr}(k,n)$ to smoothness of an ordinary map into the finite-dimensional vector space $\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$.
We also verify the overlap maps in these coordinates. Suppose $W\in\mathcal{U}_I\cap\mathcal{U}_J$ and write
\begin{align*}
W=\{u+A_I(W)u:u\in\mathbb{R}^I\}.
\end{align*}
The $J$-coordinates of a vector in this graph are obtained by applying the coordinate projection $P_J:\mathbb{R}^n\to\mathbb{R}^J$. Thus there is a linear map $B_{JI}(A_I(W)): \mathbb{R}^I\to\mathbb{R}^J$, obtained from the $J$-rows of the graph matrix, such that
\begin{align*}
P_J(u+A_I(W)u)=B_{JI}(A_I(W))u.
\end{align*}
The condition $W\in\mathcal{U}_J$ says exactly that this map is invertible. Therefore, for $y\in\mathbb{R}^J$, the vector in $W$ with $J$-coordinate $y$ is obtained by setting
\begin{align*}
u=B_{JI}(A_I(W))^{-1}y,
\end{align*}
and its complementary $J^c$-coordinate is
\begin{align*}
A_J(W)y=P_{J^c}\big(u+A_I(W)u\big).
\end{align*}
This formula uses only coordinate projection, matrix multiplication, and inversion of the invertible matrix $B_{JI}(A_I(W))$. Matrix inversion is smooth on the open set of invertible matrices because the inverse entries are cofactors divided by the nonzero determinant. Hence the transition maps between the Grassmannian graph charts are smooth.
[/guided]
[/step]
[step:Construct a smooth Grassmannian map from a subbundle]
Let $E\subset X\times\mathbb{R}^n$ be a smooth rank-$k$ vector subbundle. Define $f_E:X\to\operatorname{Gr}(k,n)$ by $f_E(x)=E_x$.
We prove that $f_E$ is smooth using the chart criterion for maps into a smooth manifold. Fix $x_0\in X$. Since $E$ is a smooth rank-$k$ subbundle, there exist an open neighbourhood $U\subset X$ of $x_0$ and smooth sections $s_j:U\to\mathbb{R}^n$, for $1\le j\le k$, such that $(s_1(x),\dots,s_k(x))$ is a basis of $E_x$ for every $x\in U$.
Choose a basis $(v_1,\dots,v_k)$ of the $k$-plane $E_{x_0}\subset\mathbb{R}^n$, and let $M\in\mathbb{R}^{n\times k}$ be the matrix whose $j$th column is $v_j$. Since the columns of $M$ are linearly independent, $M$ has rank $k$, so some $k\times k$ minor is nonzero. Let $I\subset\{1,\dots,n\}$ with $|I|=k$ be the set of row indices for such a nonzero minor. Then the linear map
\begin{align*}
P_I|_{E_{x_0}}:E_{x_0} \to\mathbb{R}^I
\end{align*}
is an isomorphism. After shrinking $U$ to an open neighbourhood of $x_0$, the linear map $P_I|_{E_x}:E_x\to\mathbb{R}^I$ remains an isomorphism for every $x\in U$, because the determinant of the $k\times k$ coordinate matrix with columns $P_Is_j(x)$ is a smooth function and is nonzero at $x_0$.
Define smooth maps $S_I:U\to\operatorname{Lin}(\mathbb{R}^k,\mathbb{R}^I)$ and $S_{I^c}:U\to\operatorname{Lin}(\mathbb{R}^k,\mathbb{R}^{I^c})$ by
\begin{align*}
S_I(x)a=\sum_{j=1}^k a_jP_Is_j(x)
\end{align*}
and
\begin{align*}
S_{I^c}(x)a=\sum_{j=1}^k a_jP_{I^c}s_j(x)
\end{align*}
for $a=(a_1,\dots,a_k)\in\mathbb{R}^k$. Since $S_I(x)$ is invertible for every $x\in U$, define $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ by
\begin{align*}
A(x)=S_{I^c}(x)\circ S_I(x)^{-1}.
\end{align*}
The inversion map on invertible $k\times k$ matrices is smooth because each inverse entry is a cofactor divided by the nonzero determinant, and composition of linear maps is smooth. Hence $A$ is smooth. For every $x\in U$,
\begin{align*}
E_x=\{u+A(x)u:u\in\mathbb{R}^I\}.
\end{align*}
Therefore $f_E(U)\subset\mathcal{U}_I$ and $A_I\circ f_E=A$ on $U$. Since $x_0$ was arbitrary, $f_E:X\to\operatorname{Gr}(k,n)$ is smooth.
[guided]
We need to prove smoothness of the map $f_E:X\to\operatorname{Gr}(k,n)$, and smoothness into a manifold is checked in charts. Fix $x_0\in X$. Because $E$ is a smooth rank-$k$ subbundle of $X\times\mathbb{R}^n$, there is an open neighbourhood $U\subset X$ of $x_0$ and smooth sections $s_j:U\to\mathbb{R}^n$, for $1\le j\le k$, such that $(s_1(x),\dots,s_k(x))$ is a basis of $E_x$ for every $x\in U$.
We first choose a Grassmannian chart that contains $E_{x_0}$. Choose a basis $(v_1,\dots,v_k)$ of $E_{x_0}$ and form the matrix $M\in\mathbb{R}^{n\times k}$ with columns $v_1,\dots,v_k$. Since these columns are linearly independent, $M$ has rank $k$, so at least one $k\times k$ minor is nonzero. Let $I\subset\{1,\dots,n\}$ be the corresponding row set. Then $P_I|_{E_{x_0}}:E_{x_0}\to\mathbb{R}^I$ is an isomorphism.
The same condition persists near $x_0$. The determinant of the $k\times k$ matrix with columns $P_Is_j(x)$ is a smooth real-valued function on $U$ and is nonzero at $x_0$. After replacing $U$ by a smaller open neighbourhood of $x_0$, this determinant remains nonzero on $U$. Hence $P_I|_{E_x}:E_x\to\mathbb{R}^I$ is an isomorphism for every $x\in U$.
Define maps $S_I:U\to\operatorname{Lin}(\mathbb{R}^k,\mathbb{R}^I)$ and $S_{I^c}:U\to\operatorname{Lin}(\mathbb{R}^k,\mathbb{R}^{I^c})$ by
\begin{align*}
S_I(x)a=\sum_{j=1}^k a_jP_Is_j(x)
\end{align*}
and
\begin{align*}
S_{I^c}(x)a=\sum_{j=1}^k a_jP_{I^c}s_j(x)
\end{align*}
for $a=(a_1,\dots,a_k)\in\mathbb{R}^k$. The map $S_I(x)$ is invertible for every $x\in U$, so we may define $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ by
\begin{align*}
A(x)=S_{I^c}(x)\circ S_I(x)^{-1}.
\end{align*}
The inversion map on invertible $k\times k$ matrices is smooth because each inverse entry is a cofactor divided by the nonzero determinant, and composition of linear maps is smooth. Hence $A$ is smooth.
For $x\in U$, every vector of $E_x$ is uniquely written as $\sum_{j=1}^k a_js_j(x)$. Its $\mathbb{R}^I$ component is $u=S_I(x)a$, so $a=S_I(x)^{-1}u$, and its $\mathbb{R}^{I^c}$ component is $S_{I^c}(x)S_I(x)^{-1}u=A(x)u$. Therefore
\begin{align*}
E_x=\{u+A(x)u:u\in\mathbb{R}^I\}.
\end{align*}
This says precisely that $f_E(U)\subset\mathcal{U}_I$ and that the chart representative is $A_I\circ f_E=A$. Since this representative is smooth near the arbitrary point $x_0$, the map $f_E$ is smooth.
[/guided]
[/step]
[step:Construct a smooth subbundle from a Grassmannian map]
Let $f:X\to\operatorname{Gr}(k,n)$ be a smooth map. Define a subset
\begin{align*}
E_f:=\{(x,v)\in X\times\mathbb{R}^n:v\in f(x)\}.
\end{align*}
For each $x\in X$, the fibre
\begin{align*}
(E_f)_x=\{v\in\mathbb{R}^n:(x,v)\in E_f\}
\end{align*}
is the $k$-plane $f(x)$.
We prove that $E_f$ is a smooth rank-$k$ vector subbundle of $X\times\mathbb{R}^n$. Fix $x_0\in X$. Choose $I\subset\{1,\dots,n\}$ with $|I|=k$ such that $f(x_0)\in\mathcal{U}_I$. Since $\mathcal{U}_I$ is open in $\operatorname{Gr}(k,n)$ and $f$ is continuous, after shrinking to an open neighbourhood $U\subset X$ of $x_0$ we have $f(U)\subset\mathcal{U}_I$. Define $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ by
\begin{align*}
A(x)=A_I(f(x)).
\end{align*}
The map $A$ is smooth because $f$ and the chart map $A_I$ are smooth.
Let $(e_i)_{i\in I}$ be the standard basis of $\mathbb{R}^I$. For each $i\in I$, define a smooth section $\sigma_i:U\to\mathbb{R}^n$ by
\begin{align*}
\sigma_i(x)=e_i+A(x)e_i.
\end{align*}
For every $x\in U$, the vectors $(\sigma_i(x))_{i\in I}$ form a basis of the graph
\begin{align*}
f(x)=\{u+A(x)u:u\in\mathbb{R}^I\}.
\end{align*}
Thus the sections $(\sigma_i)_{i\in I}$ give a smooth local frame for $E_f$ over $U$: they are smooth maps into the ambient trivial bundle, they take values in $E_f$, and for each $x\in U$ their values form a basis of $(E_f)_x$. To spell out the local-frame criterion in this case, define the map $\Theta_U:U\times\mathbb{R}^I\to E_f|_U$ by
\begin{align*}
\Theta_U(x,u)=(x,u+A(x)u).
\end{align*}
This map is smooth because $A$ is smooth and evaluation of a linear map on $u\in\mathbb{R}^I$ is smooth. For each $x\in U$, the restriction $\Theta_U|_{\{x\}\times\mathbb{R}^I}:\{x\}\times\mathbb{R}^I\to (E_f)_x$ is the linear isomorphism whose basis vectors are $(\sigma_i(x))_{i\in I}$. Its inverse is obtained by applying the coordinate projection $P_I$ to the vector component, namely $(x,v)\mapsto (x,P_Iv)$, because $P_I(u+A(x)u)=u$. Hence $\Theta_U$ is a smooth local trivialization of $E_f$ over $U$. Since $x_0$ was arbitrary, these local trivializations make $E_f\subset X\times\mathbb{R}^n$ a smooth rank-$k$ vector subbundle.
[guided]
We now start with a smooth map $f:X\to\operatorname{Gr}(k,n)$ and must show that the fibrewise subset $E_f\subset X\times\mathbb{R}^n$ is a smooth vector subbundle. Fix $x_0\in X$. Since $f(x_0)$ is a $k$-plane in $\mathbb{R}^n$, it lies in at least one coordinate chart $\mathcal{U}_I$ of the Grassmannian. The set $\mathcal{U}_I$ is open, and smooth maps are continuous, so after replacing $X$ locally by an open neighbourhood $U\subset X$ of $x_0$, we have $f(U)\subset\mathcal{U}_I$.
On this neighbourhood define $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ by
\begin{align*}
A(x)=A_I(f(x)).
\end{align*}
The chart map $A_I$ is smooth and $f$ is smooth, so the composition $A$ is smooth. For each $x\in U$, the plane $f(x)$ is therefore the graph
\begin{align*}
f(x)=\{u+A(x)u:u\in\mathbb{R}^I\}.
\end{align*}
Let $(e_i)_{i\in I}$ be the standard basis of $\mathbb{R}^I$. For each $i\in I$, define $\sigma_i:U\to\mathbb{R}^n$ by
\begin{align*}
\sigma_i(x)=e_i+A(x)e_i.
\end{align*}
Because $A$ is smooth and evaluation on the fixed vector $e_i$ is linear, each $\sigma_i$ is smooth. At a fixed $x\in U$, the vectors $(\sigma_i(x))_{i\in I}$ are the graph vectors associated to the standard basis of $\mathbb{R}^I$, hence they form a basis of $f(x)=(E_f)_x$. Thus they give a smooth local frame for $E_f$ over $U$: each section is smooth as a map into $X\times\mathbb{R}^n$, each section takes values in $E_f$, and the section values form a basis of every fibre over $U$.
Let us write the corresponding local trivialization explicitly. Define $\Theta_U:U\times\mathbb{R}^I\to E_f|_U$ by
\begin{align*}
\Theta_U(x,u)=(x,u+A(x)u).
\end{align*}
The map $\Theta_U$ is smooth because $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ is smooth and the evaluation map $(L,u)\mapsto L(u)$ is smooth between finite-dimensional vector spaces. It is fibrewise linear. For fixed $x\in U$, its image is exactly the graph $f(x)$, and the coordinate projection $P_I$ gives the inverse on that fibre because $P_I(u+A(x)u)=u$. Therefore the inverse local map is $(x,v)\mapsto (x,P_Iv)$ on $E_f|_U$, which is the restriction of a smooth ambient projection. Hence $E_f|_U$ is smoothly trivialized by $\Theta_U$. Since every $x_0\in X$ has such a neighbourhood, $E_f$ is a smooth rank-$k$ vector subbundle of the trivial bundle.
[/guided]
[/step]
[step:Identify each subbundle with the pullback of the tautological bundle]
Let $E\subset X\times\mathbb{R}^n$ be a smooth rank-$k$ vector subbundle, and let $f_E:X\to\operatorname{Gr}(k,n)$ be the map constructed above. The pullback bundle has total space
\begin{align*}
f_E^*\gamma_k^n=\{(x,(W,v))\in X\times\gamma_k^n:W=f_E(x)\}.
\end{align*}
Define $\Phi:f_E^*\gamma_k^n\to E$ by
\begin{align*}
\Phi(x,(f_E(x),v))=(x,v).
\end{align*}
This map is well-defined because $(f_E(x),v)\in\gamma_k^n$ means $v\in f_E(x)=E_x$. Its inverse is the map $\Psi:E\to f_E^*\gamma_k^n$ defined by
\begin{align*}
\Psi(x,v)=(x,(f_E(x),v)).
\end{align*}
Both maps cover the identity map on $X$, and both are linear on each fibre.
It remains to verify smoothness in local trivializations. Fix $x_0\in X$. By the construction of $f_E$, after replacing $X$ near $x_0$ by an open neighbourhood $U\subset X$, there are a subset $I\subset\{1,\dots,n\}$ with $|I|=k$ and a smooth map $A:U\to\operatorname{Lin}(\mathbb{R}^I,\mathbb{R}^{I^c})$ such that
\begin{align*}
E_x=\{u+A(x)u:u\in\mathbb{R}^I\}
\end{align*}
for every $x\in U$. Define the local trivialization $\theta_E:U\times\mathbb{R}^I\to E|_U$ by
\begin{align*}
\theta_E(x,u)=(x,u+A(x)u),
\end{align*}
and define the local trivialization $\theta_{\gamma}:U\times\mathbb{R}^I\to (f_E^*\gamma_k^n)|_U$ by
\begin{align*}
\theta_{\gamma}(x,u)=(x,(f_E(x),u+A(x)u)).
\end{align*}
The inverse coordinate map for both trivializations is obtained by applying $P_I$ to the vector component, because $P_I(u+A(x)u)=u$. In these coordinates,
\begin{align*}
\theta_E^{-1}\circ\Phi\circ\theta_{\gamma}(x,u)=(x,u)
\end{align*}
and
\begin{align*}
\theta_{\gamma}^{-1}\circ\Psi\circ\theta_E(x,u)=(x,u).
\end{align*}
Thus $\Phi$ and $\Psi$ are smooth in vector-bundle local trivializations, with smooth local representatives equal to the identity map on $U\times\mathbb{R}^I$. Therefore
\begin{align*}
E\cong f_E^*\gamma_k^n
\end{align*}
as vector bundles over $X$.
[/step]
[step:Verify that the two constructions are inverse]
Starting with a smooth rank-$k$ subbundle $E\subset X\times\mathbb{R}^n$, the construction of the preceding step gives the subbundle
\begin{align*}
E_{f_E}=\{(x,v)\in X\times\mathbb{R}^n:v\in f_E(x)\}.
\end{align*}
Since $f_E(x)=E_x$ for every $x\in X$, this gives $E_{f_E}=E$ as subsets of $X\times\mathbb{R}^n$, and the local frames used above show that the smooth subbundle structures agree.
Conversely, starting with a smooth map $f:X\to\operatorname{Gr}(k,n)$, the associated subbundle $E_f$ has fibre $(E_f)_x=f(x)$ for every $x\in X$. Hence the map associated to $E_f$ is $f_{E_f}:X\to\operatorname{Gr}(k,n)$, given by
\begin{align*}
f_{E_f}(x)=(E_f)_x=f(x),
\end{align*}
so $f_{E_f}=f$. Therefore the assignment $E\mapsto f_E$ and the assignment $f\mapsto E_f$ are inverse bijections between smooth rank-$k$ subbundles of $X\times\mathbb{R}^n$ and smooth maps $X\to\operatorname{Gr}(k,n)$. This proves the claimed natural correspondence and the isomorphism with the pullback tautological bundle.
[guided]
There are two constructions, and we must check that neither changes the original object. Start with a smooth rank-$k$ subbundle $E\subset X\times\mathbb{R}^n$. Its associated map is $f_E:X\to\operatorname{Gr}(k,n)$ with $f_E(x)=E_x$. Applying the second construction to this map gives
\begin{align*}
E_{f_E}=\{(x,v)\in X\times\mathbb{R}^n:v\in f_E(x)\}.
\end{align*}
Since $f_E(x)=E_x$ for every $x\in X$, this is exactly
\begin{align*}
E_{f_E}=\{(x,v)\in X\times\mathbb{R}^n:v\in E_x\}=E.
\end{align*}
The equality is not only fibrewise as sets: the local frames used to prove smoothness are obtained from the same local graph descriptions, so the smooth subbundle structures agree.
Conversely, start with a smooth map $f:X\to\operatorname{Gr}(k,n)$. The associated subbundle is
\begin{align*}
E_f=\{(x,v)\in X\times\mathbb{R}^n:v\in f(x)\},
\end{align*}
so its fibre over $x$ is $(E_f)_x=f(x)$. The map associated to this subbundle is therefore
\begin{align*}
f_{E_f}(x)=(E_f)_x=f(x)
\end{align*}
for every $x\in X$. Hence $f_{E_f}=f$. Thus the assignments $E\mapsto f_E$ and $f\mapsto E_f$ are inverse bijections. Together with the previously constructed fibrewise identity isomorphism $E\cong f_E^*\gamma_k^n$, this proves the stated natural correspondence.
[/guided]
[/step]