Connection on pullback bundle. Let $E\to N$ be a vector bundle and $f:M\to N$ be a smooth map.
The pullback $f^*:\Omega^k(N,E)\to \Omega^k(M,f^*E)$ is then defined by $$(f^*\omega)_x(v_1,...,v_k)=\omega_{f(x)}((df)_x(v_1),...,(df)_x(v_k))$$
with $x\in M$ and $v_1,...,v_k\in T_xM$.
First question: how can I rewrite this pullback as a map $f^*\omega:\mathfrak{X}(M)\times...\times \mathfrak{X}(M)\to \Gamma(M,f^*E)$?
My problem is that $df:\mathfrak{X}(M)\to \mathfrak{X}(N)$ is well defined as long as $f$ is a diffeomorphism. However, $df:\mathfrak{X}(M)\to \Gamma(M,f^*TN)$ is actually well defined.
Then, I know that the connection $f^*\nabla$ on $f^*E\to M$ is uniquely determined by
$$(f^*\nabla)(f^*s):=f^*(\nabla(s))\in \Omega^1(M,f^*E)$$
Second question: In some books, I saw the notation $$(f^*\nabla)_X(f^*s)=f^*(\nabla_{df(X)}(s))=\nabla_{df(X)}(s)\circ f$$
but as long as $f$ is not a diffeomorphism $df(X)$ is not a vector field on $N$ so it doesn't make sense writing $\nabla_{df(X)}$. How can I solve this problem?
 A: To write the pullback globally as a map of modules, you need to split the construction into two parts. To make everything less confusing, let me denote by $f^{\star}(E)$ the pullback bundle and denote by $\mathfrak{X}_f(M) = \Gamma(M,f^{\star}(TN))$ vector fields along $f$. Thus, the maps and constructions involving $\star$ have nothing to do with the derivative while the maps involving $*$ include the derivative. Now,

*

*Given a form $\omega \in \Omega^k(N,E)$, we get an element $f^{\star}(\omega) \in \Gamma \left( \operatorname{Alt}^k \left( f^{\star}(TN), f^{\star}(E)\right) \right)$ given by
$$ f^{\star}(\omega)|_p \left( \xi_1, \dots, \xi_k \right) = \omega_{f(p)} \left( \xi_1, \dots, \xi_k \right)$$
where $\xi_i \in \mathfrak{X}_f(M)$ are vector fields along $f$ so that $\xi_i(p) \in T_{f(p)}N$ and the formula makes sense. Globally, this corresponds to an alternating map of $C^{\infty}(M)$-modules
$$f^{\star}(\omega) \colon \mathfrak{X}_f(M) \times \dots \mathfrak{X}_f(M) \rightarrow \Gamma(f^{\star}(E)).$$

*In addition, you have the map $df \colon \mathfrak{X}(M) \rightarrow \mathfrak{X}_f(M)$. Then
$$ f^{*}(\omega)(X_1, \dots, X_k) = f^{\star}(\omega)(df(X_1), \dots, df(X_k)). $$
Regarding the second question, the formula
$$ f^{*}(\nabla)_{X}(f^{\star}(s)) = \nabla_{df(X)}(s) \circ f $$
is meant to be understood locally as
$$ \left( f^{*}(\nabla)_{X}(f^{\star}(s)) \right)|_{p} = \left( \nabla_{df|_{p}(X)}(s) \right) \textrm{ (at }f(p)\textrm{)}.$$
It makes sense even when $f$ is not a diffeomorphism as a connection $\nabla_X(s)$ is tensorial in the $X$ variable. You can also understand the formula globally by splitting the construction of the pullback connection into two parts:

*

*There is a map $f^{\star}(\nabla) \colon \mathfrak{X}_f(M) \times \Gamma(E) \rightarrow \Gamma(f^{\star}(E))$ given by
$$ \left( f^{\star}(\nabla)_{\xi} \right)(s)|_{p} = \left( \nabla_{\xi(p)} s \right)|_{f(p)}. $$

*The pullback connection $f^{*}(\nabla)$ is the unique connection $f^{*}(\nabla) \colon \mathfrak{X}(M) \times \Gamma(f^{\star}(E)) \rightarrow \Gamma(f^{\star}(E))$ which satisfies
$$ f^{*}(\nabla)_{X}(f^{\star}(s)) = f^{\star}(\nabla)_{df(X)}(s). $$
