Skip to content

Commit fd11b7a

Browse files
committed
chore: move Pretrivialization, Trivialization to the Bundle namespace (#31338)
As suggested in #30083.
1 parent 3c2700d commit fd11b7a

File tree

11 files changed

+90
-75
lines changed

11 files changed

+90
-75
lines changed

Mathlib/Geometry/Manifold/MFDeriv/UniqueDifferential.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ theorem UniqueMDiffOn.bundle_preimage (hs : UniqueMDiffOn I s) :
197197
-- TODO: move me to `Mathlib/Geometry/Manifold/VectorBundle/MDifferentiable.lean`
198198
variable [∀ b, AddCommMonoid (Z b)] [∀ b, Module 𝕜 (Z b)] [VectorBundle 𝕜 F Z]
199199

200-
theorem Trivialization.mdifferentiable [ContMDiffVectorBundle 1 F Z I]
200+
theorem Bundle.Trivialization.mdifferentiable [ContMDiffVectorBundle 1 F Z I]
201201
(e : Trivialization F (π F Z)) [MemTrivializationAtlas e] :
202202
e.MDifferentiable (I.prod 𝓘(𝕜, F)) (I.prod 𝓘(𝕜, F)) :=
203203
⟨e.contMDiffOn.mdifferentiableOn one_ne_zero, e.contMDiffOn_symm.mdifferentiableOn one_ne_zero⟩

Mathlib/Geometry/Manifold/VectorBundle/Basic.lean

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ protected theorem ContMDiff.coordChange (hf : ContMDiff IM IB n f)
383383
variable (e e')
384384

385385
variable (IB) in
386-
theorem Trivialization.contMDiffOn_symm_trans :
386+
theorem Bundle.Trivialization.contMDiffOn_symm_trans :
387387
ContMDiffOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) n
388388
(e.toOpenPartialHomeomorph.symm ≫ₕ e'.toOpenPartialHomeomorph) (e.target ∩ e'.target) := by
389389
have Hmaps : MapsTo Prod.fst (e.target ∩ e'.target) (e.baseSet ∩ e'.baseSet) := fun x hx ↦
@@ -411,7 +411,7 @@ theorem ContMDiffWithinAt.change_section_trivialization {f : M → TotalSpace F
411411
rw [Function.comp_apply, e.coordChange_apply_snd _ hy]
412412
· rw [Function.comp_apply, e.coordChange_apply_snd _ he]
413413

414-
theorem Trivialization.contMDiffWithinAt_snd_comp_iff₂ {f : M → TotalSpace F E}
414+
theorem Bundle.Trivialization.contMDiffWithinAt_snd_comp_iff₂ {f : M → TotalSpace F E}
415415
(hp : ContMDiffWithinAt IM IB n (π F E ∘ f) s x)
416416
(he : f x ∈ e.source) (he' : f x ∈ e'.source) :
417417
ContMDiffWithinAt IM 𝓘(𝕜, F) n (fun y ↦ (e (f y)).2) s x ↔
@@ -462,41 +462,43 @@ section
462462
variable {F E}
463463
variable {e e' : Trivialization F (π F E)} [MemTrivializationAtlas e] [MemTrivializationAtlas e']
464464

465-
theorem Trivialization.contMDiffWithinAt_iff {f : M → TotalSpace F E} {s : Set M} {x₀ : M}
465+
namespace Bundle.Trivialization
466+
467+
theorem contMDiffWithinAt_iff {f : M → TotalSpace F E} {s : Set M} {x₀ : M}
466468
(he : f x₀ ∈ e.source) :
467469
ContMDiffWithinAt IM (IB.prod 𝓘(𝕜, F)) n f s x₀ ↔
468470
ContMDiffWithinAt IM IB n (fun x => (f x).proj) s x₀ ∧
469471
ContMDiffWithinAt IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) s x₀ :=
470472
contMDiffWithinAt_totalSpace.trans <| and_congr_right fun h ↦
471473
Trivialization.contMDiffWithinAt_snd_comp_iff₂ h FiberBundle.mem_trivializationAt_proj_source he
472474

473-
theorem Trivialization.contMDiffAt_iff {f : M → TotalSpace F E} {x₀ : M} (he : f x₀ ∈ e.source) :
475+
theorem contMDiffAt_iff {f : M → TotalSpace F E} {x₀ : M} (he : f x₀ ∈ e.source) :
474476
ContMDiffAt IM (IB.prod 𝓘(𝕜, F)) n f x₀ ↔
475477
ContMDiffAt IM IB n (fun x => (f x).proj) x₀ ∧
476478
ContMDiffAt IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) x₀ :=
477479
e.contMDiffWithinAt_iff he
478480

479-
theorem Trivialization.contMDiffOn_iff {f : M → TotalSpace F E} {s : Set M}
481+
theorem contMDiffOn_iff {f : M → TotalSpace F E} {s : Set M}
480482
(he : MapsTo f s e.source) :
481483
ContMDiffOn IM (IB.prod 𝓘(𝕜, F)) n f s ↔
482484
ContMDiffOn IM IB n (fun x => (f x).proj) s ∧
483485
ContMDiffOn IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) s := by
484486
simp only [ContMDiffOn, ← forall_and]
485487
exact forall₂_congr fun x hx ↦ e.contMDiffWithinAt_iff (he hx)
486488

487-
theorem Trivialization.contMDiff_iff {f : M → TotalSpace F E} (he : ∀ x, f x ∈ e.source) :
489+
theorem contMDiff_iff {f : M → TotalSpace F E} (he : ∀ x, f x ∈ e.source) :
488490
ContMDiff IM (IB.prod 𝓘(𝕜, F)) n f ↔
489491
ContMDiff IM IB n (fun x => (f x).proj) ∧
490492
ContMDiff IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) :=
491493
(forall_congr' fun x ↦ e.contMDiffAt_iff (he x)).trans forall_and
492494

493-
theorem Trivialization.contMDiffOn (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
495+
theorem contMDiffOn (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
494496
ContMDiffOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) n e e.source := by
495497
have : ContMDiffOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) n id e.source := contMDiffOn_id
496498
rw [e.contMDiffOn_iff (mapsTo_id _)] at this
497499
exact (this.1.prodMk this.2).congr fun x hx ↦ (e.mk_proj_snd hx).symm
498500

499-
theorem Trivialization.contMDiffOn_symm (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
501+
theorem contMDiffOn_symm (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
500502
ContMDiffOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) n e.toOpenPartialHomeomorph.symm e.target := by
501503
rw [e.contMDiffOn_iff e.toOpenPartialHomeomorph.symm_mapsTo]
502504
refine ⟨contMDiffOn_fst.congr fun x hx ↦ e.proj_symm_apply hx,
@@ -505,7 +507,7 @@ theorem Trivialization.contMDiffOn_symm (e : Trivialization F (π F E)) [MemTriv
505507

506508
/-- Smoothness of a `C^n` section at `x₀` within a set `a` can be determined
507509
using any trivialisation whose `baseSet` contains `x₀`. -/
508-
theorem Trivialization.contMDiffWithinAt_section {s : ∀ x, E x} (a : Set B) {x₀ : B}
510+
theorem contMDiffWithinAt_section {s : ∀ x, E x} (a : Set B) {x₀ : B}
509511
{e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B)}
510512
[MemTrivializationAtlas e] (hx₀ : x₀ ∈ e.baseSet) :
511513
ContMDiffWithinAt IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) a x₀ ↔
@@ -517,7 +519,7 @@ theorem Trivialization.contMDiffWithinAt_section {s : ∀ x, E x} (a : Set B) {x
517519

518520
/-- Smoothness of a `C^n` section at `x₀` can be determined
519521
using any trivialisation whose `baseSet` contains `x₀`. -/
520-
theorem Trivialization.contMDiffAt_section_iff {s : ∀ x, E x} {x₀ : B}
522+
theorem contMDiffAt_section_iff {s : ∀ x, E x} {x₀ : B}
521523
(e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B))
522524
[MemTrivializationAtlas e] (hx₀ : x₀ ∈ e.baseSet) :
523525
ContMDiffAt IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) x₀ ↔
@@ -530,7 +532,7 @@ alias contMDiffAt_section_of_mem_baseSet := Trivialization.contMDiffAt_section_i
530532

531533
/-- Smoothness of a `C^n` section on `s` can be determined
532534
using any trivialisation whose `baseSet` contains `s`. -/
533-
theorem Trivialization.contMDiffOn_section_iff {s : ∀ x, E x} {a : Set B}
535+
theorem contMDiffOn_section_iff {s : ∀ x, E x} {a : Set B}
534536
(e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B))
535537
[MemTrivializationAtlas e] (ha : IsOpen a) (ha' : a ⊆ e.baseSet) :
536538
ContMDiffOn IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) a ↔
@@ -545,7 +547,7 @@ alias contMDiffOn_section_of_mem_baseSet := Trivialization.contMDiffOn_section_i
545547

546548
/-- For any trivialization `e`, the smoothness of a `C^n` section on `e.baseSet`
547549
can be determined using `e`. -/
548-
theorem Trivialization.contMDiffOn_section_baseSet_iff {s : ∀ x, E x}
550+
theorem contMDiffOn_section_baseSet_iff {s : ∀ x, E x}
549551
(e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B))
550552
[MemTrivializationAtlas e] :
551553
ContMDiffOn IB (IB.prod 𝓘(𝕜, F)) n (fun x ↦ TotalSpace.mk' F x (s x)) e.baseSet ↔
@@ -555,6 +557,8 @@ theorem Trivialization.contMDiffOn_section_baseSet_iff {s : ∀ x, E x}
555557
@[deprecated (since := "2025-09-15")]
556558
alias contMDiffOn_section_of_mem_baseSet₀ := Trivialization.contMDiffOn_section_baseSet_iff
557559

560+
end Bundle.Trivialization
561+
558562
end
559563

560564
/-! ### Core construction for `C^n` vector bundles -/

Mathlib/Geometry/Manifold/VectorBundle/LocalFrame.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Suppose `{sᵢ}` is a local frame on `U`, and `hs : IsLocalFrameOn s U`.
6464
6565
In the following lemmas, let `e` be a compatible local trivialisation of `V`, and `b` a basis of
6666
the model fiber `F`.
67-
* `Trivialization.basisAt e b`: for each `x ∈ e.baseSet`,
67+
* `Bundle.Trivialization.basisAt e b`: for each `x ∈ e.baseSet`,
6868
return the basis of `V x` induced by `e` and `b`
6969
* `e.localFrame b`: the local frame on `V` induced by `e` and `b`.
7070
Use `e.localFrame b i` to access the i-th section in that frame.
@@ -325,7 +325,7 @@ end IsLocalFrameOn
325325

326326
end IsLocalFrame
327327

328-
namespace Trivialization
328+
namespace Bundle.Trivialization
329329

330330
variable [VectorBundle 𝕜 F V] [ContMDiffVectorBundle n F V I] {ι : Type*} {x : M}
331331
(e : Trivialization F (TotalSpace.proj : TotalSpace F V → M)) [MemTrivializationAtlas e]
@@ -436,7 +436,7 @@ lemma localFrame_coeff_eq_coeff (hxe : x ∈ e.baseSet) {i : ι} :
436436
e.localFrame_coeff I b i x (s x) = b.repr (e ((T% s) x)).2 i := by
437437
simp [e.localFrame_coeff_apply_of_mem_baseSet b hxe, basisAt]
438438

439-
end Trivialization
439+
end Bundle.Trivialization
440440

441441
/-! # Determining smoothness of a section via its local frame coefficients
442442
We show that for finite rank bundles over a complete field, a section is smooth iff its coefficients

Mathlib/Geometry/Manifold/VectorBundle/MDifferentiable.lean

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,9 @@ lemma MDifferentiableWithinAt.change_section_trivialization
226226
rw [Function.comp_apply, e.coordChange_apply_snd e' hy]
227227
· rw [Function.comp_apply, e.coordChange_apply_snd _ he]
228228

229-
theorem Trivialization.mdifferentiableWithinAt_snd_comp_iff₂
229+
namespace Bundle.Trivialization
230+
231+
theorem mdifferentiableWithinAt_snd_comp_iff₂
230232
{e e' : Trivialization F TotalSpace.proj} [MemTrivializationAtlas e] [MemTrivializationAtlas e']
231233
{f : M → TotalSpace F E} {s : Set M} {x₀ : M}
232234
(hex₀ : f x₀ ∈ e.source) (he'x₀ : f x₀ ∈ e'.source)
@@ -238,7 +240,7 @@ theorem Trivialization.mdifferentiableWithinAt_snd_comp_iff₂
238240

239241
variable (e e')
240242

241-
theorem Trivialization.mdifferentiableAt_snd_comp_iff₂
243+
theorem mdifferentiableAt_snd_comp_iff₂
242244
{e e' : Trivialization F TotalSpace.proj} [MemTrivializationAtlas e] [MemTrivializationAtlas e']
243245
{f : M → TotalSpace F E} {x₀ : M}
244246
(he : f x₀ ∈ e.source) (he' : f x₀ ∈ e'.source)
@@ -250,7 +252,7 @@ theorem Trivialization.mdifferentiableAt_snd_comp_iff₂
250252

251253
/-- Characterization of differentiable functions into a vector bundle in terms
252254
of any trivialization. Version at a point within a set. -/
253-
theorem Trivialization.mdifferentiableWithinAt_totalSpace_iff
255+
theorem mdifferentiableWithinAt_totalSpace_iff
254256
(e : Trivialization F (TotalSpace.proj : TotalSpace F E → B)) [MemTrivializationAtlas e]
255257
(f : M → TotalSpace F E) {s : Set M} {x₀ : M}
256258
(he : f x₀ ∈ e.source) :
@@ -266,7 +268,7 @@ theorem Trivialization.mdifferentiableWithinAt_totalSpace_iff
266268

267269
/-- Characterization of differentiable functions into a vector bundle in terms
268270
of any trivialization. Version at a point. -/
269-
theorem Trivialization.mdifferentiableAt_totalSpace_iff
271+
theorem mdifferentiableAt_totalSpace_iff
270272
(e : Trivialization F (TotalSpace.proj : TotalSpace F E → B)) [MemTrivializationAtlas e]
271273
(f : M → TotalSpace F E) {x₀ : M}
272274
(he : f x₀ ∈ e.source) :
@@ -282,7 +284,7 @@ theorem Trivialization.mdifferentiableAt_totalSpace_iff
282284

283285
/-- Characterization of differentiable functions into a vector bundle in terms
284286
of any trivialization. Version at a point within a set. -/
285-
theorem Trivialization.mdifferentiableWithinAt_section_iff
287+
theorem mdifferentiableWithinAt_section_iff
286288
(e : Trivialization F (TotalSpace.proj : TotalSpace F E → B)) [MemTrivializationAtlas e]
287289
(s : Π b : B, E b) {u : Set B} {b₀ : B}
288290
(hex₀ : b₀ ∈ e.baseSet) :
@@ -295,7 +297,7 @@ theorem Trivialization.mdifferentiableWithinAt_section_iff
295297

296298
/-- Characterization of differentiable functions into a vector bundle in terms
297299
of any trivialization. Version at a point. -/
298-
theorem Trivialization.mdifferentiableAt_section_iff
300+
theorem mdifferentiableAt_section_iff
299301
(e : Trivialization F (TotalSpace.proj : TotalSpace F E → B)) [MemTrivializationAtlas e]
300302
(s : Π b : B, E b) {b₀ : B}
301303
(hex₀ : b₀ ∈ e.baseSet) :
@@ -306,7 +308,7 @@ theorem Trivialization.mdifferentiableAt_section_iff
306308
variable {IB} in
307309
/-- Differentiability of a section on `s` can be determined
308310
using any trivialisation whose `baseSet` contains `s`. -/
309-
theorem Trivialization.mdifferentiableOn_section_iff {s : ∀ x, E x} {a : Set B}
311+
theorem mdifferentiableOn_section_iff {s : ∀ x, E x} {a : Set B}
310312
(e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B))
311313
[MemTrivializationAtlas e] (ha : IsOpen a) (ha' : a ⊆ e.baseSet) :
312314
MDifferentiableOn IB (IB.prod 𝓘(𝕜, F)) (fun x ↦ TotalSpace.mk' F x (s x)) a ↔
@@ -319,13 +321,15 @@ theorem Trivialization.mdifferentiableOn_section_iff {s : ∀ x, E x} {a : Set B
319321
variable {IB} in
320322
/-- For any trivialization `e`, the differentiability of a section on `e.baseSet`
321323
can be determined using `e`. -/
322-
theorem Trivialization.mdifferentiableOn_section_baseSet_iff {s : ∀ x, E x}
324+
theorem mdifferentiableOn_section_baseSet_iff {s : ∀ x, E x}
323325
(e : Trivialization F (Bundle.TotalSpace.proj : Bundle.TotalSpace F E → B))
324326
[MemTrivializationAtlas e] :
325327
MDifferentiableOn IB (IB.prod 𝓘(𝕜, F)) (fun x ↦ TotalSpace.mk' F x (s x)) e.baseSet ↔
326328
MDifferentiableOn IB 𝓘(𝕜, F) (fun x ↦ (e ⟨x, s x⟩).2) e.baseSet :=
327329
e.mdifferentiableOn_section_iff e.open_baseSet subset_rfl
328330

331+
end Bundle.Trivialization
332+
329333
end
330334

331335
section operations

Mathlib/Topology/Covering/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ that covers `f⁻¹(V)` such that for every `i`,
434434
2. `V` is contained in the image `f(Uᵢ)`,
435435
3. the open sets in `V` are determined by their preimages in `Uᵢ`.
436436
437-
Then `f` admits a `Trivialization` over the base set `V`. -/
437+
Then `f` admits a `Bundle.Trivialization` over the base set `V`. -/
438438
@[simps source target baseSet] noncomputable def IsOpen.trivializationDiscrete [Nonempty (X → E)]
439439
{ι} [Nonempty ι] [TopologicalSpace ι] [DiscreteTopology ι] (U : ι → Set E) (V : Set X)
440440
(open_V : IsOpen V) (open_iff : ∀ i {W}, W ⊆ V → (IsOpen W ↔ IsOpen (f ⁻¹' W ∩ U i)))

Mathlib/Topology/Covering/Quotient.lean

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,19 @@ include hf
7676

7777
section MulAction
7878

79+
open Bundle
80+
7981
variable [ContinuousConstSMul G E]
8082
variable (hfG : ∀ {e₁ e₂}, f e₁ = f e₂ ↔ e₁ ∈ MulAction.orbit G e₂)
8183
include hfG
8284

8385
/-- If a group `G` acts on a space `E` and `U` is an open subset disjoint from all other
8486
`G`-translates of itself, and `p` is a quotient map by this action, then `p` admits a
85-
`Trivialization` over the base set `p(U)`. -/
87+
`Bundle.Trivialization` over the base set `p(U)`. -/
8688
@[to_additive (attr := simps! source target baseSet)
8789
/-- If a group `G` acts on a space `E` and `U` is an open subset disjoint from all
8890
other `G`-translates of itself, and `p` is a quotient map by this action, then `p` admits a
89-
`Trivialization` over the base set `p(U)`. -/]
91+
`Bundle.Trivialization` over the base set `p(U)`. -/]
9092
noncomputable def trivializationOfSMulDisjoint [TopologicalSpace G] [DiscreteTopology G]
9193
(U : Set E) (open_U : IsOpen U) (disjoint : ∀ g : G, ((g • ·) '' U ∩ U).Nonempty → g = 1) :
9294
Trivialization G f := by

Mathlib/Topology/FiberBundle/Constructions.lean

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ variable [TopologicalSpace B] (F₁ : Type*) [TopologicalSpace F₁] (E₁ : B
122122
[TopologicalSpace (TotalSpace F₁ E₁)] (F₂ : Type*) [TopologicalSpace F₂] (E₂ : B → Type*)
123123
[TopologicalSpace (TotalSpace F₂ E₂)]
124124

125-
namespace Trivialization
125+
namespace Bundle.Trivialization
126126

127127
variable {F₁ E₁ F₂ E₂}
128128
variable (e₁ : Trivialization F₁ (π F₁ E₁)) (e₂ : Trivialization F₂ (π F₂ E₂))
@@ -217,9 +217,9 @@ noncomputable def prod : Trivialization (F₁ × F₂) (π (F₁ × F₂) (E₁
217217
theorem prod_symm_apply (x : B) (w₁ : F₁) (w₂ : F₂) :
218218
(prod e₁ e₂).toPartialEquiv.symm (x, w₁, w₂) = ⟨x, e₁.symm x w₁, e₂.symm x w₂⟩ := rfl
219219

220-
end Trivialization
220+
end Bundle.Trivialization
221221

222-
open Trivialization
222+
open Bundle Trivialization
223223

224224
variable [∀ x, Zero (E₁ x)] [∀ x, Zero (E₂ x)] [∀ x : B, TopologicalSpace (E₁ x)]
225225
[∀ x : B, TopologicalSpace (E₂ x)] [FiberBundle F₁ E₁] [FiberBundle F₂ E₂]
@@ -248,6 +248,8 @@ end Prod
248248

249249
/-! ### Pullbacks of fiber bundles -/
250250

251+
open Bundle
252+
251253
section
252254

253255
universe u v w₁ w₂ U
@@ -299,7 +301,7 @@ variable [∀ _b, Zero (E _b)] {K : Type U} [FunLike K B' B] [ContinuousMapClass
299301

300302
/-- A fiber bundle trivialization can be pulled back to a trivialization on the pullback bundle. -/
301303
@[simps]
302-
noncomputable def Trivialization.pullback (e : Trivialization F (π F E)) (f : K) :
304+
noncomputable def Bundle.Trivialization.pullback (e : Trivialization F (π F E)) (f : K) :
303305
Trivialization F (π F ((f : B' → B) *ᵖ E)) where
304306
toFun z := (z.proj, (e (Pullback.lift f z)).2)
305307
invFun y := @TotalSpace.mk _ F (f *ᵖ E) y.1 (e.symm (f y.1) y.2)

0 commit comments

Comments
 (0)