Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit f7ebde7

Browse files
committed
refactor(topology/vector_bundle/hom): fibres of hom-bundle carry strong topology (#19107)
Currently, the "hom-bundle" between two vector bundles `E₁` and `E₂` has fibre over `x` which is a type synonym of `E₁ x →SL[σ] E₂ x`, but which carries a topology produced by the hom-bundle construction (using the identification by trivializations withe the model fibre `F₁ →SL[σ] F₂`). This was needed when this bundle was made (#14541) because at that time, `F₁ →SL[σ] F₂` (continuous linear maps between normed spaces) carried a topology in mathlib but `E₁ x →SL[σ] E₂ x` (continuous linear maps between topological vector spaces) did not. As of #16053, continuous linear maps between topological vector spaces do carry a topology, the strong topology. So we can kill the old topology on the type synonym and just use the default one, which should avoid annoying issues later. A few minor changes are needed to make this go through: - we revert #14377: the question is whether the "vector prebundle" construction, whose canonical use is for the hom-bundle, should or should not require a topology on the fibres. Now that in applications it could happen either way (fibres do or don't come with a topology), it will be more convenient to assume that they do carry a topology, and put the "artificial" topology on the fibres if they happen to not. - some assumptions need to change from `[add_comm_monoid]` to `[add_comm_group]`, this is mathematically harmless since they are also modules over a field. - generalize the construction `continuous_linear_equiv.arrow_congrSL` from normed spaces to topological vector spaces Co-authored-by: Moritz Doll <moritz.doll@googlemail.com> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
1 parent d87199d commit f7ebde7

File tree

9 files changed

+192
-115
lines changed

9 files changed

+192
-115
lines changed

src/analysis/convolution.lean

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1497,7 +1497,9 @@ begin
14971497
simp only [ef, eg, comp_app, continuous_linear_equiv.apply_symm_apply, coe_comp',
14981498
continuous_linear_equiv.prod_apply, continuous_linear_equiv.map_sub,
14991499
continuous_linear_equiv.arrow_congr, continuous_linear_equiv.arrow_congrSL_symm_apply,
1500-
continuous_linear_equiv.coe_coe, comp_app, continuous_linear_equiv.apply_symm_apply] },
1500+
continuous_linear_equiv.coe_coe, comp_app, continuous_linear_equiv.apply_symm_apply,
1501+
linear_equiv.inv_fun_eq_symm, continuous_linear_equiv.arrow_congrₛₗ_symm_apply,
1502+
eq_self_iff_true] },
15011503
simp_rw [this] at A,
15021504
exact A,
15031505
end

src/analysis/normed_space/operator_norm.lean

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1715,46 +1715,6 @@ begin
17151715
(λ y, homothety_inverse _ hx _ (to_span_nonzero_singleton_homothety 𝕜 x h) _)
17161716
end
17171717

1718-
variables {𝕜} {𝕜₄ : Type*} [nontrivially_normed_field 𝕜₄]
1719-
variables {H : Type*} [normed_add_comm_group H] [normed_space 𝕜₄ H] [normed_space 𝕜₃ G]
1720-
variables {σ₂₃ : 𝕜₂ →+* 𝕜₃} {σ₁₃ : 𝕜 →+* 𝕜₃}
1721-
variables {σ₃₄ : 𝕜₃ →+* 𝕜₄} {σ₄₃ : 𝕜₄ →+* 𝕜₃}
1722-
variables {σ₂₄ : 𝕜₂ →+* 𝕜₄} {σ₁₄ : 𝕜 →+* 𝕜₄}
1723-
variables [ring_hom_inv_pair σ₃₄ σ₄₃] [ring_hom_inv_pair σ₄₃ σ₃₄]
1724-
variables [ring_hom_comp_triple σ₂₁ σ₁₄ σ₂₄] [ring_hom_comp_triple σ₂₄ σ₄₃ σ₂₃]
1725-
variables [ring_hom_comp_triple σ₁₂ σ₂₃ σ₁₃] [ring_hom_comp_triple σ₁₃ σ₃₄ σ₁₄]
1726-
variables [ring_hom_isometric σ₁₄] [ring_hom_isometric σ₂₃]
1727-
variables [ring_hom_isometric σ₄₃] [ring_hom_isometric σ₂₄]
1728-
variables [ring_hom_isometric σ₁₃] [ring_hom_isometric σ₁₂]
1729-
variables [ring_hom_isometric σ₃₄]
1730-
1731-
include σ₂₁ σ₃₄ σ₁₃ σ₂₄
1732-
1733-
/-- A pair of continuous (semi)linear equivalences generates an continuous (semi)linear equivalence
1734-
between the spaces of continuous (semi)linear maps. -/
1735-
@[simps apply symm_apply]
1736-
def arrow_congrSL (e₁₂ : E ≃SL[σ₁₂] F) (e₄₃ : H ≃SL[σ₄₃] G) :
1737-
(E →SL[σ₁₄] H) ≃SL[σ₄₃] (F →SL[σ₂₃] G) :=
1738-
{ -- given explicitly to help `simps`
1739-
to_fun := λ L, (e₄₃ : H →SL[σ₄₃] G).comp (L.comp (e₁₂.symm : F →SL[σ₂₁] E)),
1740-
-- given explicitly to help `simps`
1741-
inv_fun := λ L, (e₄₃.symm : G →SL[σ₃₄] H).comp (L.comp (e₁₂ : E →SL[σ₁₂] F)),
1742-
map_add' := λ f g, by rw [add_comp, comp_add],
1743-
map_smul' := λ t f, by rw [smul_comp, comp_smulₛₗ],
1744-
continuous_to_fun := (continuous_id.clm_comp_const _).const_clm_comp _,
1745-
continuous_inv_fun := (continuous_id.clm_comp_const _).const_clm_comp _,
1746-
.. e₁₂.arrow_congr_equiv e₄₃, }
1747-
1748-
omit σ₂₁ σ₃₄ σ₁₃ σ₂₄
1749-
1750-
/-- A pair of continuous linear equivalences generates an continuous linear equivalence between
1751-
the spaces of continuous linear maps. -/
1752-
def arrow_congr {F H : Type*} [normed_add_comm_group F] [normed_add_comm_group H]
1753-
[normed_space 𝕜 F] [normed_space 𝕜 G] [normed_space 𝕜 H]
1754-
(e₁ : E ≃L[𝕜] F) (e₂ : H ≃L[𝕜] G) :
1755-
(E →L[𝕜] H) ≃L[𝕜] (F →L[𝕜] G) :=
1756-
arrow_congrSL e₁ e₂
1757-
17581718
end
17591719

17601720
end continuous_linear_equiv

src/geometry/manifold/vector_bundle/basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ end with_topology
394394

395395
namespace vector_prebundle
396396

397-
variables {F E}
397+
variables [∀ x, topological_space (E x)] {F E}
398398

399399
/-- Mixin for a `vector_prebundle` stating smoothness of coordinate changes. -/
400400
class is_smooth (a : vector_prebundle 𝕜 F E) : Prop :=
@@ -438,7 +438,7 @@ variables (IB)
438438
/-- Make a `smooth_vector_bundle` from a `smooth_vector_prebundle`. -/
439439
lemma smooth_vector_bundle :
440440
@smooth_vector_bundle _ _ F E _ _ _ _ _ _ IB _ _ _ _ _ _ _
441-
a.total_space_topology a.fiber_topology a.to_fiber_bundle a.to_vector_bundle :=
441+
a.total_space_topology _ a.to_fiber_bundle a.to_vector_bundle :=
442442
{ smooth_on_coord_change := begin
443443
rintros _ _ ⟨e, he, rfl⟩ ⟨e', he', rfl⟩,
444444
refine (a.smooth_on_smooth_coord_change he he').congr _,

src/geometry/manifold/vector_bundle/hom.lean

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ open_locale manifold bundle
2323
variables {𝕜 B F F₁ F₂ M M₁ M₂ : Type*}
2424
{E : B → Type*} {E₁ : B → Type*} {E₂ : B → Type*}
2525
[nontrivially_normed_field 𝕜]
26-
[∀ x, add_comm_monoid (E x)] [∀ x, module 𝕜 (E x)]
26+
[∀ x, add_comm_group (E x)] [∀ x, module 𝕜 (E x)]
2727
[normed_add_comm_group F] [normed_space 𝕜 F]
2828
[topological_space (total_space E)] [∀ x, topological_space (E x)]
29-
[∀ x, add_comm_monoid (E₁ x)] [∀ x, module 𝕜 (E₁ x)]
29+
[∀ x, add_comm_group (E₁ x)] [∀ x, module 𝕜 (E₁ x)]
3030
[normed_add_comm_group F₁] [normed_space 𝕜 F₁]
3131
[topological_space (total_space E₁)] [∀ x, topological_space (E₁ x)]
32-
[∀ x, add_comm_monoid (E₂ x)] [∀ x, module 𝕜 (E₂ x)]
32+
[∀ x, add_comm_group (E₂ x)] [∀ x, module 𝕜 (E₂ x)]
3333
[normed_add_comm_group F₂] [normed_space 𝕜 F₂]
3434
[topological_space (total_space E₂)] [∀ x, topological_space (E₂ x)]
35+
[_i₁ : ∀ x, topological_add_group (E₂ x)] [_i₂ : ∀ x, has_continuous_smul 𝕜 (E₂ x)]
3536

3637
{EB : Type*} [normed_add_comm_group EB] [normed_space 𝕜 EB]
3738
{HB : Type*} [topological_space HB] (IB : model_with_corners 𝕜 EB HB)
@@ -67,10 +68,11 @@ begin
6768
{ intros b hb, ext L v,
6869
simp only [continuous_linear_map_coord_change, continuous_linear_equiv.coe_coe,
6970
continuous_linear_equiv.arrow_congrSL_apply, comp_apply, function.comp, compL_apply,
70-
flip_apply, continuous_linear_equiv.symm_symm] },
71+
flip_apply, continuous_linear_equiv.symm_symm, linear_equiv.to_fun_eq_coe,
72+
continuous_linear_equiv.arrow_congrₛₗ_apply, continuous_linear_map.coe_comp'] },
7173
end
7274

73-
variables [∀ x, has_continuous_add (E₂ x)] [∀ x, has_continuous_smul 𝕜 (E₂ x)]
75+
include _i₁ _i₂
7476

7577
lemma hom_chart (y₀ y : LE₁E₂) :
7678
chart_at (model_prod HB (F₁ →L[𝕜] F₂)) y₀ y =
@@ -107,15 +109,6 @@ instance bundle.continuous_linear_map.vector_prebundle.is_smooth :
107109
continuous_linear_map_coord_change_apply (ring_hom.id 𝕜) e₁ e₁' e₂ e₂'⟩
108110
end }
109111

110-
/-- Todo: remove this definition. It is probably needed because of the type-class pi bug
111-
https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/vector.20bundles.20--.20typeclass.20inference.20issue
112-
-/
113-
@[reducible]
114-
def smooth_vector_bundle.continuous_linear_map.aux (x) :
115-
topological_space (bundle.continuous_linear_map (ring_hom.id 𝕜) F₁ E₁ F₂ E₂ x) :=
116-
by apply_instance
117-
local attribute [instance, priority 1] smooth_vector_bundle.continuous_linear_map.aux
118-
119112
instance smooth_vector_bundle.continuous_linear_map :
120113
smooth_vector_bundle (F₁ →L[𝕜] F₂) (bundle.continuous_linear_map (ring_hom.id 𝕜) F₁ E₁ F₂ E₂)
121114
IB :=

src/topology/algebra/module/strong_topology.lean

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,86 @@ continuous_linear_map.has_basis_nhds_zero_of_basis (𝓝 0).basis_sets
227227
end bounded_sets
228228

229229
end continuous_linear_map
230+
231+
open continuous_linear_map
232+
233+
namespace continuous_linear_equiv
234+
235+
section semilinear
236+
237+
variables {𝕜 : Type*} {𝕜₂ : Type*} {𝕜₃ : Type*} {𝕜₄ : Type*}
238+
{E : Type*} {F : Type*} {G : Type*} {H : Type*}
239+
[add_comm_group E] [add_comm_group F] [add_comm_group G] [add_comm_group H]
240+
[nontrivially_normed_field 𝕜] [nontrivially_normed_field 𝕜₂] [nontrivially_normed_field 𝕜₃]
241+
[nontrivially_normed_field 𝕜₄]
242+
[module 𝕜 E] [module 𝕜₂ F] [module 𝕜₃ G] [module 𝕜₄ H]
243+
[topological_space E] [topological_space F] [topological_space G] [topological_space H]
244+
[topological_add_group G] [topological_add_group H]
245+
[has_continuous_const_smul 𝕜₃ G] [has_continuous_const_smul 𝕜₄ H]
246+
{σ₁₂ : 𝕜 →+* 𝕜₂} {σ₂₁ : 𝕜₂ →+* 𝕜} {σ₂₃ : 𝕜₂ →+* 𝕜₃} {σ₁₃ : 𝕜 →+* 𝕜₃} {σ₃₄ : 𝕜₃ →+* 𝕜₄}
247+
{σ₄₃ : 𝕜₄ →+* 𝕜₃} {σ₂₄ : 𝕜₂ →+* 𝕜₄} {σ₁₄ : 𝕜 →+* 𝕜₄}
248+
[ring_hom_inv_pair σ₁₂ σ₂₁] [ring_hom_inv_pair σ₂₁ σ₁₂] [ring_hom_inv_pair σ₃₄ σ₄₃]
249+
[ring_hom_inv_pair σ₄₃ σ₃₄]
250+
[ring_hom_comp_triple σ₂₁ σ₁₄ σ₂₄] [ring_hom_comp_triple σ₂₄ σ₄₃ σ₂₃]
251+
[ring_hom_comp_triple σ₁₂ σ₂₃ σ₁₃] [ring_hom_comp_triple σ₁₃ σ₃₄ σ₁₄]
252+
253+
include σ₁₄ σ₂₄ σ₁₃ σ₃₄ σ₂₁ σ₂₃
254+
255+
/-- A pair of continuous (semi)linear equivalences generates a (semi)linear equivalence between the
256+
spaces of continuous (semi)linear maps. -/
257+
@[simps] def arrow_congrₛₗ (e₁₂ : E ≃SL[σ₁₂] F) (e₄₃ : H ≃SL[σ₄₃] G) :
258+
(E →SL[σ₁₄] H) ≃ₛₗ[σ₄₃] (F →SL[σ₂₃] G) :=
259+
{ -- given explicitly to help `simps`
260+
to_fun := λ L, (e₄₃ : H →SL[σ₄₃] G).comp (L.comp (e₁₂.symm : F →SL[σ₂₁] E)),
261+
-- given explicitly to help `simps`
262+
inv_fun := λ L, (e₄₃.symm : G →SL[σ₃₄] H).comp (L.comp (e₁₂ : E →SL[σ₁₂] F)),
263+
map_add' := λ f g, by rw [add_comp, comp_add],
264+
map_smul' := λ t f, by rw [smul_comp, comp_smulₛₗ],
265+
.. e₁₂.arrow_congr_equiv e₄₃, }
266+
267+
variables [ring_hom_isometric σ₂₁]
268+
269+
lemma arrow_congrₛₗ_continuous (e₁₂ : E ≃SL[σ₁₂] F) (e₄₃ : H ≃SL[σ₄₃] G) :
270+
continuous (id (e₁₂.arrow_congrₛₗ e₄₃ : (E →SL[σ₁₄] H) ≃ₛₗ[σ₄₃] (F →SL[σ₂₃] G))) :=
271+
begin
272+
apply continuous_of_continuous_at_zero,
273+
show filter.tendsto _ _ _,
274+
simp_rw [(e₁₂.arrow_congrₛₗ e₄₃).map_zero],
275+
rw continuous_linear_map.has_basis_nhds_zero.tendsto_iff
276+
continuous_linear_map.has_basis_nhds_zero,
277+
rintros ⟨sF, sG⟩ ⟨h1 : bornology.is_vonN_bounded 𝕜₂ sF, h2 : sG ∈ nhds (0:G)⟩,
278+
dsimp,
279+
refine ⟨(e₁₂.symm '' sF, e₄₃ ⁻¹' sG), ⟨h1.image (e₁₂.symm : F →SL[σ₂₁] E), _⟩,
280+
λ _ h _ hx, h _ (set.mem_image_of_mem _ hx)⟩,
281+
apply e₄₃.continuous.continuous_at,
282+
simpa using h2,
283+
end
284+
285+
variables [ring_hom_isometric σ₁₂]
286+
287+
/-- A pair of continuous (semi)linear equivalences generates an continuous (semi)linear equivalence
288+
between the spaces of continuous (semi)linear maps. -/
289+
@[simps] def arrow_congrSL (e₁₂ : E ≃SL[σ₁₂] F) (e₄₃ : H ≃SL[σ₄₃] G) :
290+
(E →SL[σ₁₄] H) ≃SL[σ₄₃] (F →SL[σ₂₃] G) :=
291+
{ continuous_to_fun := e₁₂.arrow_congrₛₗ_continuous e₄₃,
292+
continuous_inv_fun := e₁₂.symm.arrow_congrₛₗ_continuous e₄₃.symm,
293+
.. e₁₂.arrow_congrₛₗ e₄₃, }
294+
295+
end semilinear
296+
297+
section linear
298+
variables {𝕜 : Type*} {E : Type*} {F : Type*} {G : Type*} {H : Type*}
299+
[add_comm_group E] [add_comm_group F] [add_comm_group G] [add_comm_group H]
300+
[nontrivially_normed_field 𝕜] [module 𝕜 E] [module 𝕜 F] [module 𝕜 G] [module 𝕜 H]
301+
[topological_space E] [topological_space F] [topological_space G] [topological_space H]
302+
[topological_add_group G] [topological_add_group H]
303+
[has_continuous_const_smul 𝕜 G] [has_continuous_const_smul 𝕜 H]
304+
305+
/-- A pair of continuous linear equivalences generates an continuous linear equivalence between
306+
the spaces of continuous linear maps. -/
307+
def arrow_congr (e₁ : E ≃L[𝕜] F) (e₂ : H ≃L[𝕜] G) : (E →L[𝕜] H) ≃L[𝕜] (F →L[𝕜] G) :=
308+
e₁.arrow_congrSL e₂
309+
310+
end linear
311+
312+
end continuous_linear_equiv

src/topology/constructions.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,14 @@ lemma inducing.prod_mk {f : α → β} {g : γ → δ} (hf : inducing f) (hg : i
680680
by rw [prod.topological_space, prod.topological_space, hf.induced, hg.induced,
681681
induced_compose, induced_compose, induced_inf, induced_compose, induced_compose]⟩
682682

683+
@[simp] lemma inducing_const_prod {a : α} {f : β → γ} : inducing (λ x, (a, f x)) ↔ inducing f :=
684+
by simp_rw [inducing_iff, prod.topological_space, induced_inf, induced_compose, function.comp,
685+
induced_const, top_inf_eq]
686+
687+
@[simp] lemma inducing_prod_const {b : β} {f : α → γ} : inducing (λ x, (f x, b)) ↔ inducing f :=
688+
by simp_rw [inducing_iff, prod.topological_space, induced_inf, induced_compose, function.comp,
689+
induced_const, inf_top_eq]
690+
683691
lemma embedding.prod_mk {f : α → β} {g : γ → δ} (hf : embedding f) (hg : embedding g) :
684692
embedding (λx:α×γ, (f x.1, g x.2)) :=
685693
{ inj := assume ⟨x₁, x₂⟩ ⟨y₁, y₂⟩, by simp; exact assume h₁ h₂, ⟨hf.inj h₁, hg.inj h₂⟩,

src/topology/fiber_bundle/basic.lean

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,7 @@ end fiber_bundle_core
705705
/-! ### Prebundle construction for constructing fiber bundles -/
706706

707707
variables (F) (E : B → Type*) [topological_space B] [topological_space F]
708+
[Π x, topological_space (E x)]
708709

709710
/-- This structure permits to define a fiber bundle when trivializations are given as local
710711
equivalences but there is not yet a topology on the total space. The total space is hence given a
@@ -718,6 +719,7 @@ structure fiber_prebundle :=
718719
(pretrivialization_mem_atlas : ∀ x : B, pretrivialization_at x ∈ pretrivialization_atlas)
719720
(continuous_triv_change : ∀ e e' ∈ pretrivialization_atlas,
720721
continuous_on (e ∘ e'.to_local_equiv.symm) (e'.target ∩ (e'.to_local_equiv.symm ⁻¹' e.source)))
722+
(total_space_mk_inducing : ∀ (b : B), inducing ((pretrivialization_at b) ∘ (total_space_mk b)))
721723

722724
namespace fiber_prebundle
723725

@@ -799,19 +801,27 @@ begin
799801
exact a.mem_base_pretrivialization_at b,
800802
end
801803

802-
/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
803-
def fiber_topology (b : B) : topological_space (E b) :=
804-
topological_space.induced (total_space_mk b) a.total_space_topology
805-
806-
@[continuity] lemma inducing_total_space_mk (b : B) :
807-
@inducing _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
808-
by { letI := a.total_space_topology, letI := a.fiber_topology b, exact ⟨rfl⟩ }
809-
810804
@[continuity] lemma continuous_total_space_mk (b : B) :
811-
@continuous _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
805+
@continuous _ _ _ a.total_space_topology (total_space_mk b) :=
812806
begin
813-
letI := a.total_space_topology, letI := a.fiber_topology b,
814-
exact (a.inducing_total_space_mk b).continuous
807+
letI := a.total_space_topology,
808+
let e := a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas b),
809+
rw e.to_local_homeomorph.continuous_iff_continuous_comp_left
810+
(a.total_space_mk_preimage_source b),
811+
exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.total_space_mk_inducing b).induced).1,
812+
end
813+
814+
lemma inducing_total_space_mk_of_inducing_comp (b : B)
815+
(h : inducing ((a.pretrivialization_at b) ∘ (total_space_mk b))) :
816+
@inducing _ _ _ a.total_space_topology (total_space_mk b) :=
817+
begin
818+
letI := a.total_space_topology,
819+
rw ←restrict_comp_cod_restrict (a.mem_trivialization_at_source b) at h,
820+
apply inducing.of_cod_restrict (a.mem_trivialization_at_source b),
821+
refine inducing_of_inducing_compose _ (continuous_on_iff_continuous_restrict.mp
822+
(a.trivialization_of_mem_pretrivialization_atlas
823+
(a.pretrivialization_mem_atlas b)).continuous_to_fun) h,
824+
exact (a.continuous_total_space_mk b).cod_restrict (a.mem_trivialization_at_source b),
815825
end
816826

817827
/-- Make a `fiber_bundle` from a `fiber_prebundle`. Concretely this means
@@ -821,8 +831,9 @@ establishes that for the topology constructed on the sigma-type using
821831
`fiber_prebundle.total_space_topology`, these "pretrivializations" are actually
822832
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
823833
def to_fiber_bundle :
824-
@fiber_bundle B F _ _ E a.total_space_topology a.fiber_topology :=
825-
{ total_space_mk_inducing := a.inducing_total_space_mk,
834+
@fiber_bundle B F _ _ E a.total_space_topology _ :=
835+
{ total_space_mk_inducing := λ b, a.inducing_total_space_mk_of_inducing_comp b
836+
(a.total_space_mk_inducing b),
826837
trivialization_atlas := {e | ∃ e₀ (he₀ : e₀ ∈ a.pretrivialization_atlas),
827838
e = a.trivialization_of_mem_pretrivialization_atlas he₀},
828839
trivialization_at := λ x, a.trivialization_of_mem_pretrivialization_atlas
@@ -833,7 +844,6 @@ def to_fiber_bundle :
833844
lemma continuous_proj : @continuous _ _ a.total_space_topology _ (π E) :=
834845
begin
835846
letI := a.total_space_topology,
836-
letI := a.fiber_topology,
837847
letI := a.to_fiber_bundle,
838848
exact continuous_proj F E,
839849
end

src/topology/vector_bundle/basic.lean

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,7 @@ end
733733

734734
section
735735
variables [nontrivially_normed_field R] [∀ x, add_comm_monoid (E x)] [∀ x, module R (E x)]
736-
[normed_add_comm_group F] [normed_space R F] [topological_space B]
736+
[normed_add_comm_group F] [normed_space R F] [topological_space B] [∀ x, topological_space (E x)]
737737

738738
open topological_space
739739

@@ -760,6 +760,7 @@ structure vector_prebundle :=
760760
continuous_on f (e.base_set ∩ e'.base_set) ∧
761761
∀ (b : B) (hb : b ∈ e.base_set ∩ e'.base_set) (v : F),
762762
f b v = (e' (total_space_mk b (e.symm b v))).2)
763+
(total_space_mk_inducing : ∀ (b : B), inducing ((pretrivialization_at b) ∘ (total_space_mk b)))
763764

764765
namespace vector_prebundle
765766

@@ -845,21 +846,13 @@ a.to_fiber_prebundle.mem_trivialization_at_source b x
845846
(total_space_mk b) ⁻¹' (a.pretrivialization_at b).source = univ :=
846847
a.to_fiber_prebundle.total_space_mk_preimage_source b
847848

848-
/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
849-
def fiber_topology (b : B) : topological_space (E b) :=
850-
a.to_fiber_prebundle.fiber_topology b
851-
852-
@[continuity] lemma inducing_total_space_mk (b : B) :
853-
@inducing _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
854-
a.to_fiber_prebundle.inducing_total_space_mk b
855-
856849
@[continuity] lemma continuous_total_space_mk (b : B) :
857-
@continuous _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
850+
@continuous _ _ _ a.total_space_topology (total_space_mk b) :=
858851
a.to_fiber_prebundle.continuous_total_space_mk b
859852

860853
/-- Make a `fiber_bundle` from a `vector_prebundle`; auxiliary construction for
861854
`vector_prebundle.vector_bundle`. -/
862-
def to_fiber_bundle : @fiber_bundle B F _ _ _ a.total_space_topology a.fiber_topology :=
855+
def to_fiber_bundle : @fiber_bundle B F _ _ _ a.total_space_topology _ :=
863856
a.to_fiber_prebundle.to_fiber_bundle
864857

865858
/-- Make a `vector_bundle` from a `vector_prebundle`. Concretely this means
@@ -869,7 +862,7 @@ establishes that for the topology constructed on the sigma-type using
869862
`vector_prebundle.total_space_topology`, these "pretrivializations" are actually
870863
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
871864
lemma to_vector_bundle :
872-
@vector_bundle R _ F E _ _ _ _ _ _ a.total_space_topology a.fiber_topology a.to_fiber_bundle :=
865+
@vector_bundle R _ F E _ _ _ _ _ _ a.total_space_topology _ a.to_fiber_bundle :=
873866
{ trivialization_linear' := begin
874867
rintros _ ⟨e, he, rfl⟩,
875868
apply linear_of_mem_pretrivialization_atlas,
@@ -895,7 +888,7 @@ variables [normed_space 𝕜₁ F] [Π x, module 𝕜₁ (E x)] [topological_spa
895888
variables {F' : Type*} [normed_add_comm_group F'] [normed_space 𝕜₂ F']
896889
{E' : B' → Type*} [Π x, add_comm_monoid (E' x)] [Π x, module 𝕜₂ (E' x)]
897890
[topological_space (total_space E')]
898-
variables [Π x, topological_space (E x)] [fiber_bundle F E] [vector_bundle 𝕜₁ F E]
891+
variables [fiber_bundle F E] [vector_bundle 𝕜₁ F E]
899892
variables [Π x, topological_space (E' x)] [fiber_bundle F' E'] [vector_bundle 𝕜₂ F' E']
900893
variables (F E F' E')
901894

0 commit comments

Comments
 (0)