Documentation

TauCeti.Geometry.Manifold.VectorBundle.Pullback

Regularity and functoriality of pullback bundles #

A map into the total space of a pullback bundle is smooth exactly when its projection to the new base and its lift to the original total space are smooth. This is the smooth analogue of the initial-topology description of a pullback bundle.

The criterion lets a map into a pullback bundle be checked without unfolding the pulled-back trivializations. It is particularly useful for tangent maps whose base points agree through a commuting square.

The criterion applies to fibre bundles with a normed model fibre; the fibres themselves need only be nonempty topological spaces, without an additive or vector-space structure.

Along a local diffeomorphism f, regularity of sections can be read upstairs: a section σ of E is C^m at f x exactly when its pullback y ↦ σ (f y), a section of f *ᵖ E, is C^m at x (IsLocalDiffeomorphAt.contMDiffAt_section_iff_pullback), and for a surjective local diffeomorphism, such as the orbit projection of a free properly discontinuous action, a section is C^m exactly when its pullback is (IsLocalDiffeomorph.contMDiff_section_iff_pullback).

The file also records the functoriality of Mathlib's pullback f *ᵖ E in C^n maps f, on its own carrier. The canonical map Pullback.lift f to the total space of E is C^n (Bundle.Pullback.contMDiff_lift), and a family of fibrewise maps inducing a C^n map of total spaces pulls back along a C^n map to one that does too (Bundle.Pullback.contMDiff_fiberwise). When the model fibre is finite-dimensional over a complete field 𝕜, TauCeti.bundleDiffeomorph and the fibre instances of TauCeti.Topology.VectorBundle.Pullback therefore make the pullback x ↦ e (f x) of a C^n family e of fibrewise linear equivalences again a C^n bundle equivalence. The pullback along the identity is C^n diffeomorphic to E (Bundle.Pullback.idDiffeomorph), and the pullback along a composite g ∘ f to the iterated pullback f *ᵖ (g *ᵖ E) (Bundle.Pullback.compDiffeomorph), whatever the regularity of the maps pulled back along. Both comparisons are the identity on every fibre, so for vector bundles they are fibrewise linear, and over a complex model at n = ∞ they are holomorphic bundle equivalences between holomorphic vector bundles, which Mathlib's ContMDiffVectorBundle.pullback makes f *ᵖ E when E is one.

References #

The native Hom section between two pullbacks by the same map is Cⁿ exactly when its original Hom field along that map is Cⁿ (Bundle.Pullback.contMDiff_hom_section_iff). This dictionary requires neither finite rank nor a smooth bundle structure on the fibres.

theorem Bundle.Pullback.contMDiffAt_iff {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {EX : Type u_5} {H : Type u_6} {H' : Type u_7} {HX : Type u_8} {B : Type u_9} {B' : Type u_10} {X : Type u_11} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [NormedAddCommGroup EX] [NormedSpace 𝕜 EX] [TopologicalSpace H] [TopologicalSpace H'] [TopologicalSpace HX] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} {IX : ModelWithCorners 𝕜 EX HX} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] [TopologicalSpace X] [ChartedSpace HX X] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {n : WithTop ℕ∞} (f : K) {q : X → TotalSpace F (⇑f *ᵖ E)} {x : X} (hf : ContMDiffAt I' I n (⇑f) (q x).proj) :
ContMDiffAt IX (I'.prod (modelWithCornersSelf 𝕜 F)) n q x ↔ ContMDiffAt IX I' n (fun (y : X) => (q y).proj) x ∧ ContMDiffAt IX (I.prod (modelWithCornersSelf 𝕜 F)) n (fun (y : X) => lift (⇑f) (q y)) x

A map into a pullback bundle is C^n at a point exactly when its base projection and its lift to the original total space are C^n there.

theorem Bundle.Pullback.contMDiff_iff {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {EX : Type u_5} {H : Type u_6} {H' : Type u_7} {HX : Type u_8} {B : Type u_9} {B' : Type u_10} {X : Type u_11} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [NormedAddCommGroup EX] [NormedSpace 𝕜 EX] [TopologicalSpace H] [TopologicalSpace H'] [TopologicalSpace HX] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} {IX : ModelWithCorners 𝕜 EX HX} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] [TopologicalSpace X] [ChartedSpace HX X] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {n : WithTop ℕ∞} (f : K) (hf : ContMDiff I' I n ⇑f) {q : X → TotalSpace F (⇑f *ᵖ E)} :
ContMDiff IX (I'.prod (modelWithCornersSelf 𝕜 F)) n q ↔ (ContMDiff IX I' n fun (y : X) => (q y).proj) ∧ ContMDiff IX (I.prod (modelWithCornersSelf 𝕜 F)) n fun (y : X) => lift (⇑f) (q y)

A map into a pullback bundle is C^n exactly when its base projection and its lift to the original total space are C^n.

theorem Bundle.Pullback.contMDiffAt_lift {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {n : WithTop ℕ∞} (f : K) {p : TotalSpace F (⇑f *ᵖ E)} (hf : ContMDiffAt I' I n (⇑f) p.proj) :
ContMDiffAt (I'.prod (modelWithCornersSelf 𝕜 F)) (I.prod (modelWithCornersSelf 𝕜 F)) n (lift ⇑f) p

The canonical map Pullback.lift f from the total space of a pullback bundle to the original total space is C^n at every point over which f is C^n.

theorem Bundle.Pullback.contMDiff_lift {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {n : WithTop ℕ∞} (f : K) (hf : ContMDiff I' I n ⇑f) :
ContMDiff (I'.prod (modelWithCornersSelf 𝕜 F)) (I.prod (modelWithCornersSelf 𝕜 F)) n (lift ⇑f)

The canonical map Pullback.lift f from the total space of a pullback bundle to the original total space is C^n when f is.

theorem Bundle.Pullback.contMDiff_fiberwise {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {n : WithTop ℕ∞} {F' : Type u_14} [NormedAddCommGroup F'] [NormedSpace 𝕜 F'] {E' : B → Type u_15} [∀ (x : B), Nonempty (E' x)] [(x : B) → TopologicalSpace (E' x)] [TopologicalSpace (TotalSpace F' E')] [FiberBundle F' E'] (φ : (b : B) → E b → E' b) (hφ : ContMDiff (I.prod (modelWithCornersSelf 𝕜 F)) (I.prod (modelWithCornersSelf 𝕜 F')) n fun (p : TotalSpace F E) => ⟨p.proj, φ p.proj p.snd⟩) (f : K) (hf : ContMDiff I' I n ⇑f) :
ContMDiff (I'.prod (modelWithCornersSelf 𝕜 F)) (I'.prod (modelWithCornersSelf 𝕜 F')) n fun (p : TotalSpace F (⇑f *ᵖ E)) => ⟨p.proj, φ (f p.proj) p.snd⟩

Pulling back is natural: if a family φ of fibrewise maps from E to E' induces a C^n map of total spaces, then so does the family x ↦ φ (f x) pulled back along a C^n map f, from f *ᵖ E to f *ᵖ E'. The fibrewise maps need not be linear.

def Bundle.Pullback.idDiffeomorph {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {H : Type u_6} {B : Type u_9} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [TopologicalSpace H] {I : ModelWithCorners 𝕜 EM H} [TopologicalSpace B] [ChartedSpace H B] (E : B → Type u_13) [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} :

The pullback of a bundle along the identity is the bundle itself: the canonical map Pullback.lift is a C^n diffeomorphism of total spaces, the identity on every fibre. Over a complex model at n = ∞ this is a biholomorphism of total spaces.

Instances For
    @[simp]
    theorem Bundle.Pullback.idDiffeomorph_apply {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {H : Type u_6} {B : Type u_9} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [TopologicalSpace H] {I : ModelWithCorners 𝕜 EM H} [TopologicalSpace B] [ChartedSpace H B] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} (p : TotalSpace F (⇑ContMDiffMap.id *ᵖ E)) :
    (idDiffeomorph E) p = ⟨p.proj, p.snd⟩
    @[simp]
    theorem Bundle.Pullback.idDiffeomorph_symm_apply {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {H : Type u_6} {B : Type u_9} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [TopologicalSpace H] {I : ModelWithCorners 𝕜 EM H} [TopologicalSpace B] [ChartedSpace H B] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} (p : TotalSpace F E) :
    (idDiffeomorph E).symm p = ⟨p.proj, p.snd⟩
    def Bundle.Pullback.compDiffeomorph {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] (E : B → Type u_13) [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} {EM'' : Type u_14} {H'' : Type u_15} {B'' : Type u_16} [NormedAddCommGroup EM''] [NormedSpace 𝕜 EM''] [TopologicalSpace H''] {I'' : ModelWithCorners 𝕜 EM'' H''} [TopologicalSpace B''] [ChartedSpace H'' B''] (g : ContMDiffMap I' I B' B m) (f : ContMDiffMap I'' I' B'' B' m) :
    Diffeomorph (I''.prod (modelWithCornersSelf 𝕜 F)) (I''.prod (modelWithCornersSelf 𝕜 F)) (TotalSpace F (⇑(g.comp f) *ᵖ E)) (TotalSpace F (⇑f *ᵖ (⇑g *ᵖ E))) n

    Pulling back along a composite is pulling back in two steps: for C^m maps f : B'' → B' and g : B' → B, the total spaces of (g ∘ f) *ᵖ E and f *ᵖ (g *ᵖ E) are C^n diffeomorphic, for any m and n, by the identity on every fibre E (g (f x)).

    Instances For
      @[simp]
      theorem Bundle.Pullback.compDiffeomorph_apply {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} {EM'' : Type u_14} {H'' : Type u_15} {B'' : Type u_16} [NormedAddCommGroup EM''] [NormedSpace 𝕜 EM''] [TopologicalSpace H''] {I'' : ModelWithCorners 𝕜 EM'' H''} [TopologicalSpace B''] [ChartedSpace H'' B''] (g : ContMDiffMap I' I B' B m) (f : ContMDiffMap I'' I' B'' B' m) (p : TotalSpace F (⇑(g.comp f) *ᵖ E)) :
      (compDiffeomorph E g f) p = ⟨p.proj, p.snd⟩
      @[simp]
      theorem Bundle.Pullback.compDiffeomorph_symm_apply {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} {EM'' : Type u_14} {H'' : Type u_15} {B'' : Type u_16} [NormedAddCommGroup EM''] [NormedSpace 𝕜 EM''] [TopologicalSpace H''] {I'' : ModelWithCorners 𝕜 EM'' H''} [TopologicalSpace B''] [ChartedSpace H'' B''] (g : ContMDiffMap I' I B' B m) (f : ContMDiffMap I'' I' B'' B' m) (p : TotalSpace F (⇑f *ᵖ (⇑g *ᵖ E))) :
      (compDiffeomorph E g f).symm p = ⟨p.proj, p.snd⟩
      theorem Bundle.Pullback.lift_comp_compDiffeomorph {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (TotalSpace F E)] [FiberBundle F E] {m n : WithTop ℕ∞} {EM'' : Type u_14} {H'' : Type u_15} {B'' : Type u_16} [NormedAddCommGroup EM''] [NormedSpace 𝕜 EM''] [TopologicalSpace H''] {I'' : ModelWithCorners 𝕜 EM'' H''} [TopologicalSpace B''] [ChartedSpace H'' B''] (g : ContMDiffMap I' I B' B m) (f : ContMDiffMap I'' I' B'' B' m) :
      lift ⇑g ∘ lift ⇑f ∘ ⇑(compDiffeomorph E g f) = lift ⇑(g.comp f)

      Under compDiffeomorph, the canonical map of the composite pullback is the composite of the canonical maps of the two steps.

      theorem IsLocalDiffeomorphAt.contMDiffAt_section_iff_pullback {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {m n : WithTop ℕ∞} {f : K} {x : B'} (hf : IsLocalDiffeomorphAt I' I n (⇑f) x) (hm : m ≤ n) {σ : (b : B) → E b} :
      ContMDiffAt I (I.prod (modelWithCornersSelf 𝕜 F)) m (fun (b : B) => ⟨b, σ b⟩) (f x) ↔ ContMDiffAt I' (I'.prod (modelWithCornersSelf 𝕜 F)) m (fun (y : B') => ⟨y, σ (f y)⟩) x

      If f is a C^n local diffeomorphism at x and m ≤ n, a section σ of E is C^m at f x exactly when its pullback y ↦ σ (f y), a section of f *ᵖ E, is C^m at x.

      theorem IsLocalDiffeomorph.contMDiff_section_iff_pullback {𝕜 : Type u_1} {F : Type u_2} {EM : Type u_3} {EM' : Type u_4} {H : Type u_6} {H' : Type u_7} {B : Type u_9} {B' : Type u_10} {K : Type u_12} [NontriviallyNormedField 𝕜] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup EM] [NormedSpace 𝕜 EM] [NormedAddCommGroup EM'] [NormedSpace 𝕜 EM'] [TopologicalSpace H] [TopologicalSpace H'] {I : ModelWithCorners 𝕜 EM H} {I' : ModelWithCorners 𝕜 EM' H'} [TopologicalSpace B] [ChartedSpace H B] [TopologicalSpace B'] [ChartedSpace H' B'] {E : B → Type u_13} [∀ (x : B), Nonempty (E x)] [(x : B) → TopologicalSpace (E x)] [TopologicalSpace (Bundle.TotalSpace F E)] [FiberBundle F E] [FunLike K B' B] [ContinuousMapClass K B' B] {m n : WithTop ℕ∞} {f : K} (hf : IsLocalDiffeomorph I' I n ⇑f) (hsurj : Function.Surjective ⇑f) (hm : m ≤ n) {σ : (b : B) → E b} :
      (ContMDiff I (I.prod (modelWithCornersSelf 𝕜 F)) m fun (b : B) => ⟨b, σ b⟩) ↔ ContMDiff I' (I'.prod (modelWithCornersSelf 𝕜 F)) m fun (y : B') => ⟨y, σ (f y)⟩

      If f is a surjective C^n local diffeomorphism and m ≤ n, a section σ of E is C^m exactly when its pullback y ↦ σ (f y), a section of f *ᵖ E, is C^m.

      theorem Bundle.Pullback.contMDiff_hom_section_iff {𝕜 : Type u_1} {B : Type u_2} {X : Type u_3} {F : Type u_4} {G : Type u_5} {K : Type u_6} {EB : Type u_7} {HB : Type u_8} {EX : Type u_9} {HX : Type u_10} [NontriviallyNormedField 𝕜] [NormedAddCommGroup EB] [NormedSpace 𝕜 EB] [TopologicalSpace HB] {IB : ModelWithCorners 𝕜 EB HB} [TopologicalSpace B] [ChartedSpace HB B] [NormedAddCommGroup EX] [NormedSpace 𝕜 EX] [TopologicalSpace HX] {IX : ModelWithCorners 𝕜 EX HX} [TopologicalSpace X] [ChartedSpace HX X] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [NormedAddCommGroup G] [NormedSpace 𝕜 G] {V : B → Type u_11} {W : B → Type u_12} [(b : B) → AddCommGroup (V b)] [(b : B) → Module 𝕜 (V b)] [(b : B) → TopologicalSpace (V b)] [(b : B) → AddCommGroup (W b)] [(b : B) → Module 𝕜 (W b)] [(b : B) → TopologicalSpace (W b)] [∀ (b : B), IsTopologicalAddGroup (W b)] [∀ (b : B), ContinuousSMul 𝕜 (W b)] [TopologicalSpace (TotalSpace F V)] [FiberBundle F V] [VectorBundle 𝕜 F V] [TopologicalSpace (TotalSpace G W)] [FiberBundle G W] [VectorBundle 𝕜 G W] [FunLike K X B] [ContinuousMapClass K X B] {n : WithTop ℕ∞} (f : K) (hf : ContMDiff IX IB n ⇑f) (A : (x : X) → V (f x) →L[𝕜] W (f x)) :
      (ContMDiff IX (IX.prod (modelWithCornersSelf 𝕜 (F →L[𝕜] G))) n fun (x : X) => ⟨x, A x⟩) ↔ ContMDiff IX (IB.prod (modelWithCornersSelf 𝕜 (F →L[𝕜] G))) n fun (x : X) => ⟨f x, A x⟩

      A section of Hom between two pullbacks is Cⁿ exactly when its field of maps along the base map is Cⁿ in the original hom bundle. No rank or smooth-bundle assumption is needed.