topology.fiber_bundle.basic
⟷
Mathlib.Topology.FiberBundle.Basic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
bundle.total_space
(#19221)
bundle.total_space
.
bundle.total_space.mk
instead of bundle.total_space_mk
.bundle.total_space.to_prod
instead of equiv.sigma_equiv_prod
.bundle.total_space.mk'
(scoped notation) to specify F
.bundle.trivial.proj_snd
to
bundle.total_space.trivial_snd
to allow dot notation. Should we
just use bundle.total_space.snd
since bundle.trivial
is now
reducible?bundle.total_space
.bundle.trivial
and bundle.continuous_linear_map
reducible.@@ -16,16 +16,14 @@ Mathematically, a (topological) fiber bundle with fiber `F` over a base `B` is a
point is a direct product.
In our formalism, a fiber bundle is by definition the type
-`bundle.total_space E` where `E : B → Type*` is a function associating to
-`x : B` the fiber over `x`. This type `bundle.total_space E` is just a type synonym for
-`Σ (x : B), E x`, with the interest that one can put another topology than on `Σ (x : B), E x`
-which has the disjoint union topology.
+`bundle.total_space F E` where `E : B → Type*` is a function associating to `x : B` the fiber over
+`x`. This type `bundle.total_space F E` is a type of pairs `(proj : B, snd : E proj)`.
-To have a fiber bundle structure on `bundle.total_space E`, one should
+To have a fiber bundle structure on `bundle.total_space F E`, one should
additionally have the following data:
* `F` should be a topological space;
-* There should be a topology on `bundle.total_space E`, for which the projection to `B` is
+* There should be a topology on `bundle.total_space F E`, for which the projection to `B` is
a fiber bundle with fiber `F` (in particular, each fiber `E x` is homeomorphic to `F`);
* For each `x`, the fiber `E x` should be a topological space, and the injection
from `E x` to `bundle.total_space F E` should be an embedding;
@@ -52,17 +50,16 @@ fiber bundle from trivializations given as local equivalences with minimum addit
### Construction of a bundle from trivializations
-* `bundle.total_space E` is a type synonym for `Σ (x : B), E x`, that we can endow with a suitable
- topology.
+* `bundle.total_space F E` is the type of pairs `(proj : B, snd : E proj)`. We can use the extra
+ argument `F` to construct topology on the total space.
* `fiber_bundle_core ι B F` : structure registering how changes of coordinates act
on the fiber `F` above open subsets of `B`, where local trivializations are indexed by `ι`.
Let `Z : fiber_bundle_core ι B F`. Then we define
* `Z.fiber x` : the fiber above `x`, homeomorphic to `F` (and defeq to `F` as a type).
-* `Z.total_space` : the total space of `Z`, defined as a `Type` as `Σ (b : B), F`, but with a
- twisted topology coming from the fiber bundle structure. It is (reducibly) the same as
- `bundle.total_space Z.fiber`.
+* `Z.total_space` : the total space of `Z`, defined as a `Type*` as `bundle.total_space F Z.fiber`
+ with a custom topology.
* `Z.proj` : projection from `Z.total_space` to `B`. It is continuous.
* `Z.local_triv i`: for `i : ι`, bundle trivialization above the set `Z.base_set i`, which is an
open set in `B`.
@@ -153,8 +150,8 @@ choose for each `x` one specific trivialization around it. We include this choic
of the `fiber_bundle_core`, as it makes some constructions more
functorial and it is a nice way to say that the trivializations cover the whole space `B`.
-With this definition, the type of the fiber bundle space constructed from the core data is just
-`Σ (b : B), F `, but the topology is not the product one, in general.
+With this definition, the type of the fiber bundle space constructed from the core data is
+`bundle.total_space F (λ b : B, F)`, but the topology is not the product one, in general.
We also take the indexing type (indexing all the trivializations) as a parameter to the fiber bundle
core: it could always be taken as a subtype of all the maps from open subsets of `B` to continuous
@@ -172,7 +169,7 @@ variables {ι B F X : Type*} [topological_space X]
open topological_space filter set bundle
open_locale topology classical bundle
-attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply
+attribute [mfld_simps] total_space.coe_proj total_space.coe_snd coe_snd_map_apply
coe_snd_map_smul total_space.mk_cast
/-! ### General definition of fiber bundles -/
@@ -180,15 +177,15 @@ attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply
section fiber_bundle
variables (F) [topological_space B] [topological_space F] (E : B → Type*)
- [topological_space (total_space E)] [∀ b, topological_space (E b)]
+ [topological_space (total_space F E)] [∀ b, topological_space (E b)]
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
class fiber_bundle :=
-(total_space_mk_inducing [] : ∀ (b : B), inducing (@total_space_mk B E b))
-(trivialization_atlas [] : set (trivialization F (π E)))
-(trivialization_at [] : B → trivialization F (π E))
+(total_space_mk_inducing [] : ∀ (b : B), inducing (@total_space.mk B F E b))
+(trivialization_atlas [] : set (trivialization F (π F E)))
+(trivialization_at [] : B → trivialization F (π F E))
(mem_base_set_trivialization_at [] : ∀ b : B, b ∈ (trivialization_at b).base_set)
(trivialization_mem_atlas [] : ∀ b : B, trivialization_at b ∈ trivialization_atlas)
@@ -202,7 +199,7 @@ bundle. This is needed because lemmas about the linearity of trivializations or
functions to `F →L[R] F`, where `F` is the model fiber) of the transition functions are only
expected to hold for trivializations in the designated atlas. -/
@[mk_iff]
-class mem_trivialization_atlas [fiber_bundle F E] (e : trivialization F (π E)) : Prop :=
+class mem_trivialization_atlas [fiber_bundle F E] (e : trivialization F (π F E)) : Prop :=
(out : e ∈ trivialization_atlas F E)
instance [fiber_bundle F E] (b : B) : mem_trivialization_atlas (trivialization_at F E b) :=
@@ -211,44 +208,44 @@ instance [fiber_bundle F E] (b : B) : mem_trivialization_atlas (trivialization_a
namespace fiber_bundle
variables (F) {E} [fiber_bundle F E]
-lemma map_proj_nhds (x : total_space E) :
- map (π E) (𝓝 x) = 𝓝 x.proj :=
+lemma map_proj_nhds (x : total_space F E) :
+ map (π F E) (𝓝 x) = 𝓝 x.proj :=
(trivialization_at F E x.proj).map_proj_nhds $
(trivialization_at F E x.proj).mem_source.2 $ mem_base_set_trivialization_at F E x.proj
variables (E)
/-- The projection from a fiber bundle to its base is continuous. -/
-@[continuity] lemma continuous_proj : continuous (π E) :=
+@[continuity] lemma continuous_proj : continuous (π F E) :=
continuous_iff_continuous_at.2 $ λ x, (map_proj_nhds F x).le
/-- The projection from a fiber bundle to its base is an open map. -/
-lemma is_open_map_proj : is_open_map (π E) :=
+lemma is_open_map_proj : is_open_map (π F E) :=
is_open_map.of_nhds_le $ λ x, (map_proj_nhds F x).ge
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
-lemma surjective_proj [nonempty F] : function.surjective (π E) :=
+lemma surjective_proj [nonempty F] : function.surjective (π F E) :=
λ b, let ⟨p, _, hpb⟩ :=
(trivialization_at F E b).proj_surj_on_base_set (mem_base_set_trivialization_at F E b) in ⟨p, hpb⟩
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
-lemma quotient_map_proj [nonempty F] : quotient_map (π E) :=
+lemma quotient_map_proj [nonempty F] : quotient_map (π F E) :=
(is_open_map_proj F E).to_quotient_map (continuous_proj F E) (surjective_proj F E)
-lemma continuous_total_space_mk (x : B) : continuous (@total_space_mk B E x) :=
+lemma continuous_total_space_mk (x : B) : continuous (@total_space.mk B F E x) :=
(total_space_mk_inducing F E x).continuous
variables {E F}
@[simp, mfld_simps]
-lemma mem_trivialization_at_proj_source {x : total_space E} :
+lemma mem_trivialization_at_proj_source {x : total_space F E} :
x ∈ (trivialization_at F E x.proj).source :=
(trivialization.mem_source _).mpr $ mem_base_set_trivialization_at F E x.proj
@[simp, mfld_simps]
-lemma trivialization_at_proj_fst {x : total_space E} :
+lemma trivialization_at_proj_fst {x : total_space F E} :
((trivialization_at F E x.proj) x).1 = x.proj :=
trivialization.coe_fst' _ $ mem_base_set_trivialization_at F E x.proj
@@ -256,7 +253,7 @@ variable (F)
open trivialization
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
-lemma continuous_within_at_total_space (f : X → total_space E) {s : set X} {x₀ : X} :
+lemma continuous_within_at_total_space (f : X → total_space F E) {s : set X} {x₀ : X} :
continuous_within_at f s x₀ ↔
continuous_within_at (λ x, (f x).proj) s x₀ ∧
continuous_within_at (λ x, ((trivialization_at F E (f x₀).proj) (f x)).2) s x₀ :=
@@ -276,7 +273,7 @@ begin
end
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
-lemma continuous_at_total_space (f : X → total_space E) {x₀ : X} :
+lemma continuous_at_total_space (f : X → total_space F E) {x₀ : X} :
continuous_at f x₀ ↔ continuous_at (λ x, (f x).proj) x₀ ∧
continuous_at (λ x, ((trivialization_at F E (f x₀).proj) (f x)).2) x₀ :=
by { simp_rw [← continuous_within_at_univ], exact continuous_within_at_total_space F f }
@@ -289,16 +286,16 @@ variables (F E)
then it is trivial over any closed interval. -/
lemma fiber_bundle.exists_trivialization_Icc_subset
[conditionally_complete_linear_order B] [order_topology B] [fiber_bundle F E] (a b : B) :
- ∃ e : trivialization F (π E), Icc a b ⊆ e.base_set :=
+ ∃ e : trivialization F (π F E), Icc a b ⊆ e.base_set :=
begin
classical,
- obtain ⟨ea, hea⟩ : ∃ ea : trivialization F (π E), a ∈ ea.base_set :=
+ obtain ⟨ea, hea⟩ : ∃ ea : trivialization F (π F E), a ∈ ea.base_set :=
⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩,
-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
cases le_or_lt a b with hab hab; [skip, exact ⟨ea, by simp *⟩],
/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
- set s : set B := {x ∈ Icc a b | ∃ e : trivialization F (π E), Icc a x ⊆ e.base_set},
+ set s : set B := {x ∈ Icc a b | ∃ e : trivialization F (π F E), Icc a x ⊆ e.base_set},
have ha : a ∈ s, from ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩,
have sne : s.nonempty := ⟨a, ha⟩,
have hsb : b ∈ upper_bounds s, from λ x hx, hx.1.2,
@@ -306,12 +303,12 @@ begin
set c := Sup s,
have hsc : is_lub s c, from is_lub_cSup sne sbd,
have hc : c ∈ Icc a b, from ⟨hsc.1 ha, hsc.2 hsb⟩,
- obtain ⟨-, ec : trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s,
+ obtain ⟨-, ec : trivialization F (π F E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s,
{ cases hc.1.eq_or_lt with heq hlt, { rwa ← heq },
refine ⟨hc, _⟩,
/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
- obtain ⟨ec, hc⟩ : ∃ ec : trivialization F (π E), c ∈ ec.base_set :=
+ obtain ⟨ec, hc⟩ : ∃ ec : trivialization F (π F E), c ∈ ec.base_set :=
⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩,
obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
(mem_nhds_within_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
@@ -325,7 +322,7 @@ begin
done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
cases hc.2.eq_or_lt with heq hlt, { exact ⟨ec, heq ▸ hec⟩ },
- rsuffices ⟨d, hdcb, hd⟩ : ∃ (d ∈ Ioc c b) (e : trivialization F (π E)), Icc a d ⊆ e.base_set,
+ rsuffices ⟨d, hdcb, hd⟩ : ∃ (d ∈ Ioc c b) (e : trivialization F (π F E)), Icc a d ⊆ e.base_set,
{ exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim },
/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
`d ∈ (c, b]`. -/
@@ -338,7 +335,7 @@ begin
{ /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
a trivialization over `[a, d]`. -/
- obtain ⟨ed, hed⟩ : ∃ ed : trivialization F (π E), d ∈ ed.base_set :=
+ obtain ⟨ed, hed⟩ : ∃ ed : trivialization F (π F E), d ∈ ed.base_set :=
⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩,
refine ⟨d, hdcb, (ec.restr_open (Iio d) is_open_Iio).disjoint_union
(ed.restr_open (Ioi c) is_open_Ioi) (he.mono (inter_subset_right _ _)
@@ -396,18 +393,13 @@ typeclass inference -/
@[nolint unused_arguments has_nonempty_instance]
def fiber (x : B) := F
-section fiber_instances
-local attribute [reducible] fiber
-
-instance topological_space_fiber (x : B) : topological_space (Z.fiber x) := by apply_instance
-
-end fiber_instances
+instance topological_space_fiber (x : B) : topological_space (Z.fiber x) :=
+‹topological_space F›
/-- The total space of the fiber bundle, as a convenience function for dot notation.
-It is by definition equal to `bundle.total_space Z.fiber`, a.k.a. `Σ x, Z.fiber x` but with a
-different name for typeclass inference. -/
+It is by definition equal to `bundle.total_space Z.fiber` -/
@[nolint unused_arguments, reducible]
-def total_space := bundle.total_space Z.fiber
+def total_space := bundle.total_space F Z.fiber
/-- The projection from the total space of a fiber bundle core, on its base. -/
@[reducible, simp, mfld_simps] def proj : Z.total_space → B := bundle.total_space.proj
@@ -510,7 +502,7 @@ end
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
-instance to_topological_space : topological_space (bundle.total_space Z.fiber) :=
+instance to_topological_space : topological_space Z.total_space :=
topological_space.generate_from $ ⋃ (i : ι) (s : set (B × F)) (s_open : is_open s),
{(Z.local_triv_as_local_equiv i).source ∩ (Z.local_triv_as_local_equiv i) ⁻¹' s}
@@ -567,7 +559,7 @@ def local_triv (i : ι) : trivialization F Z.proj :=
/-- Preferred local trivialization of a fiber bundle constructed from core, at a given point, as
a bundle trivialization -/
-def local_triv_at (b : B) : trivialization F (π Z.fiber) :=
+def local_triv_at (b : B) : trivialization F (π F Z.fiber) :=
Z.local_triv (Z.index_at b)
@[simp, mfld_simps] lemma local_triv_at_def (b : B) :
@@ -647,11 +639,11 @@ by { rw [local_triv_at, ←base_set_at], exact Z.mem_base_set_at b, }
/-- The inclusion of a fiber into the total space is a continuous map. -/
@[continuity]
lemma continuous_total_space_mk (b : B) :
- continuous (total_space_mk b : Z.fiber b → bundle.total_space Z.fiber) :=
+ continuous (total_space.mk b : Z.fiber b → Z.total_space) :=
begin
rw [continuous_iff_le_induced, fiber_bundle_core.to_topological_space],
apply le_induced_generate_from,
- simp only [total_space_mk, mem_Union, mem_singleton_iff, local_triv_as_local_equiv_source,
+ simp only [mem_Union, mem_singleton_iff, local_triv_as_local_equiv_source,
local_triv_as_local_equiv_coe],
rintros s ⟨i, t, ht, rfl⟩,
rw [←((Z.local_triv i).source_inter_preimage_target_inter t), preimage_inter, ←preimage_comp,
@@ -683,7 +675,6 @@ instance fiber_bundle : fiber_bundle F Z.fiber :=
(Z.local_triv_at b).open_source).mp (Z.local_triv_at b).continuous_to_fun _
((Z.local_triv_at b).open_base_set.prod h), _⟩,
rw [preimage_inter, ←preimage_comp, function.comp],
- simp only [total_space_mk],
refine ext_iff.mpr (λ a, ⟨λ ha, _, λ ha, ⟨Z.mem_base_set_at b, _⟩⟩),
{ simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha,
exact ha.2.2, },
@@ -713,21 +704,21 @@ topology in such a way that there is a fiber bundle structure for which the loca
are also local homeomorphism and hence local trivializations. -/
@[nolint has_nonempty_instance]
structure fiber_prebundle :=
-(pretrivialization_atlas : set (pretrivialization F (π E)))
-(pretrivialization_at : B → pretrivialization F (π E))
+(pretrivialization_atlas : set (pretrivialization F (π F E)))
+(pretrivialization_at : B → pretrivialization F (π F E))
(mem_base_pretrivialization_at : ∀ x : B, x ∈ (pretrivialization_at x).base_set)
(pretrivialization_mem_atlas : ∀ x : B, pretrivialization_at x ∈ pretrivialization_atlas)
(continuous_triv_change : ∀ e e' ∈ pretrivialization_atlas,
continuous_on (e ∘ e'.to_local_equiv.symm) (e'.target ∩ (e'.to_local_equiv.symm ⁻¹' e.source)))
-(total_space_mk_inducing : ∀ (b : B), inducing ((pretrivialization_at b) ∘ (total_space_mk b)))
+(total_space_mk_inducing : ∀ (b : B), inducing ((pretrivialization_at b) ∘ (total_space.mk b)))
namespace fiber_prebundle
-variables {F E} (a : fiber_prebundle F E) {e : pretrivialization F (π E)}
+variables {F E} (a : fiber_prebundle F E) {e : pretrivialization F (π F E)}
/-- Topology on the total space that will make the prebundle into a bundle. -/
-def total_space_topology (a : fiber_prebundle F E) : topological_space (total_space E) :=
-⨆ (e : pretrivialization F (π E)) (he : e ∈ a.pretrivialization_atlas),
+def total_space_topology (a : fiber_prebundle F E) : topological_space (total_space F E) :=
+⨆ (e : pretrivialization F (π F E)) (he : e ∈ a.pretrivialization_atlas),
coinduced e.set_symm (subtype.topological_space)
lemma continuous_symm_of_mem_pretrivialization_atlas (he : e ∈ a.pretrivialization_atlas) :
@@ -739,7 +730,7 @@ begin
exact le_supr₂ e he,
end
-lemma is_open_source (e : pretrivialization F (π E)) : is_open[a.total_space_topology] e.source :=
+lemma is_open_source (e : pretrivialization F (π F E)) : is_open[a.total_space_topology] e.source :=
begin
letI := a.total_space_topology,
refine is_open_supr_iff.mpr (λ e', _),
@@ -751,7 +742,7 @@ begin
pretrivialization.preimage_symm_proj_inter],
end
-lemma is_open_target_of_mem_pretrivialization_atlas_inter (e e' : pretrivialization F (π E))
+lemma is_open_target_of_mem_pretrivialization_atlas_inter (e e' : pretrivialization F (π F E))
(he' : e' ∈ a.pretrivialization_atlas) :
is_open (e'.to_local_equiv.target ∩ e'.to_local_equiv.symm ⁻¹' e.source) :=
begin
@@ -764,7 +755,7 @@ end
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
def trivialization_of_mem_pretrivialization_atlas (he : e ∈ a.pretrivialization_atlas) :
- @trivialization B F _ _ _ a.total_space_topology (π E) :=
+ @trivialization B F _ _ _ a.total_space_topology (π F E) :=
{ open_source := a.is_open_source e,
continuous_to_fun := begin
letI := a.total_space_topology,
@@ -785,14 +776,14 @@ def trivialization_of_mem_pretrivialization_atlas (he : e ∈ a.pretrivializatio
.. e }
lemma mem_trivialization_at_source (b : B) (x : E b) :
- total_space_mk b x ∈ (a.pretrivialization_at b).source :=
+ total_space.mk b x ∈ (a.pretrivialization_at b).source :=
begin
simp only [(a.pretrivialization_at b).source_eq, mem_preimage, total_space.proj],
exact a.mem_base_pretrivialization_at b,
end
@[simp] lemma total_space_mk_preimage_source (b : B) :
- (total_space_mk b) ⁻¹' (a.pretrivialization_at b).source = univ :=
+ total_space.mk b ⁻¹' (a.pretrivialization_at b).source = univ :=
begin
apply eq_univ_of_univ_subset,
rw [(a.pretrivialization_at b).source_eq, ←preimage_comp, function.comp],
@@ -802,7 +793,7 @@ begin
end
@[continuity] lemma continuous_total_space_mk (b : B) :
- @continuous _ _ _ a.total_space_topology (total_space_mk b) :=
+ @continuous _ _ _ a.total_space_topology (total_space.mk b) :=
begin
letI := a.total_space_topology,
let e := a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas b),
@@ -812,8 +803,8 @@ begin
end
lemma inducing_total_space_mk_of_inducing_comp (b : B)
- (h : inducing ((a.pretrivialization_at b) ∘ (total_space_mk b))) :
- @inducing _ _ _ a.total_space_topology (total_space_mk b) :=
+ (h : inducing ((a.pretrivialization_at b) ∘ (total_space.mk b))) :
+ @inducing _ _ _ a.total_space_topology (total_space.mk b) :=
begin
letI := a.total_space_topology,
rw ←restrict_comp_cod_restrict (a.mem_trivialization_at_source b) at h,
@@ -841,7 +832,7 @@ def to_fiber_bundle :
mem_base_set_trivialization_at := a.mem_base_pretrivialization_at,
trivialization_mem_atlas := λ x, ⟨_, a.pretrivialization_mem_atlas x, rfl⟩ }
-lemma continuous_proj : @continuous _ _ a.total_space_topology _ (π E) :=
+lemma continuous_proj : @continuous _ _ a.total_space_topology _ (π F E) :=
begin
letI := a.total_space_topology,
letI := a.to_fiber_bundle,
@@ -849,17 +840,17 @@ begin
end
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
-continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
+continuity of a function `total_space F E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
-lemma continuous_on_of_comp_right {X : Type*} [topological_space X] {f : total_space E → X}
+lemma continuous_on_of_comp_right {X : Type*} [topological_space X] {f : total_space F E → X}
{s : set B} (hs : is_open s)
(hf : ∀ b ∈ s, continuous_on (f ∘ (a.pretrivialization_at b).to_local_equiv.symm)
((s ∩ (a.pretrivialization_at b).base_set) ×ˢ (set.univ : set F))) :
- @continuous_on _ _ a.total_space_topology _ f ((π E) ⁻¹' s) :=
+ @continuous_on _ _ a.total_space_topology _ f ((π F E) ⁻¹' s) :=
begin
letI := a.total_space_topology,
intros z hz,
- let e : trivialization F (π E) :=
+ let e : trivialization F (π F E) :=
a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas z.proj),
refine (e.continuous_at_of_comp_right _
((hf z.proj hz).continuous_at (is_open.mem_nhds _ _))).continuous_within_at,
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
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:
[add_comm_monoid]
to [add_comm_group]
, this is mathematically harmless since they are also modules over a field.continuous_linear_equiv.arrow_congrSL
from normed spaces to topological vector spacesCo-authored-by: Moritz Doll <moritz.doll@googlemail.com> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@@ -705,6 +705,7 @@ end fiber_bundle_core
/-! ### Prebundle construction for constructing fiber bundles -/
variables (F) (E : B → Type*) [topological_space B] [topological_space F]
+ [Π x, topological_space (E x)]
/-- This structure permits to define a fiber bundle when trivializations are given as local
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 :=
(pretrivialization_mem_atlas : ∀ x : B, pretrivialization_at x ∈ pretrivialization_atlas)
(continuous_triv_change : ∀ e e' ∈ pretrivialization_atlas,
continuous_on (e ∘ e'.to_local_equiv.symm) (e'.target ∩ (e'.to_local_equiv.symm ⁻¹' e.source)))
+(total_space_mk_inducing : ∀ (b : B), inducing ((pretrivialization_at b) ∘ (total_space_mk b)))
namespace fiber_prebundle
@@ -799,19 +801,27 @@ begin
exact a.mem_base_pretrivialization_at b,
end
-/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
-def fiber_topology (b : B) : topological_space (E b) :=
-topological_space.induced (total_space_mk b) a.total_space_topology
-
-@[continuity] lemma inducing_total_space_mk (b : B) :
- @inducing _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
-by { letI := a.total_space_topology, letI := a.fiber_topology b, exact ⟨rfl⟩ }
-
@[continuity] lemma continuous_total_space_mk (b : B) :
- @continuous _ _ (a.fiber_topology b) a.total_space_topology (total_space_mk b) :=
+ @continuous _ _ _ a.total_space_topology (total_space_mk b) :=
begin
- letI := a.total_space_topology, letI := a.fiber_topology b,
- exact (a.inducing_total_space_mk b).continuous
+ letI := a.total_space_topology,
+ let e := a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas b),
+ rw e.to_local_homeomorph.continuous_iff_continuous_comp_left
+ (a.total_space_mk_preimage_source b),
+ exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.total_space_mk_inducing b).induced).1,
+end
+
+lemma inducing_total_space_mk_of_inducing_comp (b : B)
+ (h : inducing ((a.pretrivialization_at b) ∘ (total_space_mk b))) :
+ @inducing _ _ _ a.total_space_topology (total_space_mk b) :=
+begin
+ letI := a.total_space_topology,
+ rw ←restrict_comp_cod_restrict (a.mem_trivialization_at_source b) at h,
+ apply inducing.of_cod_restrict (a.mem_trivialization_at_source b),
+ refine inducing_of_inducing_compose _ (continuous_on_iff_continuous_restrict.mp
+ (a.trivialization_of_mem_pretrivialization_atlas
+ (a.pretrivialization_mem_atlas b)).continuous_to_fun) h,
+ exact (a.continuous_total_space_mk b).cod_restrict (a.mem_trivialization_at_source b),
end
/-- 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
`fiber_prebundle.total_space_topology`, these "pretrivializations" are actually
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
def to_fiber_bundle :
- @fiber_bundle B F _ _ E a.total_space_topology a.fiber_topology :=
-{ total_space_mk_inducing := a.inducing_total_space_mk,
+ @fiber_bundle B F _ _ E a.total_space_topology _ :=
+{ total_space_mk_inducing := λ b, a.inducing_total_space_mk_of_inducing_comp b
+ (a.total_space_mk_inducing b),
trivialization_atlas := {e | ∃ e₀ (he₀ : e₀ ∈ a.pretrivialization_atlas),
e = a.trivialization_of_mem_pretrivialization_atlas he₀},
trivialization_at := λ x, a.trivialization_of_mem_pretrivialization_atlas
@@ -833,7 +844,6 @@ def to_fiber_bundle :
lemma continuous_proj : @continuous _ _ a.total_space_topology _ (π E) :=
begin
letI := a.total_space_topology,
- letI := a.fiber_topology,
letI := a.to_fiber_bundle,
exact continuous_proj F E,
end
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
geometry.manifold.mfderiv
and later files.cont_mdiff_at_iff_target
, which doesn't hold anymore in the new setting.cont_mdiff_at_total_space
, which characterizes C^n
maps into a vector bundle. We need a bunch of basic lemmas to prove this. This makes it easy to prove smooth_zero_section
.cont_mdiff_mfderiv
to manifold/vector_bundle/basic
@@ -167,12 +167,12 @@ for the initial bundle.
Fiber bundle, topological bundle, structure group
-/
-variables {ι : Type*} {B : Type*} {F : Type*}
+variables {ι B F X : Type*} [topological_space X]
open topological_space filter set bundle
open_locale topology classical bundle
-attribute [mfld_simps] total_space.proj total_space_mk coe_fst coe_snd coe_snd_map_apply
+attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply
coe_snd_map_smul total_space.mk_cast
/-! ### General definition of fiber bundles -/
@@ -240,6 +240,47 @@ lemma quotient_map_proj [nonempty F] : quotient_map (π E) :=
lemma continuous_total_space_mk (x : B) : continuous (@total_space_mk B E x) :=
(total_space_mk_inducing F E x).continuous
+variables {E F}
+
+@[simp, mfld_simps]
+lemma mem_trivialization_at_proj_source {x : total_space E} :
+ x ∈ (trivialization_at F E x.proj).source :=
+(trivialization.mem_source _).mpr $ mem_base_set_trivialization_at F E x.proj
+
+@[simp, mfld_simps]
+lemma trivialization_at_proj_fst {x : total_space E} :
+ ((trivialization_at F E x.proj) x).1 = x.proj :=
+trivialization.coe_fst' _ $ mem_base_set_trivialization_at F E x.proj
+
+variable (F)
+open trivialization
+
+/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
+lemma continuous_within_at_total_space (f : X → total_space E) {s : set X} {x₀ : X} :
+ continuous_within_at f s x₀ ↔
+ continuous_within_at (λ x, (f x).proj) s x₀ ∧
+ continuous_within_at (λ x, ((trivialization_at F E (f x₀).proj) (f x)).2) s x₀ :=
+begin
+ refine (and_iff_right_iff_imp.2 $ λ hf, _).symm.trans (and_congr_right $ λ hf, _),
+ { refine (continuous_proj F E).continuous_within_at.comp hf (maps_to_image f s) },
+ have h1 : (λ x, (f x).proj) ⁻¹' (trivialization_at F E (f x₀).proj).base_set ∈ 𝓝[s] x₀ :=
+ hf.preimage_mem_nhds_within ((open_base_set _).mem_nhds (mem_base_set_trivialization_at F E _)),
+ have h2 : continuous_within_at (λ x, (trivialization_at F E (f x₀).proj (f x)).1) s x₀,
+ { refine hf.congr_of_eventually_eq (eventually_of_mem h1 $ λ x hx, _) trivialization_at_proj_fst,
+ rw [coe_fst'],
+ exact hx },
+ rw [(trivialization_at F E (f x₀).proj).continuous_within_at_iff_continuous_within_at_comp_left],
+ { simp_rw [continuous_within_at_prod_iff, function.comp, trivialization.coe_coe, h2, true_and] },
+ { apply mem_trivialization_at_proj_source },
+ { rwa [source_eq, preimage_preimage] }
+end
+
+/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
+lemma continuous_at_total_space (f : X → total_space E) {x₀ : X} :
+ continuous_at f x₀ ↔ continuous_at (λ x, (f x).proj) x₀ ∧
+ continuous_at (λ x, ((trivialization_at F E (f x₀).proj) (f x)).2) x₀ :=
+by { simp_rw [← continuous_within_at_univ], exact continuous_within_at_total_space F f }
+
end fiber_bundle
variables (F E)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -913,7 +913,7 @@ variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
#print FiberPrebundle /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the local equivalences
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -399,7 +399,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
· /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
`[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
- rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
+ rw [disjoint_left] at he; push_neg at he; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
-/
@@ -504,13 +504,13 @@ def trivChange (i j : ι) : PartialHomeomorph (B × F) (B × F)
map_target' p hp := by simpa using hp
left_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx.1
· simp [hx]
right_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx.2
· simp [hx]
@@ -552,14 +552,14 @@ def localTrivAsPartialEquiv (i : ι) : PartialEquiv Z.TotalSpace (B × F)
simpa only [Set.mem_preimage, and_true_iff, Set.mem_univ, Set.mem_prod] using hp
left_inv' := by
rintro ⟨x, v⟩ hx
- change x ∈ Z.base_set i at hx
+ change x ∈ Z.base_set i at hx
dsimp only
rw [Z.coord_change_comp, Z.coord_change_self]
· exact Z.mem_base_set_at _
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
right_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
@@ -652,7 +652,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
by
apply continuousOn_isOpen_of_generateFrom ((Z.is_open_base_set i).Prod isOpen_univ)
intro t ht
- simp only [exists_prop, mem_Union, mem_singleton_iff] at ht
+ simp only [exists_prop, mem_Union, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ :
∃ j s,
IsOpen s ∧
@@ -879,7 +879,7 @@ instance fiberBundle : FiberBundle F Z.Fiber
_⟩
rw [preimage_inter, ← preimage_comp, Function.comp]
refine' ext_iff.mpr fun a => ⟨fun ha => _, fun ha => ⟨Z.mem_base_set_at b, _⟩⟩
- · simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha
+ · simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha
exact ha.2.2
· simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk]
exact ⟨Z.mem_base_set_at b, ha⟩⟩
@@ -997,7 +997,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
rw [isOpen_coinduced, isOpen_induced_iff]
obtain ⟨u, hu1, hu2⟩ := continuous_on_iff'.mp (a.continuous_triv_change _ he _ he') s hs
have hu3 := congr_arg (fun s => (fun x : e'.target => (x : B × F)) ⁻¹' s) hu2
- simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
+ simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
refine'
⟨u ∩ e'.to_local_equiv.target ∩ e'.to_local_equiv.symm ⁻¹' e.source, _, by
simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]; rfl⟩
@@ -1048,7 +1048,7 @@ theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
@Inducing _ _ _ a.totalSpaceTopology (TotalSpace.mk b) :=
by
letI := a.total_space_topology
- rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
+ rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
apply Inducing.of_codRestrict (a.mem_trivialization_at_source b)
refine'
inducing_of_inducing_compose _
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -185,11 +185,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -338,27 +338,72 @@ variable (F E)
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
[OrderTopology B] [FiberBundle F E] (a b : B) :
- ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by classical
+ ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by
+ classical
+ obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π F E), a ∈ ea.baseSet :=
+ ⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
+ -- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
+ cases' le_or_lt a b with hab hab <;>
+ [skip; exact ⟨ea, by simp [*]⟩]
+ /- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
+ We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
+ set s : Set B := {x ∈ Icc a b | ∃ e : Trivialization F (π F E), Icc a x ⊆ e.baseSet}
+ have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
+ have sne : s.nonempty := ⟨a, ha⟩
+ have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
+ have sbd : BddAbove s := ⟨b, hsb⟩
+ set c := Sup s
+ have hsc : IsLUB s c := isLUB_csSup sne sbd
+ have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
+ obtain ⟨-, ec : Trivialization F (π F E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
+ by
+ cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
+ refine' ⟨hc, _⟩
+ /- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
+ of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
+ obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π F E), c ∈ ec.baseSet :=
+ ⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩
+ obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
+ (mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
+ (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set hc)
+ /- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
+ `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
+ obtain ⟨d, ⟨hdab, ead, had⟩, hd⟩ : ∃ d ∈ s, d ∈ Ioc c' c := hsc.exists_between hc'.2
+ refine' ⟨ead.piecewise_le ec d (had ⟨hdab.1, le_rfl⟩) (hc'e hd), subset_ite.2 _⟩
+ refine' ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
+ /- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
+ done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
+ `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
+ cases' hc.2.eq_or_lt with heq hlt
+ · exact ⟨ec, HEq ▸ hec⟩
+ rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
+ · exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
+ /- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
+ `d ∈ (c, b]`. -/
+ obtain ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, Ico c d ⊆ ec.base_set :=
+ (mem_nhdsWithin_Ici_iff_exists_mem_Ioc_Ico_subset hlt).1
+ (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set (hec ⟨hc.1, le_rfl⟩))
+ have had : Ico a d ⊆ ec.base_set := Ico_subset_Icc_union_Ico.trans (union_subset hec hd)
+ by_cases he : Disjoint (Iio d) (Ioi c)
+ · /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
+ Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
+ a trivialization over `[a, d]`. -/
+ obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π F E), d ∈ ed.baseSet :=
+ ⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩
+ refine'
+ ⟨d, hdcb,
+ (ec.restr_open (Iio d) isOpen_Iio).disjointUnion (ed.restr_open (Ioi c) isOpen_Ioi)
+ (he.mono (inter_subset_right _ _) (inter_subset_right _ _)),
+ fun x hx => _⟩
+ rcases hx.2.eq_or_lt with (rfl | hxd)
+ exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
+ · /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
+ `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
+ rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
+ exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
-/
--- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
-/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
- We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
-/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
- of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
-/- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
- `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
-/- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
- done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
- `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
-/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
- `d ∈ (c, b]`. -/
-/- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
- Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
- a trivialization over `[a, d]`. -/
-/- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
- `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
end FiberBundle
/-! ### Core construction for constructing fiber bundles -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -338,72 +338,27 @@ variable (F E)
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
[OrderTopology B] [FiberBundle F E] (a b : B) :
- ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by
- classical
- obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π F E), a ∈ ea.baseSet :=
- ⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
- -- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
- cases' le_or_lt a b with hab hab <;>
- [skip; exact ⟨ea, by simp [*]⟩]
- /- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
- We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
- set s : Set B := {x ∈ Icc a b | ∃ e : Trivialization F (π F E), Icc a x ⊆ e.baseSet}
- have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
- have sne : s.nonempty := ⟨a, ha⟩
- have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
- have sbd : BddAbove s := ⟨b, hsb⟩
- set c := Sup s
- have hsc : IsLUB s c := isLUB_csSup sne sbd
- have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
- obtain ⟨-, ec : Trivialization F (π F E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
- by
- cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
- refine' ⟨hc, _⟩
- /- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
- of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
- obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π F E), c ∈ ec.baseSet :=
- ⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩
- obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
- (mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
- (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set hc)
- /- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
- `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
- obtain ⟨d, ⟨hdab, ead, had⟩, hd⟩ : ∃ d ∈ s, d ∈ Ioc c' c := hsc.exists_between hc'.2
- refine' ⟨ead.piecewise_le ec d (had ⟨hdab.1, le_rfl⟩) (hc'e hd), subset_ite.2 _⟩
- refine' ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
- /- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
- done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
- `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
- cases' hc.2.eq_or_lt with heq hlt
- · exact ⟨ec, HEq ▸ hec⟩
- rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
- · exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
- /- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
- `d ∈ (c, b]`. -/
- obtain ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, Ico c d ⊆ ec.base_set :=
- (mem_nhdsWithin_Ici_iff_exists_mem_Ioc_Ico_subset hlt).1
- (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set (hec ⟨hc.1, le_rfl⟩))
- have had : Ico a d ⊆ ec.base_set := Ico_subset_Icc_union_Ico.trans (union_subset hec hd)
- by_cases he : Disjoint (Iio d) (Ioi c)
- · /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
- Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
- a trivialization over `[a, d]`. -/
- obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π F E), d ∈ ed.baseSet :=
- ⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩
- refine'
- ⟨d, hdcb,
- (ec.restr_open (Iio d) isOpen_Iio).disjointUnion (ed.restr_open (Ioi c) isOpen_Ioi)
- (he.mono (inter_subset_right _ _) (inter_subset_right _ _)),
- fun x hx => _⟩
- rcases hx.2.eq_or_lt with (rfl | hxd)
- exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
- · /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
- `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
- rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
- exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
+ ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by classical
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
-/
+-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
+/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
+ We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
+/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
+ of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
+/- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
+ `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
+/- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
+ done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
+ `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
+/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
+ `d ∈ (c, b]`. -/
+/- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
+ Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
+ a trivialization over `[a, d]`. -/
+/- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
+ `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
end FiberBundle
/-! ### Core construction for constructing fiber bundles -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -185,11 +185,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -531,7 +531,7 @@ theorem mem_trivChange_source (i j : ι) (p : B × F) :
-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-#print FiberBundleCore.localTrivAsLocalEquiv /-
+#print FiberBundleCore.localTrivAsPartialEquiv /-
/-- Associate to a trivialization index `i : ι` the corresponding trivialization, i.e., a bijection
between `proj ⁻¹ (base_set i)` and `base_set i × F`. As the fiber above `x` is `F` but read in the
chart with index `index_at x`, the trivialization in the fiber above x is by definition the
@@ -540,7 +540,7 @@ The local trivialization will ultimately be a local homeomorphism. For now, we o
local equiv version, denoted with a prime. In further developments, avoid this auxiliary version,
and use `Z.local_triv` instead.
-/
-def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
+def localTrivAsPartialEquiv (i : ι) : PartialEquiv Z.TotalSpace (B × F)
where
source := Z.proj ⁻¹' Z.baseSet i
target := Z.baseSet i ×ˢ univ
@@ -563,47 +563,47 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
-#align fiber_bundle_core.local_triv_as_local_equiv FiberBundleCore.localTrivAsLocalEquiv
+#align fiber_bundle_core.local_triv_as_local_equiv FiberBundleCore.localTrivAsPartialEquiv
-/
variable (i : ι)
-#print FiberBundleCore.mem_localTrivAsLocalEquiv_source /-
-theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
- p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
+#print FiberBundleCore.mem_localTrivAsPartialEquiv_source /-
+theorem mem_localTrivAsPartialEquiv_source (p : Z.TotalSpace) :
+ p ∈ (Z.localTrivAsPartialEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
-#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
+#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsPartialEquiv_source
-/
-#print FiberBundleCore.mem_localTrivAsLocalEquiv_target /-
-theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
- p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i := by erw [mem_prod];
+#print FiberBundleCore.mem_localTrivAsPartialEquiv_target /-
+theorem mem_localTrivAsPartialEquiv_target (p : B × F) :
+ p ∈ (Z.localTrivAsPartialEquiv i).target ↔ p.1 ∈ Z.baseSet i := by erw [mem_prod];
simp only [and_true_iff, mem_univ]
-#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
+#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsPartialEquiv_target
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_apply /-
-theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
- (Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
+#print FiberBundleCore.localTrivAsPartialEquiv_apply /-
+theorem localTrivAsPartialEquiv_apply (p : Z.TotalSpace) :
+ (Z.localTrivAsPartialEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
+#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsPartialEquiv_apply
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_trans /-
+#print FiberBundleCore.localTrivAsPartialEquiv_trans /-
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
-theorem localTrivAsLocalEquiv_trans (i j : ι) :
- (Z.localTrivAsLocalEquiv i).symm.trans (Z.localTrivAsLocalEquiv j) ≈
- (Z.trivChange i j).toLocalEquiv :=
+theorem localTrivAsPartialEquiv_trans (i j : ι) :
+ (Z.localTrivAsPartialEquiv i).symm.trans (Z.localTrivAsPartialEquiv j) ≈
+ (Z.trivChange i j).toPartialEquiv :=
by
constructor
· ext x; simp only [mem_local_triv_as_local_equiv_target, mfld_simps]; rfl
· rintro ⟨x, v⟩ hx
- simp only [triv_change, local_triv_as_local_equiv, LocalEquiv.symm, true_and_iff,
- Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, LocalEquiv.trans_source, mem_inter_iff,
- and_true_iff, mem_preimage, proj, mem_univ, LocalEquiv.coe_mk, eq_self_iff_true,
- LocalEquiv.coe_trans, total_space.proj] at hx ⊢
+ simp only [triv_change, local_triv_as_local_equiv, PartialEquiv.symm, true_and_iff,
+ Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, PartialEquiv.trans_source, mem_inter_iff,
+ and_true_iff, mem_preimage, proj, mem_univ, PartialEquiv.coe_mk, eq_self_iff_true,
+ PartialEquiv.coe_trans, total_space.proj] at hx ⊢
simp only [Z.coord_change_comp, hx, mem_inter_iff, and_self_iff, mem_base_set_at]
-#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
+#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsPartialEquiv_trans
-/
#print FiberBundleCore.toTopologicalSpace /-
@@ -619,7 +619,7 @@ variable (b : B) (a : F)
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
#print FiberBundleCore.open_source' /-
-theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
+theorem open_source' (i : ι) : IsOpen (Z.localTrivAsPartialEquiv i).source :=
by
apply TopologicalSpace.GenerateOpen.basic
simp only [exists_prop, mem_Union, mem_singleton_iff]
@@ -659,7 +659,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
t = (local_triv_as_local_equiv Z j).source ∩ local_triv_as_local_equiv Z j ⁻¹' s :=
ht
rw [ts]
- simp only [LocalEquiv.right_inv, preimage_inter, LocalEquiv.left_inv]
+ simp only [PartialEquiv.right_inv, preimage_inter, PartialEquiv.left_inv]
let e := Z.local_triv_as_local_equiv i
let e' := Z.local_triv_as_local_equiv j
let f := e.symm.trans e'
@@ -670,10 +670,10 @@ def localTriv (i : ι) : Trivialization F Z.proj
(continuousOn_open_iff (Z.triv_change i j).open_source).1 (Z.triv_change i j).ContinuousOn _
s_open
convert this using 1
- dsimp [LocalEquiv.trans_source]
+ dsimp [PartialEquiv.trans_source]
rw [← preimage_comp, inter_assoc]
rfl
- toLocalEquiv := Z.localTrivAsLocalEquiv i
+ toPartialEquiv := Z.localTrivAsPartialEquiv i
#align fiber_bundle_core.local_triv FiberBundleCore.localTriv
-/
@@ -715,35 +715,35 @@ theorem continuous_const_section (v : F)
#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_section
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_coe /-
+#print FiberBundleCore.localTrivAsPartialEquiv_coe /-
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
+theorem localTrivAsPartialEquiv_coe : ⇑(Z.localTrivAsPartialEquiv i) = Z.localTriv i :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coe
+#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsPartialEquiv_coe
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_source /-
+#print FiberBundleCore.localTrivAsPartialEquiv_source /-
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_source :
- (Z.localTrivAsLocalEquiv i).source = (Z.localTriv i).source :=
+theorem localTrivAsPartialEquiv_source :
+ (Z.localTrivAsPartialEquiv i).source = (Z.localTriv i).source :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_source
+#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsPartialEquiv_source
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_target /-
+#print FiberBundleCore.localTrivAsPartialEquiv_target /-
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_target :
- (Z.localTrivAsLocalEquiv i).target = (Z.localTriv i).target :=
+theorem localTrivAsPartialEquiv_target :
+ (Z.localTrivAsPartialEquiv i).target = (Z.localTriv i).target :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_target
+#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsPartialEquiv_target
-/
-#print FiberBundleCore.localTrivAsLocalEquiv_symm /-
+#print FiberBundleCore.localTrivAsPartialEquiv_symm /-
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_symm :
- (Z.localTrivAsLocalEquiv i).symm = (Z.localTriv i).toLocalEquiv.symm :=
+theorem localTrivAsPartialEquiv_symm :
+ (Z.localTrivAsPartialEquiv i).symm = (Z.localTriv i).toPartialEquiv.symm :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symm
+#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsPartialEquiv_symm
-/
#print FiberBundleCore.baseSet_at /-
@@ -926,7 +926,7 @@ structure FiberPrebundle where
pretrivialization_mem_atlas : ∀ x : B, pretrivialization_at x ∈ pretrivialization_atlas
continuous_triv_change :
∀ (e) (_ : e ∈ pretrivialization_atlas) (e') (_ : e' ∈ pretrivialization_atlas),
- ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
+ ContinuousOn (e ∘ e'.toPartialEquiv.symm) (e'.target ∩ e'.toPartialEquiv.symm ⁻¹' e.source)
totalSpace_mk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ TotalSpace.mk b)
#align fiber_prebundle FiberPrebundle
-/
@@ -945,7 +945,7 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace F
#print FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas /-
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
- @ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
+ @ContinuousOn _ _ _ a.totalSpaceTopology e.toPartialEquiv.symm e.target :=
by
refine'
id fun z H =>
@@ -970,7 +970,7 @@ theorem isOpen_source (e : Pretrivialization F (π F E)) : is_open[a.totalSpaceT
#print FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter /-
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π F E))
(he' : e' ∈ a.pretrivializationAtlas) :
- IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) :=
+ IsOpen (e'.toPartialEquiv.target ∩ e'.toPartialEquiv.symm ⁻¹' e.source) :=
by
letI := a.total_space_topology
obtain ⟨u, hu1, hu2⟩ :=
@@ -1100,7 +1100,7 @@ theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalS
{s : Set B} (hs : IsOpen s)
(hf :
∀ b ∈ s,
- ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
+ ContinuousOn (f ∘ (a.pretrivializationAt b).toPartialEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
@ContinuousOn _ _ a.totalSpaceTopology _ f (π F E ⁻¹' s) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -494,7 +494,7 @@ def proj : Z.TotalSpace → B :=
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
#print FiberBundleCore.trivChange /-
/-- Local homeomorphism version of the trivialization change. -/
-def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
+def trivChange (i j : ι) : PartialHomeomorph (B × F) (B × F)
where
source := (Z.baseSet i ∩ Z.baseSet j) ×ˢ univ
target := (Z.baseSet i ∩ Z.baseSet j) ×ˢ univ
@@ -704,7 +704,7 @@ theorem continuous_const_section (v : F)
apply continuous_iff_continuousAt.2 fun x => _
have A : Z.base_set (Z.index_at x) ∈ 𝓝 x :=
IsOpen.mem_nhds (Z.is_open_base_set (Z.index_at x)) (Z.mem_base_set_at x)
- apply ((Z.local_triv_at x).toLocalHomeomorph.continuousAt_iff_continuousAt_comp_left _).2
+ apply ((Z.local_triv_at x).toPartialHomeomorph.continuousAt_iff_continuousAt_comp_left _).2
· simp only [(· ∘ ·), mfld_simps]
apply continuous_at_id.prod
have : ContinuousOn (fun y : B => v) (Z.base_set (Z.index_at x)) := continuousOn_const
@@ -819,7 +819,7 @@ theorem mem_localTrivAt_target (p : B × F) (b : B) :
#print FiberBundleCore.localTriv_symm_apply /-
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
- (Z.localTriv i).toLocalHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
+ (Z.localTriv i).toPartialHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_apply
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -650,7 +650,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
exact ⟨i, s, s_open, rfl⟩
continuous_invFun :=
by
- apply continuousOn_open_of_generateFrom ((Z.is_open_base_set i).Prod isOpen_univ)
+ apply continuousOn_isOpen_of_generateFrom ((Z.is_open_base_set i).Prod isOpen_univ)
intro t ht
simp only [exists_prop, mem_Union, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2019 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
-/
-import Mathbin.Topology.FiberBundle.Trivialization
+import Topology.FiberBundle.Trivialization
#align_import topology.fiber_bundle.basic from "leanprover-community/mathlib"@"e473c3198bb41f68560cab68a0529c854b618833"
@@ -185,11 +185,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
@@ -913,7 +913,7 @@ variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
#print FiberPrebundle /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the local equivalences
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2019 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.FiberBundle.Trivialization
+#align_import topology.fiber_bundle.basic from "leanprover-community/mathlib"@"e473c3198bb41f68560cab68a0529c854b618833"
+
/-!
# Fiber bundles
@@ -916,7 +913,7 @@ variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
#print FiberPrebundle /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the local equivalences
mathlib commit https://github.com/leanprover-community/mathlib/commit/5dc6092d09e5e489106865241986f7f2ad28d4c8
@@ -188,7 +188,7 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceₓ_mk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpace_mk_inducing] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
@@ -197,7 +197,7 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
class FiberBundle where
- totalSpaceₓ_mk_inducing : ∀ b : B, Inducing (@TotalSpace.mk B F E b)
+ totalSpace_mk_inducing : ∀ b : B, Inducing (@TotalSpace.mk B F E b)
trivializationAtlas : Set (Trivialization F (π F E))
trivializationAt : B → Trivialization F (π F E)
mem_baseSet_trivializationAt : ∀ b : B, b ∈ (trivialization_at b).baseSet
@@ -488,7 +488,7 @@ def TotalSpace :=
#print FiberBundleCore.proj /-
/-- The projection from the total space of a fiber bundle core, on its base. -/
@[reducible, simp, mfld_simps]
-def proj : Z.TotalSpaceₓ → B :=
+def proj : Z.TotalSpace → B :=
Bundle.TotalSpace.proj
#align fiber_bundle_core.proj FiberBundleCore.proj
-/
@@ -543,7 +543,7 @@ The local trivialization will ultimately be a local homeomorphism. For now, we o
local equiv version, denoted with a prime. In further developments, avoid this auxiliary version,
and use `Z.local_triv` instead.
-/
-def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpaceₓ (B × F)
+def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
where
source := Z.proj ⁻¹' Z.baseSet i
target := Z.baseSet i ×ˢ univ
@@ -572,7 +572,7 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpaceₓ (B × F)
variable (i : ι)
#print FiberBundleCore.mem_localTrivAsLocalEquiv_source /-
-theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpaceₓ) :
+theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
@@ -586,7 +586,7 @@ theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
-/
#print FiberBundleCore.localTrivAsLocalEquiv_apply /-
-theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpaceₓ) :
+theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
@@ -612,7 +612,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
#print FiberBundleCore.toTopologicalSpace /-
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
-instance toTopologicalSpace : TopologicalSpace Z.TotalSpaceₓ :=
+instance toTopologicalSpace : TopologicalSpace Z.TotalSpace :=
TopologicalSpace.generateFrom <|
⋃ (i : ι) (s : Set (B × F)) (s_open : IsOpen s), {(Z i).source ∩ Z i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
@@ -702,7 +702,7 @@ zero section of a vector bundle. Another example (not yet defined) would be the
section of the endomorphism bundle of a vector bundle. -/
theorem continuous_const_section (v : F)
(h : ∀ i j, ∀ x ∈ Z.baseSet i ∩ Z.baseSet j, Z.coordChange i j x v = v) :
- Continuous (show B → Z.TotalSpaceₓ from fun x => ⟨x, v⟩) :=
+ Continuous (show B → Z.TotalSpace from fun x => ⟨x, v⟩) :=
by
apply continuous_iff_continuousAt.2 fun x => _
have A : Z.base_set (Z.index_at x) ∈ 𝓝 x :=
@@ -758,7 +758,7 @@ theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
#print FiberBundleCore.localTriv_apply /-
@[simp, mfld_simps]
-theorem localTriv_apply (p : Z.TotalSpaceₓ) :
+theorem localTriv_apply (p : Z.TotalSpace) :
(Z.localTriv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_apply
@@ -766,7 +766,7 @@ theorem localTriv_apply (p : Z.TotalSpaceₓ) :
#print FiberBundleCore.localTrivAt_apply /-
@[simp, mfld_simps]
-theorem localTrivAt_apply (p : Z.TotalSpaceₓ) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
+theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
rw [local_triv_at, local_triv_apply, coord_change_self]; exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
-/
@@ -780,7 +780,7 @@ theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ =
#print FiberBundleCore.mem_localTriv_source /-
@[simp, mfld_simps]
-theorem mem_localTriv_source (p : Z.TotalSpaceₓ) :
+theorem mem_localTriv_source (p : Z.TotalSpace) :
p ∈ (Z.localTriv i).source ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_source
@@ -788,17 +788,19 @@ theorem mem_localTriv_source (p : Z.TotalSpaceₓ) :
#print FiberBundleCore.mem_localTrivAt_source /-
@[simp, mfld_simps]
-theorem mem_localTrivAt_source (p : Z.TotalSpaceₓ) (b : B) :
+theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
p ∈ (Z.localTrivAt b).source ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
-/
-#print FiberBundleCore.mem_source_at /-
+/- warning: fiber_bundle_core.mem_source_at clashes with fiber_bundle_core.mem_local_triv_at_source -> FiberBundleCore.mem_localTrivAt_source
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_localTrivAt_sourceₓ'. -/
+#print FiberBundleCore.mem_localTrivAt_source /-
@[simp, mfld_simps]
-theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpaceₓ) ∈ (Z.localTrivAt b).source := by
+theorem mem_localTrivAt_source : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
rw [local_triv_at, mem_local_triv_source]; exact Z.mem_base_set_at b
-#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
+#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_localTrivAt_source
-/
#print FiberBundleCore.mem_localTriv_target /-
@@ -835,8 +837,7 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
#print FiberBundleCore.continuous_totalSpaceMk /-
/-- The inclusion of a fiber into the total space is a continuous map. -/
@[continuity]
-theorem continuous_totalSpaceMk (b : B) :
- Continuous (TotalSpace.mk b : Z.Fiber b → Z.TotalSpaceₓ) :=
+theorem continuous_totalSpaceMk (b : B) : Continuous (TotalSpace.mk b : Z.Fiber b → Z.TotalSpace) :=
by
rw [continuous_iff_le_induced, FiberBundleCore.toTopologicalSpace]
apply le_induced_generateFrom
@@ -868,7 +869,7 @@ theorem continuous_totalSpaceMk (b : B) :
/-- A fiber bundle constructed from core is indeed a fiber bundle. -/
instance fiberBundle : FiberBundle F Z.Fiber
where
- totalSpaceₓ_mk_inducing b :=
+ totalSpace_mk_inducing b :=
⟨by
refine' le_antisymm _ fun s h => _
· rw [← continuous_iff_le_induced]
@@ -929,7 +930,7 @@ structure FiberPrebundle where
continuous_triv_change :
∀ (e) (_ : e ∈ pretrivialization_atlas) (e') (_ : e' ∈ pretrivialization_atlas),
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
- totalSpaceₓ_mk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ TotalSpace.mk b)
+ totalSpace_mk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ TotalSpace.mk b)
#align fiber_prebundle FiberPrebundle
-/
@@ -1071,8 +1072,8 @@ establishes that for the topology constructed on the sigma-type using
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
where
- totalSpaceₓ_mk_inducing b :=
- a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceₓ_mk_inducing b)
+ totalSpace_mk_inducing b :=
+ a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpace_mk_inducing b)
trivializationAtlas :=
{e |
∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
mathlib commit https://github.com/leanprover-community/mathlib/commit/728ef9dbb281241906f25cbeb30f90d83e0bb451
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
+! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -21,16 +21,14 @@ Mathematically, a (topological) fiber bundle with fiber `F` over a base `B` is a
point is a direct product.
In our formalism, a fiber bundle is by definition the type
-`bundle.total_space E` where `E : B → Type*` is a function associating to
-`x : B` the fiber over `x`. This type `bundle.total_space E` is just a type synonym for
-`Σ (x : B), E x`, with the interest that one can put another topology than on `Σ (x : B), E x`
-which has the disjoint union topology.
+`bundle.total_space F E` where `E : B → Type*` is a function associating to `x : B` the fiber over
+`x`. This type `bundle.total_space F E` is a type of pairs `(proj : B, snd : E proj)`.
-To have a fiber bundle structure on `bundle.total_space E`, one should
+To have a fiber bundle structure on `bundle.total_space F E`, one should
additionally have the following data:
* `F` should be a topological space;
-* There should be a topology on `bundle.total_space E`, for which the projection to `B` is
+* There should be a topology on `bundle.total_space F E`, for which the projection to `B` is
a fiber bundle with fiber `F` (in particular, each fiber `E x` is homeomorphic to `F`);
* For each `x`, the fiber `E x` should be a topological space, and the injection
from `E x` to `bundle.total_space F E` should be an embedding;
@@ -57,17 +55,16 @@ fiber bundle from trivializations given as local equivalences with minimum addit
### Construction of a bundle from trivializations
-* `bundle.total_space E` is a type synonym for `Σ (x : B), E x`, that we can endow with a suitable
- topology.
+* `bundle.total_space F E` is the type of pairs `(proj : B, snd : E proj)`. We can use the extra
+ argument `F` to construct topology on the total space.
* `fiber_bundle_core ι B F` : structure registering how changes of coordinates act
on the fiber `F` above open subsets of `B`, where local trivializations are indexed by `ι`.
Let `Z : fiber_bundle_core ι B F`. Then we define
* `Z.fiber x` : the fiber above `x`, homeomorphic to `F` (and defeq to `F` as a type).
-* `Z.total_space` : the total space of `Z`, defined as a `Type` as `Σ (b : B), F`, but with a
- twisted topology coming from the fiber bundle structure. It is (reducibly) the same as
- `bundle.total_space Z.fiber`.
+* `Z.total_space` : the total space of `Z`, defined as a `Type*` as `bundle.total_space F Z.fiber`
+ with a custom topology.
* `Z.proj` : projection from `Z.total_space` to `B`. It is continuous.
* `Z.local_triv i`: for `i : ι`, bundle trivialization above the set `Z.base_set i`, which is an
open set in `B`.
@@ -158,8 +155,8 @@ choose for each `x` one specific trivialization around it. We include this choic
of the `fiber_bundle_core`, as it makes some constructions more
functorial and it is a nice way to say that the trivializations cover the whole space `B`.
-With this definition, the type of the fiber bundle space constructed from the core data is just
-`Σ (b : B), F `, but the topology is not the product one, in general.
+With this definition, the type of the fiber bundle space constructed from the core data is
+`bundle.total_space F (λ b : B, F)`, but the topology is not the product one, in general.
We also take the indexing type (indexing all the trivializations) as a parameter to the fiber bundle
core: it could always be taken as a subtype of all the maps from open subsets of `B` to continuous
@@ -179,7 +176,7 @@ open TopologicalSpace Filter Set Bundle
open scoped Topology Classical Bundle
-attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul
+attribute [mfld_simps] total_space.coe_proj total_space.coe_snd coe_snd_map_apply coe_snd_map_smul
total_space.mk_cast
/-! ### General definition of fiber bundles -/
@@ -188,10 +185,10 @@ attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_
section FiberBundle
variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
- [TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
+ [TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceₓ_mk_inducing] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
@@ -200,9 +197,9 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
class FiberBundle where
- totalSpaceMk_inducing : ∀ b : B, Inducing (@totalSpaceMk B E b)
- trivializationAtlas : Set (Trivialization F (π E))
- trivializationAt : B → Trivialization F (π E)
+ totalSpaceₓ_mk_inducing : ∀ b : B, Inducing (@TotalSpace.mk B F E b)
+ trivializationAtlas : Set (Trivialization F (π F E))
+ trivializationAt : B → Trivialization F (π F E)
mem_baseSet_trivializationAt : ∀ b : B, b ∈ (trivialization_at b).baseSet
trivialization_mem_atlas : ∀ b : B, trivialization_at b ∈ trivialization_atlas
#align fiber_bundle FiberBundle
@@ -219,7 +216,7 @@ bundle. This is needed because lemmas about the linearity of trivializations or
functions to `F →L[R] F`, where `F` is the model fiber) of the transition functions are only
expected to hold for trivializations in the designated atlas. -/
@[mk_iff]
-class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π E)) : Prop where
+class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π F E)) : Prop where
out : e ∈ trivializationAtlas F E
#align mem_trivialization_atlas MemTrivializationAtlas
-/
@@ -232,7 +229,7 @@ namespace FiberBundle
variable (F) {E} [FiberBundle F E]
#print FiberBundle.map_proj_nhds /-
-theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
+theorem map_proj_nhds (x : TotalSpace F E) : map (π F E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
(trivializationAt F E x.proj).mem_source.2 <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhds
@@ -243,14 +240,14 @@ variable (E)
#print FiberBundle.continuous_proj /-
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
-theorem continuous_proj : Continuous (π E) :=
+theorem continuous_proj : Continuous (π F E) :=
continuous_iff_continuousAt.2 fun x => (map_proj_nhds F x).le
#align fiber_bundle.continuous_proj FiberBundle.continuous_proj
-/
#print FiberBundle.isOpenMap_proj /-
/-- The projection from a fiber bundle to its base is an open map. -/
-theorem isOpenMap_proj : IsOpenMap (π E) :=
+theorem isOpenMap_proj : IsOpenMap (π F E) :=
IsOpenMap.of_nhds_le fun x => (map_proj_nhds F x).ge
#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_proj
-/
@@ -258,7 +255,7 @@ theorem isOpenMap_proj : IsOpenMap (π E) :=
#print FiberBundle.surjective_proj /-
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
-theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
+theorem surjective_proj [Nonempty F] : Function.Surjective (π F E) := fun b =>
let ⟨p, _, hpb⟩ :=
(trivializationAt F E b).proj_surjOn_baseSet (mem_baseSet_trivializationAt F E b)
⟨p, hpb⟩
@@ -268,14 +265,14 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
#print FiberBundle.quotientMap_proj /-
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
-theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
+theorem quotientMap_proj [Nonempty F] : QuotientMap (π F E) :=
(isOpenMap_proj F E).to_quotientMap (continuous_proj F E) (surjective_proj F E)
#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_proj
-/
#print FiberBundle.continuous_totalSpaceMk /-
-theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
- (totalSpaceMk_inducing F E x).Continuous
+theorem continuous_totalSpaceMk (x : B) : Continuous (@TotalSpace.mk B F E x) :=
+ (totalSpace_mk_inducing F E x).Continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
-/
@@ -283,7 +280,7 @@ variable {E F}
#print FiberBundle.mem_trivializationAt_proj_source /-
@[simp, mfld_simps]
-theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
+theorem mem_trivializationAt_proj_source {x : TotalSpace F E} :
x ∈ (trivializationAt F E x.proj).source :=
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
@@ -291,7 +288,7 @@ theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
#print FiberBundle.trivializationAt_proj_fst /-
@[simp, mfld_simps]
-theorem trivializationAt_proj_fst {x : TotalSpace E} :
+theorem trivializationAt_proj_fst {x : TotalSpace F E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fst
@@ -303,7 +300,7 @@ open Trivialization
#print FiberBundle.continuousWithinAt_totalSpace /-
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
-theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
+theorem continuousWithinAt_totalSpace (f : X → TotalSpace F E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
ContinuousWithinAt (fun x => (f x).proj) s x₀ ∧
ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ :=
@@ -327,7 +324,7 @@ theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀
#print FiberBundle.continuousAt_totalSpace /-
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
-theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
+theorem continuousAt_totalSpace (f : X → TotalSpace F E) {x₀ : X} :
ContinuousAt f x₀ ↔
ContinuousAt (fun x => (f x).proj) x₀ ∧
ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
@@ -344,16 +341,16 @@ variable (F E)
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
[OrderTopology B] [FiberBundle F E] (a b : B) :
- ∃ e : Trivialization F (π E), Icc a b ⊆ e.baseSet := by
+ ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by
classical
- obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π E), a ∈ ea.baseSet :=
+ obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π F E), a ∈ ea.baseSet :=
⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
cases' le_or_lt a b with hab hab <;>
[skip; exact ⟨ea, by simp [*]⟩]
/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
- set s : Set B := {x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet}
+ set s : Set B := {x ∈ Icc a b | ∃ e : Trivialization F (π F E), Icc a x ⊆ e.baseSet}
have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
have sne : s.nonempty := ⟨a, ha⟩
have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
@@ -361,13 +358,13 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
set c := Sup s
have hsc : IsLUB s c := isLUB_csSup sne sbd
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
- obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
+ obtain ⟨-, ec : Trivialization F (π F E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
by
cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
refine' ⟨hc, _⟩
/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
- obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π E), c ∈ ec.baseSet :=
+ obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π F E), c ∈ ec.baseSet :=
⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩
obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
(mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
@@ -382,7 +379,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
cases' hc.2.eq_or_lt with heq hlt
· exact ⟨ec, HEq ▸ hec⟩
- rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π E), Icc a d ⊆ e.baseSet
+ rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
· exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
`d ∈ (c, b]`. -/
@@ -394,7 +391,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
· /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
a trivialization over `[a, d]`. -/
- obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π E), d ∈ ed.baseSet :=
+ obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π F E), d ∈ ed.baseSet :=
⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩
refine'
⟨d, hdcb,
@@ -473,31 +470,25 @@ def Fiber (x : B) :=
#align fiber_bundle_core.fiber FiberBundleCore.Fiber
-/
-section FiberInstances
-
-attribute [local reducible] fiber
-
#print FiberBundleCore.topologicalSpaceFiber /-
-instance topologicalSpaceFiber (x : B) : TopologicalSpace (Z.Fiber x) := by infer_instance
+instance topologicalSpaceFiber (x : B) : TopologicalSpace (Z.Fiber x) :=
+ ‹TopologicalSpace F›
#align fiber_bundle_core.topological_space_fiber FiberBundleCore.topologicalSpaceFiber
-/
-end FiberInstances
-
#print FiberBundleCore.TotalSpace /-
/-- The total space of the fiber bundle, as a convenience function for dot notation.
-It is by definition equal to `bundle.total_space Z.fiber`, a.k.a. `Σ x, Z.fiber x` but with a
-different name for typeclass inference. -/
+It is by definition equal to `bundle.total_space Z.fiber` -/
@[nolint unused_arguments, reducible]
def TotalSpace :=
- Bundle.TotalSpace Z.Fiber
+ Bundle.TotalSpace F Z.Fiber
#align fiber_bundle_core.total_space FiberBundleCore.TotalSpace
-/
#print FiberBundleCore.proj /-
/-- The projection from the total space of a fiber bundle core, on its base. -/
@[reducible, simp, mfld_simps]
-def proj : Z.TotalSpace → B :=
+def proj : Z.TotalSpaceₓ → B :=
Bundle.TotalSpace.proj
#align fiber_bundle_core.proj FiberBundleCore.proj
-/
@@ -552,7 +543,7 @@ The local trivialization will ultimately be a local homeomorphism. For now, we o
local equiv version, denoted with a prime. In further developments, avoid this auxiliary version,
and use `Z.local_triv` instead.
-/
-def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
+def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpaceₓ (B × F)
where
source := Z.proj ⁻¹' Z.baseSet i
target := Z.baseSet i ×ˢ univ
@@ -581,7 +572,7 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
variable (i : ι)
#print FiberBundleCore.mem_localTrivAsLocalEquiv_source /-
-theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
+theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpaceₓ) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
@@ -595,7 +586,7 @@ theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
-/
#print FiberBundleCore.localTrivAsLocalEquiv_apply /-
-theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
+theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpaceₓ) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
@@ -621,7 +612,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
#print FiberBundleCore.toTopologicalSpace /-
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
-instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
+instance toTopologicalSpace : TopologicalSpace Z.TotalSpaceₓ :=
TopologicalSpace.generateFrom <|
⋃ (i : ι) (s : Set (B × F)) (s_open : IsOpen s), {(Z i).source ∩ Z i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
@@ -692,7 +683,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
#print FiberBundleCore.localTrivAt /-
/-- Preferred local trivialization of a fiber bundle constructed from core, at a given point, as
a bundle trivialization -/
-def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
+def localTrivAt (b : B) : Trivialization F (π F Z.Fiber) :=
Z.localTriv (Z.indexAt b)
#align fiber_bundle_core.local_triv_at FiberBundleCore.localTrivAt
-/
@@ -711,7 +702,7 @@ zero section of a vector bundle. Another example (not yet defined) would be the
section of the endomorphism bundle of a vector bundle. -/
theorem continuous_const_section (v : F)
(h : ∀ i j, ∀ x ∈ Z.baseSet i ∩ Z.baseSet j, Z.coordChange i j x v = v) :
- Continuous (show B → Z.TotalSpace from fun x => ⟨x, v⟩) :=
+ Continuous (show B → Z.TotalSpaceₓ from fun x => ⟨x, v⟩) :=
by
apply continuous_iff_continuousAt.2 fun x => _
have A : Z.base_set (Z.index_at x) ∈ 𝓝 x :=
@@ -767,7 +758,7 @@ theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
#print FiberBundleCore.localTriv_apply /-
@[simp, mfld_simps]
-theorem localTriv_apply (p : Z.TotalSpace) :
+theorem localTriv_apply (p : Z.TotalSpaceₓ) :
(Z.localTriv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_apply
@@ -775,7 +766,7 @@ theorem localTriv_apply (p : Z.TotalSpace) :
#print FiberBundleCore.localTrivAt_apply /-
@[simp, mfld_simps]
-theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
+theorem localTrivAt_apply (p : Z.TotalSpaceₓ) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
rw [local_triv_at, local_triv_apply, coord_change_self]; exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
-/
@@ -789,7 +780,7 @@ theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ =
#print FiberBundleCore.mem_localTriv_source /-
@[simp, mfld_simps]
-theorem mem_localTriv_source (p : Z.TotalSpace) :
+theorem mem_localTriv_source (p : Z.TotalSpaceₓ) :
p ∈ (Z.localTriv i).source ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_source
@@ -797,7 +788,7 @@ theorem mem_localTriv_source (p : Z.TotalSpace) :
#print FiberBundleCore.mem_localTrivAt_source /-
@[simp, mfld_simps]
-theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
+theorem mem_localTrivAt_source (p : Z.TotalSpaceₓ) (b : B) :
p ∈ (Z.localTrivAt b).source ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
@@ -805,7 +796,7 @@ theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
#print FiberBundleCore.mem_source_at /-
@[simp, mfld_simps]
-theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
+theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpaceₓ) ∈ (Z.localTrivAt b).source := by
rw [local_triv_at, mem_local_triv_source]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
-/
@@ -845,11 +836,11 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
/-- The inclusion of a fiber into the total space is a continuous map. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
- Continuous (totalSpaceMk b : Z.Fiber b → Bundle.TotalSpace Z.Fiber) :=
+ Continuous (TotalSpace.mk b : Z.Fiber b → Z.TotalSpaceₓ) :=
by
rw [continuous_iff_le_induced, FiberBundleCore.toTopologicalSpace]
apply le_induced_generateFrom
- simp only [total_space_mk, mem_Union, mem_singleton_iff, local_triv_as_local_equiv_source,
+ simp only [mem_Union, mem_singleton_iff, local_triv_as_local_equiv_source,
local_triv_as_local_equiv_coe]
rintro s ⟨i, t, ht, rfl⟩
rw [← (Z.local_triv i).source_inter_preimage_target_inter t, preimage_inter, ← preimage_comp,
@@ -877,7 +868,7 @@ theorem continuous_totalSpaceMk (b : B) :
/-- A fiber bundle constructed from core is indeed a fiber bundle. -/
instance fiberBundle : FiberBundle F Z.Fiber
where
- totalSpaceMk_inducing b :=
+ totalSpaceₓ_mk_inducing b :=
⟨by
refine' le_antisymm _ fun s h => _
· rw [← continuous_iff_le_induced]
@@ -889,7 +880,6 @@ instance fiberBundle : FiberBundle F Z.Fiber
(Z.local_triv_at b).continuous_toFun _ ((Z.local_triv_at b).open_baseSet.Prod h),
_⟩
rw [preimage_inter, ← preimage_comp, Function.comp]
- simp only [total_space_mk]
refine' ext_iff.mpr fun a => ⟨fun ha => _, fun ha => ⟨Z.mem_base_set_at b, _⟩⟩
· simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha
exact ha.2.2
@@ -932,25 +922,25 @@ topology in such a way that there is a fiber bundle structure for which the loca
are also local homeomorphism and hence local trivializations. -/
@[nolint has_nonempty_instance]
structure FiberPrebundle where
- pretrivializationAtlas : Set (Pretrivialization F (π E))
- pretrivializationAt : B → Pretrivialization F (π E)
+ pretrivializationAtlas : Set (Pretrivialization F (π F E))
+ pretrivializationAt : B → Pretrivialization F (π F E)
mem_base_pretrivializationAt : ∀ x : B, x ∈ (pretrivialization_at x).baseSet
pretrivialization_mem_atlas : ∀ x : B, pretrivialization_at x ∈ pretrivialization_atlas
continuous_triv_change :
∀ (e) (_ : e ∈ pretrivialization_atlas) (e') (_ : e' ∈ pretrivialization_atlas),
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
- totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ totalSpaceMk b)
+ totalSpaceₓ_mk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ TotalSpace.mk b)
#align fiber_prebundle FiberPrebundle
-/
namespace FiberPrebundle
-variable {F E} (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
+variable {F E} (a : FiberPrebundle F E) {e : Pretrivialization F (π F E)}
#print FiberPrebundle.totalSpaceTopology /-
/-- Topology on the total space that will make the prebundle into a bundle. -/
-def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
- ⨆ (e : Pretrivialization F (π E)) (he : e ∈ a.pretrivializationAtlas),
+def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace F E) :=
+ ⨆ (e : Pretrivialization F (π F E)) (he : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm Subtype.topologicalSpace
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
-/
@@ -967,7 +957,7 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
-/
#print FiberPrebundle.isOpen_source /-
-theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTopology] e.source :=
+theorem isOpen_source (e : Pretrivialization F (π F E)) : is_open[a.totalSpaceTopology] e.source :=
by
letI := a.total_space_topology
refine' is_open_supr_iff.mpr fun e' => _
@@ -980,7 +970,7 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTop
-/
#print FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter /-
-theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
+theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π F E))
(he' : e' ∈ a.pretrivializationAtlas) :
IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) :=
by
@@ -996,7 +986,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
#print FiberPrebundle.trivializationOfMemPretrivializationAtlas /-
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
- @Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
+ @Trivialization B F _ _ _ a.totalSpaceTopology (π F E) :=
{ e with
open_source := a.isOpen_source e
continuous_toFun := by
@@ -1021,7 +1011,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
#print FiberPrebundle.mem_pretrivializationAt_source /-
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
- totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
+ TotalSpace.mk b x ∈ (a.pretrivializationAt b).source :=
by
simp only [(a.pretrivialization_at b).source_eq, mem_preimage, total_space.proj]
exact a.mem_base_pretrivialization_at b
@@ -1031,7 +1021,7 @@ theorem mem_pretrivializationAt_source (b : B) (x : E b) :
#print FiberPrebundle.totalSpaceMk_preimage_source /-
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
- totalSpaceMk b ⁻¹' (a.pretrivializationAt b).source = univ :=
+ TotalSpace.mk b ⁻¹' (a.pretrivializationAt b).source = univ :=
by
apply eq_univ_of_univ_subset
rw [(a.pretrivialization_at b).source_eq, ← preimage_comp, Function.comp]
@@ -1043,7 +1033,8 @@ theorem totalSpaceMk_preimage_source (b : B) :
#print FiberPrebundle.continuous_totalSpaceMk /-
@[continuity]
-theorem continuous_totalSpaceMk (b : B) : @Continuous _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
+theorem continuous_totalSpaceMk (b : B) :
+ @Continuous _ _ _ a.totalSpaceTopology (TotalSpace.mk b) :=
by
letI := a.total_space_topology
let e := a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas b)
@@ -1055,8 +1046,8 @@ theorem continuous_totalSpaceMk (b : B) : @Continuous _ _ _ a.totalSpaceTopology
#print FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp /-
theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
- (h : Inducing (a.pretrivializationAt b ∘ totalSpaceMk b)) :
- @Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
+ (h : Inducing (a.pretrivializationAt b ∘ TotalSpace.mk b)) :
+ @Inducing _ _ _ a.totalSpaceTopology (TotalSpace.mk b) :=
by
letI := a.total_space_topology
rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
@@ -1080,7 +1071,8 @@ establishes that for the topology constructed on the sigma-type using
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
where
- totalSpaceMk_inducing b := a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceMk_inducing b)
+ totalSpaceₓ_mk_inducing b :=
+ a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceₓ_mk_inducing b)
trivializationAtlas :=
{e |
∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
@@ -1093,7 +1085,7 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
-/
#print FiberPrebundle.continuous_proj /-
-theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
+theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π F E) :=
by
letI := a.total_space_topology
letI := a.to_fiber_bundle
@@ -1104,19 +1096,19 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
#print FiberPrebundle.continuousOn_of_comp_right /-
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
-continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
+continuity of a function `total_space F E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
-theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace E → X}
+theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace F E → X}
{s : Set B} (hs : IsOpen s)
(hf :
∀ b ∈ s,
ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
- @ContinuousOn _ _ a.totalSpaceTopology _ f (π E ⁻¹' s) :=
+ @ContinuousOn _ _ a.totalSpaceTopology _ f (π F E ⁻¹' s) :=
by
letI := a.total_space_topology
intro z hz
- let e : Trivialization F (π E) :=
+ let e : Trivialization F (π F E) :=
a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas z.proj)
refine'
(e.continuous_at_of_comp_right _
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -191,11 +191,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
@@ -231,24 +231,31 @@ namespace FiberBundle
variable (F) {E} [FiberBundle F E]
+#print FiberBundle.map_proj_nhds /-
theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
(trivializationAt F E x.proj).mem_source.2 <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhds
+-/
variable (E)
+#print FiberBundle.continuous_proj /-
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
theorem continuous_proj : Continuous (π E) :=
continuous_iff_continuousAt.2 fun x => (map_proj_nhds F x).le
#align fiber_bundle.continuous_proj FiberBundle.continuous_proj
+-/
+#print FiberBundle.isOpenMap_proj /-
/-- The projection from a fiber bundle to its base is an open map. -/
theorem isOpenMap_proj : IsOpenMap (π E) :=
IsOpenMap.of_nhds_le fun x => (map_proj_nhds F x).ge
#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_proj
+-/
+#print FiberBundle.surjective_proj /-
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
@@ -256,35 +263,45 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
(trivializationAt F E b).proj_surjOn_baseSet (mem_baseSet_trivializationAt F E b)
⟨p, hpb⟩
#align fiber_bundle.surjective_proj FiberBundle.surjective_proj
+-/
+#print FiberBundle.quotientMap_proj /-
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
(isOpenMap_proj F E).to_quotientMap (continuous_proj F E) (surjective_proj F E)
#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_proj
+-/
+#print FiberBundle.continuous_totalSpaceMk /-
theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
(totalSpaceMk_inducing F E x).Continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
+-/
variable {E F}
+#print FiberBundle.mem_trivializationAt_proj_source /-
@[simp, mfld_simps]
theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
x ∈ (trivializationAt F E x.proj).source :=
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
+-/
+#print FiberBundle.trivializationAt_proj_fst /-
@[simp, mfld_simps]
theorem trivializationAt_proj_fst {x : TotalSpace E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fst
+-/
variable (F)
open Trivialization
+#print FiberBundle.continuousWithinAt_totalSpace /-
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
@@ -306,7 +323,9 @@ theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀
· apply mem_trivialization_at_proj_source
· rwa [source_eq, preimage_preimage]
#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
+-/
+#print FiberBundle.continuousAt_totalSpace /-
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt f x₀ ↔
@@ -314,11 +333,13 @@ theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
by simp_rw [← continuousWithinAt_univ]; exact continuous_within_at_total_space F f
#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpace
+-/
end FiberBundle
variable (F E)
+#print FiberBundle.exists_trivialization_Icc_subset /-
/-- If `E` is a fiber bundle over a conditionally complete linear order,
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
@@ -387,6 +408,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
+-/
end FiberBundle
@@ -426,8 +448,6 @@ namespace FiberBundleCore
variable [TopologicalSpace B] [TopologicalSpace F] (Z : FiberBundleCore ι B F)
-include Z
-
#print FiberBundleCore.Index /-
/-- The index set of a fiber bundle core, as a convenience function for dot notation -/
@[nolint unused_arguments has_nonempty_instance]
@@ -484,6 +504,7 @@ def proj : Z.TotalSpace → B :=
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FiberBundleCore.trivChange /-
/-- Local homeomorphism version of the trivialization change. -/
def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
where
@@ -512,11 +533,14 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
simpa [inter_comm] using
ContinuousOn.prod continuous_fst.continuous_on (Z.continuous_on_coord_change j i)
#align fiber_bundle_core.triv_change FiberBundleCore.trivChange
+-/
+#print FiberBundleCore.mem_trivChange_source /-
@[simp, mfld_simps]
theorem mem_trivChange_source (i j : ι) (p : B × F) :
p ∈ (Z.trivChange i j).source ↔ p.1 ∈ Z.baseSet i ∩ Z.baseSet j := by erw [mem_prod]; simp
#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_source
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
#print FiberBundleCore.localTrivAsLocalEquiv /-
@@ -556,21 +580,28 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
variable (i : ι)
+#print FiberBundleCore.mem_localTrivAsLocalEquiv_source /-
theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
+-/
+#print FiberBundleCore.mem_localTrivAsLocalEquiv_target /-
theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i := by erw [mem_prod];
simp only [and_true_iff, mem_univ]
#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_apply /-
theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_trans /-
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
theorem localTrivAsLocalEquiv_trans (i j : ι) :
(Z.localTrivAsLocalEquiv i).symm.trans (Z.localTrivAsLocalEquiv j) ≈
@@ -585,6 +616,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
LocalEquiv.coe_trans, total_space.proj] at hx ⊢
simp only [Z.coord_change_comp, hx, mem_inter_iff, and_self_iff, mem_base_set_at]
#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
+-/
#print FiberBundleCore.toTopologicalSpace /-
/-- Topological structure on the total space of a fiber bundle created from core, designed so
@@ -598,6 +630,7 @@ instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
variable (b : B) (a : F)
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FiberBundleCore.open_source' /-
theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
by
apply TopologicalSpace.GenerateOpen.basic
@@ -607,6 +640,7 @@ theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
simp only [local_triv_as_local_equiv_apply, prod_mk_mem_set_prod_eq, mem_inter_iff, and_self_iff,
mem_local_triv_as_local_equiv_source, and_true_iff, mem_univ, mem_preimage]
#align fiber_bundle_core.open_source' FiberBundleCore.open_source'
+-/
#print FiberBundleCore.localTriv /-
/-- Extended version of the local trivialization of a fiber bundle constructed from core,
@@ -663,11 +697,14 @@ def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
#align fiber_bundle_core.local_triv_at FiberBundleCore.localTrivAt
-/
+#print FiberBundleCore.localTrivAt_def /-
@[simp, mfld_simps]
theorem localTrivAt_def (b : B) : Z.localTriv (Z.indexAt b) = Z.localTrivAt b :=
rfl
#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_def
+-/
+#print FiberBundleCore.continuous_const_section /-
/-- If an element of `F` is invariant under all coordinate changes, then one can define a
corresponding section of the fiber bundle, which is continuous. This applies in particular to the
zero section of a vector bundle. Another example (not yet defined) would be the identity
@@ -688,90 +725,121 @@ theorem continuous_const_section (v : F)
simp only [h, hy, mem_base_set_at, mfld_simps]
· exact A
#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_section
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_coe /-
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coe
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_source /-
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_source :
(Z.localTrivAsLocalEquiv i).source = (Z.localTriv i).source :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_source
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_target /-
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_target :
(Z.localTrivAsLocalEquiv i).target = (Z.localTriv i).target :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_target
+-/
+#print FiberBundleCore.localTrivAsLocalEquiv_symm /-
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_symm :
(Z.localTrivAsLocalEquiv i).symm = (Z.localTriv i).toLocalEquiv.symm :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symm
+-/
+#print FiberBundleCore.baseSet_at /-
@[simp, mfld_simps]
theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
rfl
#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_at
+-/
+#print FiberBundleCore.localTriv_apply /-
@[simp, mfld_simps]
theorem localTriv_apply (p : Z.TotalSpace) :
(Z.localTriv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_apply
+-/
+#print FiberBundleCore.localTrivAt_apply /-
@[simp, mfld_simps]
theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
rw [local_triv_at, local_triv_apply, coord_change_self]; exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
+-/
+#print FiberBundleCore.localTrivAt_apply_mk /-
@[simp, mfld_simps]
theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ = ⟨b, a⟩ :=
Z.localTrivAt_apply _
#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mk
+-/
+#print FiberBundleCore.mem_localTriv_source /-
@[simp, mfld_simps]
theorem mem_localTriv_source (p : Z.TotalSpace) :
p ∈ (Z.localTriv i).source ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_source
+-/
+#print FiberBundleCore.mem_localTrivAt_source /-
@[simp, mfld_simps]
theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
p ∈ (Z.localTrivAt b).source ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
+-/
+#print FiberBundleCore.mem_source_at /-
@[simp, mfld_simps]
theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
rw [local_triv_at, mem_local_triv_source]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
+-/
+#print FiberBundleCore.mem_localTriv_target /-
@[simp, mfld_simps]
theorem mem_localTriv_target (p : B × F) :
p ∈ (Z.localTriv i).target ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_target
+-/
+#print FiberBundleCore.mem_localTrivAt_target /-
@[simp, mfld_simps]
theorem mem_localTrivAt_target (p : B × F) (b : B) :
p ∈ (Z.localTrivAt b).target ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_target
+-/
+#print FiberBundleCore.localTriv_symm_apply /-
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
(Z.localTriv i).toLocalHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_apply
+-/
+#print FiberBundleCore.mem_localTrivAt_baseSet /-
@[simp, mfld_simps]
theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
rw [local_triv_at, ← base_set_at]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
+-/
#print FiberBundleCore.continuous_totalSpaceMk /-
/-- The inclusion of a fiber into the total space is a continuous map. -/
@@ -834,15 +902,19 @@ instance fiberBundle : FiberBundle F Z.Fiber
#align fiber_bundle_core.fiber_bundle FiberBundleCore.fiberBundle
-/
+#print FiberBundleCore.continuous_proj /-
/-- The projection on the base of a fiber bundle created from core is continuous -/
theorem continuous_proj : Continuous Z.proj :=
continuous_proj F Z.Fiber
#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_proj
+-/
+#print FiberBundleCore.isOpenMap_proj /-
/-- The projection on the base of a fiber bundle created from core is an open map -/
theorem isOpenMap_proj : IsOpenMap Z.proj :=
isOpenMap_proj F Z.Fiber
#align fiber_bundle_core.is_open_map_proj FiberBundleCore.isOpenMap_proj
+-/
end FiberBundleCore
@@ -883,6 +955,7 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
-/
+#print FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas /-
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
by
@@ -891,7 +964,9 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
id fun U h => preimage_nhdsWithin_coinduced' H e.open_target (le_def.1 (nhds_mono _) U h)
exact le_iSup₂ e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
+-/
+#print FiberPrebundle.isOpen_source /-
theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTopology] e.source :=
by
letI := a.total_space_topology
@@ -902,7 +977,9 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTop
Subtype.preimage_coe_eq_preimage_coe_iff, e'.target_eq, prod_inter_prod, inter_univ,
Pretrivialization.preimage_symm_proj_inter]
#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_source
+-/
+#print FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter /-
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
(he' : e' ∈ a.pretrivializationAtlas) :
IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) :=
@@ -914,6 +991,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
rw [inter_comm, hu2]
exact hu1.inter e'.open_target
#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter
+-/
#print FiberPrebundle.trivializationOfMemPretrivializationAtlas /-
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
@@ -941,13 +1019,16 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
-/
+#print FiberPrebundle.mem_pretrivializationAt_source /-
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
by
simp only [(a.pretrivialization_at b).source_eq, mem_preimage, total_space.proj]
exact a.mem_base_pretrivialization_at b
#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_source
+-/
+#print FiberPrebundle.totalSpaceMk_preimage_source /-
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
totalSpaceMk b ⁻¹' (a.pretrivializationAt b).source = univ :=
@@ -958,7 +1039,9 @@ theorem totalSpaceMk_preimage_source (b : B) :
rw [preimage_const_of_mem _]
exact a.mem_base_pretrivialization_at b
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
+-/
+#print FiberPrebundle.continuous_totalSpaceMk /-
@[continuity]
theorem continuous_totalSpaceMk (b : B) : @Continuous _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
by
@@ -968,7 +1051,9 @@ theorem continuous_totalSpaceMk (b : B) : @Continuous _ _ _ a.totalSpaceTopology
(a.total_space_mk_preimage_source b)]
exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.total_space_mk_inducing b).induced).1
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
+-/
+#print FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp /-
theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
(h : Inducing (a.pretrivializationAt b ∘ totalSpaceMk b)) :
@Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
@@ -984,6 +1069,7 @@ theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
h
exact (a.continuous_total_space_mk b).codRestrict (a.mem_trivialization_at_source b)
#align fiber_prebundle.inducing_total_space_mk_of_inducing_comp FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp
+-/
#print FiberPrebundle.toFiberBundle /-
/-- Make a `fiber_bundle` from a `fiber_prebundle`. Concretely this means
@@ -1006,14 +1092,17 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
-/
+#print FiberPrebundle.continuous_proj /-
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
letI := a.total_space_topology
letI := a.to_fiber_bundle
exact continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FiberPrebundle.continuousOn_of_comp_right /-
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
@@ -1040,6 +1129,7 @@ theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalS
· rw [e.mem_source]
exact a.mem_base_pretrivialization_at z.proj
#align fiber_prebundle.continuous_on_of_comp_right FiberPrebundle.continuousOn_of_comp_right
+-/
end FiberPrebundle
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -853,7 +853,7 @@ variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
#print FiberPrebundle /-
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the local equivalences
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -191,11 +191,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
@@ -325,68 +325,67 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
[OrderTopology B] [FiberBundle F E] (a b : B) :
∃ e : Trivialization F (π E), Icc a b ⊆ e.baseSet := by
classical
- obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π E), a ∈ ea.baseSet :=
- ⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
- -- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
- cases' le_or_lt a b with hab hab <;>
- [skip; exact ⟨ea, by simp [*]⟩]
- /- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
- We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
- set s : Set B := { x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet }
- have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
- have sne : s.nonempty := ⟨a, ha⟩
- have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
- have sbd : BddAbove s := ⟨b, hsb⟩
- set c := Sup s
- have hsc : IsLUB s c := isLUB_csSup sne sbd
- have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
- obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
- by
- cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
- refine' ⟨hc, _⟩
- /- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
- of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
- obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π E), c ∈ ec.baseSet :=
- ⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩
- obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
- (mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
- (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set hc)
- /- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
- `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
- obtain ⟨d, ⟨hdab, ead, had⟩, hd⟩ : ∃ d ∈ s, d ∈ Ioc c' c := hsc.exists_between hc'.2
- refine' ⟨ead.piecewise_le ec d (had ⟨hdab.1, le_rfl⟩) (hc'e hd), subset_ite.2 _⟩
- refine'
- ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
- /- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
- done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
- `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
- cases' hc.2.eq_or_lt with heq hlt
- · exact ⟨ec, HEq ▸ hec⟩
- rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π E), Icc a d ⊆ e.baseSet
- · exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
- /- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
- `d ∈ (c, b]`. -/
- obtain ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, Ico c d ⊆ ec.base_set :=
- (mem_nhdsWithin_Ici_iff_exists_mem_Ioc_Ico_subset hlt).1
- (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set (hec ⟨hc.1, le_rfl⟩))
- have had : Ico a d ⊆ ec.base_set := Ico_subset_Icc_union_Ico.trans (union_subset hec hd)
- by_cases he : Disjoint (Iio d) (Ioi c)
- · /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
- Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
- a trivialization over `[a, d]`. -/
- obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π E), d ∈ ed.baseSet :=
- ⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩
- refine'
- ⟨d, hdcb,
- (ec.restr_open (Iio d) isOpen_Iio).disjointUnion (ed.restr_open (Ioi c) isOpen_Ioi)
- (he.mono (inter_subset_right _ _) (inter_subset_right _ _)),
- fun x hx => _⟩
- rcases hx.2.eq_or_lt with (rfl | hxd)
- exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
- · /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
- `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
- rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
- exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
+ obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π E), a ∈ ea.baseSet :=
+ ⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
+ -- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
+ cases' le_or_lt a b with hab hab <;>
+ [skip; exact ⟨ea, by simp [*]⟩]
+ /- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
+ We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
+ set s : Set B := {x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet}
+ have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
+ have sne : s.nonempty := ⟨a, ha⟩
+ have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
+ have sbd : BddAbove s := ⟨b, hsb⟩
+ set c := Sup s
+ have hsc : IsLUB s c := isLUB_csSup sne sbd
+ have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
+ obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
+ by
+ cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
+ refine' ⟨hc, _⟩
+ /- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
+ of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
+ obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π E), c ∈ ec.baseSet :=
+ ⟨trivialization_at F E c, mem_base_set_trivialization_at F E c⟩
+ obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.base_set :=
+ (mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
+ (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set hc)
+ /- Since `c' < c = Sup s`, there exists `d ∈ s ∩ (c', c]`. Let `ead` be a trivialization of
+ `proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
+ obtain ⟨d, ⟨hdab, ead, had⟩, hd⟩ : ∃ d ∈ s, d ∈ Ioc c' c := hsc.exists_between hc'.2
+ refine' ⟨ead.piecewise_le ec d (had ⟨hdab.1, le_rfl⟩) (hc'e hd), subset_ite.2 _⟩
+ refine' ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
+ /- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
+ done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
+ `d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
+ cases' hc.2.eq_or_lt with heq hlt
+ · exact ⟨ec, HEq ▸ hec⟩
+ rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π E), Icc a d ⊆ e.baseSet
+ · exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
+ /- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
+ `d ∈ (c, b]`. -/
+ obtain ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, Ico c d ⊆ ec.base_set :=
+ (mem_nhdsWithin_Ici_iff_exists_mem_Ioc_Ico_subset hlt).1
+ (mem_nhdsWithin_of_mem_nhds <| IsOpen.mem_nhds ec.open_base_set (hec ⟨hc.1, le_rfl⟩))
+ have had : Ico a d ⊆ ec.base_set := Ico_subset_Icc_union_Ico.trans (union_subset hec hd)
+ by_cases he : Disjoint (Iio d) (Ioi c)
+ · /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
+ Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
+ a trivialization over `[a, d]`. -/
+ obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π E), d ∈ ed.baseSet :=
+ ⟨trivialization_at F E d, mem_base_set_trivialization_at F E d⟩
+ refine'
+ ⟨d, hdcb,
+ (ec.restr_open (Iio d) isOpen_Iio).disjointUnion (ed.restr_open (Ioi c) isOpen_Ioi)
+ (he.mono (inter_subset_right _ _) (inter_subset_right _ _)),
+ fun x hx => _⟩
+ rcases hx.2.eq_or_lt with (rfl | hxd)
+ exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
+ · /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
+ `[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
+ rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
+ exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
end FiberBundle
@@ -997,9 +996,9 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
where
totalSpaceMk_inducing b := a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceMk_inducing b)
trivializationAtlas :=
- { e |
+ {e |
∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
- e = a.trivializationOfMemPretrivializationAtlas he₀ }
+ e = a.trivializationOfMemPretrivializationAtlas he₀}
trivializationAt x :=
a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas x)
mem_baseSet_trivializationAt := a.mem_base_pretrivializationAt
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -179,8 +179,8 @@ open TopologicalSpace Filter Set Bundle
open scoped Topology Classical Bundle
-attribute [mfld_simps]
- total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul total_space.mk_cast
+attribute [mfld_simps] total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul
+ total_space.mk_cast
/-! ### General definition of fiber bundles -/
@@ -329,7 +329,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
cases' le_or_lt a b with hab hab <;>
- [skip;exact ⟨ea, by simp [*]⟩]
+ [skip; exact ⟨ea, by simp [*]⟩]
/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
set s : Set B := { x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet }
@@ -382,10 +382,10 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
(he.mono (inter_subset_right _ _) (inter_subset_right _ _)),
fun x hx => _⟩
rcases hx.2.eq_or_lt with (rfl | hxd)
- exacts[Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
+ exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
· /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
`[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
- rw [disjoint_left] at he; push_neg at he; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
+ rw [disjoint_left] at he ; push_neg at he ; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
@@ -406,7 +406,7 @@ Trivialization changes from `i` to `j` are given by continuous maps `coord_chang
space of continuous maps on `F`. -/
@[nolint has_nonempty_instance]
structure FiberBundleCore (ι : Type _) (B : Type _) [TopologicalSpace B] (F : Type _)
- [TopologicalSpace F] where
+ [TopologicalSpace F] where
baseSet : ι → Set B
isOpen_baseSet : ∀ i, IsOpen (base_set i)
indexAt : B → ι
@@ -496,13 +496,13 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
map_target' p hp := by simpa using hp
left_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx.1
· simp [hx]
right_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, mem_inter_iff, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx.2
· simp [hx]
@@ -541,14 +541,14 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
simpa only [Set.mem_preimage, and_true_iff, Set.mem_univ, Set.mem_prod] using hp
left_inv' := by
rintro ⟨x, v⟩ hx
- change x ∈ Z.base_set i at hx
+ change x ∈ Z.base_set i at hx
dsimp only
rw [Z.coord_change_comp, Z.coord_change_self]
· exact Z.mem_base_set_at _
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
right_inv' := by
rintro ⟨x, v⟩ hx
- simp only [prod_mk_mem_set_prod_eq, and_true_iff, mem_univ] at hx
+ simp only [prod_mk_mem_set_prod_eq, and_true_iff, mem_univ] at hx
rw [Z.coord_change_comp, Z.coord_change_self]
· exact hx
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
@@ -583,7 +583,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
simp only [triv_change, local_triv_as_local_equiv, LocalEquiv.symm, true_and_iff,
Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, LocalEquiv.trans_source, mem_inter_iff,
and_true_iff, mem_preimage, proj, mem_univ, LocalEquiv.coe_mk, eq_self_iff_true,
- LocalEquiv.coe_trans, total_space.proj] at hx⊢
+ LocalEquiv.coe_trans, total_space.proj] at hx ⊢
simp only [Z.coord_change_comp, hx, mem_inter_iff, and_self_iff, mem_base_set_at]
#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
@@ -631,7 +631,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
by
apply continuousOn_open_of_generateFrom ((Z.is_open_base_set i).Prod isOpen_univ)
intro t ht
- simp only [exists_prop, mem_Union, mem_singleton_iff] at ht
+ simp only [exists_prop, mem_Union, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ :
∃ j s,
IsOpen s ∧
@@ -824,7 +824,7 @@ instance fiberBundle : FiberBundle F Z.Fiber
rw [preimage_inter, ← preimage_comp, Function.comp]
simp only [total_space_mk]
refine' ext_iff.mpr fun a => ⟨fun ha => _, fun ha => ⟨Z.mem_base_set_at b, _⟩⟩
- · simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha
+ · simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk] at ha
exact ha.2.2
· simp only [mem_prod, mem_preimage, mem_inter_iff, local_triv_at_apply_mk]
exact ⟨Z.mem_base_set_at b, ha⟩⟩
@@ -932,7 +932,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
rw [isOpen_coinduced, isOpen_induced_iff]
obtain ⟨u, hu1, hu2⟩ := continuous_on_iff'.mp (a.continuous_triv_change _ he _ he') s hs
have hu3 := congr_arg (fun s => (fun x : e'.target => (x : B × F)) ⁻¹' s) hu2
- simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
+ simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
refine'
⟨u ∩ e'.to_local_equiv.target ∩ e'.to_local_equiv.symm ⁻¹' e.source, _, by
simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]; rfl⟩
@@ -975,7 +975,7 @@ theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
@Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
by
letI := a.total_space_topology
- rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
+ rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
apply Inducing.of_codRestrict (a.mem_trivialization_at_source b)
refine'
inducing_of_inducing_compose _
@@ -998,7 +998,7 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
totalSpaceMk_inducing b := a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceMk_inducing b)
trivializationAtlas :=
{ e |
- ∃ (e₀ : _)(he₀ : e₀ ∈ a.pretrivializationAtlas),
+ ∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
e = a.trivializationOfMemPretrivializationAtlas he₀ }
trivializationAt x :=
a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas x)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -582,7 +582,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
· rintro ⟨x, v⟩ hx
simp only [triv_change, local_triv_as_local_equiv, LocalEquiv.symm, true_and_iff,
Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, LocalEquiv.trans_source, mem_inter_iff,
- and_true_iff, mem_preimage, proj, mem_univ, [anonymous], eq_self_iff_true,
+ and_true_iff, mem_preimage, proj, mem_univ, LocalEquiv.coe_mk, eq_self_iff_true,
LocalEquiv.coe_trans, total_space.proj] at hx⊢
simp only [Z.coord_change_comp, hx, mem_inter_iff, and_self_iff, mem_base_set_at]
#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
@@ -853,6 +853,7 @@ end FiberBundleCore
variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
+#print FiberPrebundle /-
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
@@ -869,16 +870,19 @@ structure FiberPrebundle where
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ totalSpaceMk b)
#align fiber_prebundle FiberPrebundle
+-/
namespace FiberPrebundle
variable {F E} (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
+#print FiberPrebundle.totalSpaceTopology /-
/-- Topology on the total space that will make the prebundle into a bundle. -/
def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
⨆ (e : Pretrivialization F (π E)) (he : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm Subtype.topologicalSpace
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
+-/
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
@@ -912,6 +916,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
exact hu1.inter e'.open_target
#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter
+#print FiberPrebundle.trivializationOfMemPretrivializationAtlas /-
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
@@ -935,6 +940,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
exact hu1.inter (a.is_open_target_of_mem_pretrivialization_atlas_inter e e' he')
continuous_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
+-/
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
@@ -980,6 +986,7 @@ theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
exact (a.continuous_total_space_mk b).codRestrict (a.mem_trivialization_at_source b)
#align fiber_prebundle.inducing_total_space_mk_of_inducing_comp FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp
+#print FiberPrebundle.toFiberBundle /-
/-- Make a `fiber_bundle` from a `fiber_prebundle`. Concretely this means
that, given a `fiber_prebundle` structure for a sigma-type `E` -- which consists of a
number of "pretrivializations" identifying parts of `E` with product spaces `U × F` -- one
@@ -998,6 +1005,7 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
mem_baseSet_trivializationAt := a.mem_base_pretrivializationAt
trivialization_mem_atlas x := ⟨_, a.pretrivialization_mem_atlas x, rfl⟩
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
+-/
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/88a563b158f59f2983cfad685664da95502e8cdd
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit 0187644979f2d3e10a06e916a869c994facd9a87
+! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -851,8 +851,8 @@ end FiberBundleCore
variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
+ [∀ x, TopologicalSpace (E x)]
-#print FiberPrebundle /-
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
@@ -867,20 +867,18 @@ structure FiberPrebundle where
continuous_triv_change :
∀ (e) (_ : e ∈ pretrivialization_atlas) (e') (_ : e' ∈ pretrivialization_atlas),
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
+ totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivialization_at b ∘ totalSpaceMk b)
#align fiber_prebundle FiberPrebundle
--/
namespace FiberPrebundle
variable {F E} (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
-#print FiberPrebundle.totalSpaceTopology /-
/-- Topology on the total space that will make the prebundle into a bundle. -/
def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
⨆ (e : Pretrivialization F (π E)) (he : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm Subtype.topologicalSpace
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
--/
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
@@ -914,7 +912,6 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
exact hu1.inter e'.open_target
#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter
-#print FiberPrebundle.trivializationOfMemPretrivializationAtlas /-
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
@@ -938,7 +935,6 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
exact hu1.inter (a.is_open_target_of_mem_pretrivialization_atlas_inter e e' he')
continuous_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
--/
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
@@ -958,37 +954,41 @@ theorem totalSpaceMk_preimage_source (b : B) :
exact a.mem_base_pretrivialization_at b
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
-#print FiberPrebundle.fiberTopology /-
-/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
-def fiberTopology (b : B) : TopologicalSpace (E b) :=
- TopologicalSpace.induced (totalSpaceMk b) a.totalSpaceTopology
-#align fiber_prebundle.fiber_topology FiberPrebundle.fiberTopology
--/
-
-@[continuity]
-theorem inducing_totalSpaceMk (b : B) :
- @Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) := by
- letI := a.total_space_topology; letI := a.fiber_topology b; exact ⟨rfl⟩
-#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMk
-
@[continuity]
-theorem continuous_totalSpaceMk (b : B) :
- @Continuous _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) :=
+theorem continuous_totalSpaceMk (b : B) : @Continuous _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
by
- letI := a.total_space_topology; letI := a.fiber_topology b
- exact (a.inducing_total_space_mk b).Continuous
+ letI := a.total_space_topology
+ let e := a.trivialization_of_mem_pretrivialization_atlas (a.pretrivialization_mem_atlas b)
+ rw [e.to_local_homeomorph.continuous_iff_continuous_comp_left
+ (a.total_space_mk_preimage_source b)]
+ exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.total_space_mk_inducing b).induced).1
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
-#print FiberPrebundle.toFiberBundle /-
+theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
+ (h : Inducing (a.pretrivializationAt b ∘ totalSpaceMk b)) :
+ @Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) :=
+ by
+ letI := a.total_space_topology
+ rw [← restrict_comp_cod_restrict (a.mem_trivialization_at_source b)] at h
+ apply Inducing.of_codRestrict (a.mem_trivialization_at_source b)
+ refine'
+ inducing_of_inducing_compose _
+ (continuous_on_iff_continuous_restrict.mp
+ (a.trivialization_of_mem_pretrivialization_atlas
+ (a.pretrivialization_mem_atlas b)).continuous_toFun)
+ h
+ exact (a.continuous_total_space_mk b).codRestrict (a.mem_trivialization_at_source b)
+#align fiber_prebundle.inducing_total_space_mk_of_inducing_comp FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp
+
/-- Make a `fiber_bundle` from a `fiber_prebundle`. Concretely this means
that, given a `fiber_prebundle` structure for a sigma-type `E` -- which consists of a
number of "pretrivializations" identifying parts of `E` with product spaces `U × F` -- one
establishes that for the topology constructed on the sigma-type using
`fiber_prebundle.total_space_topology`, these "pretrivializations" are actually
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
-def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
+def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _
where
- totalSpaceMk_inducing := a.inducing_totalSpaceMk
+ totalSpaceMk_inducing b := a.inducing_totalSpaceMk_of_inducing_comp b (a.totalSpaceMk_inducing b)
trivializationAtlas :=
{ e |
∃ (e₀ : _)(he₀ : e₀ ∈ a.pretrivializationAtlas),
@@ -998,12 +998,10 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
mem_baseSet_trivializationAt := a.mem_base_pretrivializationAt
trivialization_mem_atlas x := ⟨_, a.pretrivialization_mem_atlas x, rfl⟩
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
--/
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
letI := a.total_space_topology
- letI := a.fiber_topology
letI := a.to_fiber_bundle
exact continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -177,7 +177,7 @@ variable {ι B F X : Type _} [TopologicalSpace X]
open TopologicalSpace Filter Set Bundle
-open Topology Classical Bundle
+open scoped Topology Classical Bundle
attribute [mfld_simps]
total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul total_space.mk_cast
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -231,12 +231,6 @@ namespace FiberBundle
variable (F) {E} [FiberBundle F E]
-/- warning: fiber_bundle.map_proj_nhds -> FiberBundle.map_proj_nhds is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : Bundle.TotalSpace.{u1, u3} B E), Eq.{succ u1} (Filter.{u1} B) (Filter.map.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) (nhds.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) _inst_4 x)) (nhds.{u1} B _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E x))
-but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] {E : B -> Type.{u1}} [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : Bundle.TotalSpace.{u2, u1} B E), Eq.{succ u2} (Filter.{u2} B) (Filter.map.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E) (nhds.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B E) _inst_4 x)) (nhds.{u2} B _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E x))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhdsₓ'. -/
theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
(trivializationAt F E x.proj).mem_source.2 <| mem_baseSet_trivializationAt F E x.proj
@@ -244,35 +238,17 @@ theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
variable (E)
-/- warning: fiber_bundle.continuous_proj -> FiberBundle.continuous_proj is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
-but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], Continuous.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_proj FiberBundle.continuous_projₓ'. -/
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
theorem continuous_proj : Continuous (π E) :=
continuous_iff_continuousAt.2 fun x => (map_proj_nhds F x).le
#align fiber_bundle.continuous_proj FiberBundle.continuous_proj
-/- warning: fiber_bundle.is_open_map_proj -> FiberBundle.isOpenMap_proj is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], IsOpenMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
-but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], IsOpenMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_projₓ'. -/
/-- The projection from a fiber bundle to its base is an open map. -/
theorem isOpenMap_proj : IsOpenMap (π E) :=
IsOpenMap.of_nhds_le fun x => (map_proj_nhds F x).ge
#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_proj
-/- warning: fiber_bundle.surjective_proj -> FiberBundle.surjective_proj is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u2} F], Function.Surjective.{max (succ u1) (succ u3), succ u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E)
-but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u3} F], Function.Surjective.{max (succ u2) (succ u1), succ u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.surjective_proj FiberBundle.surjective_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
@@ -281,48 +257,24 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
⟨p, hpb⟩
#align fiber_bundle.surjective_proj FiberBundle.surjective_proj
-/- warning: fiber_bundle.quotient_map_proj -> FiberBundle.quotientMap_proj is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u2} F], QuotientMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
-but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u3} F], QuotientMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
(isOpenMap_proj F E).to_quotientMap (continuous_proj F E) (surjective_proj F E)
#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_proj
-/- warning: fiber_bundle.continuous_total_space_mk -> FiberBundle.continuous_totalSpaceMk is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : B), Continuous.{u3, max u1 u3} (E x) (Bundle.TotalSpace.{u1, u3} B E) (_inst_5 x) _inst_4 (Bundle.totalSpaceMk.{u1, u3} B E x)
-but is expected to have type
- forall {B : Type.{u1}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u2}) [_inst_4 : TopologicalSpace.{max u2 u1} (Bundle.TotalSpace.{u1, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u1, u3, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : B), Continuous.{u2, max u1 u2} (E x) (Bundle.TotalSpace.{u1, u2} B E) (_inst_5 x) _inst_4 (Bundle.totalSpaceMk.{u1, u2} B E x)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMkₓ'. -/
theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
(totalSpaceMk_inducing F E x).Continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
variable {E F}
-/- warning: fiber_bundle.mem_trivialization_at_proj_source -> FiberBundle.mem_trivializationAt_proj_source is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u1, u3} B E}, Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) x (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) _inst_4 (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberBundle.trivializationAt.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u3} B E x)))))
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u2}} [_inst_4 : TopologicalSpace.{max u2 u3} (Bundle.TotalSpace.{u3, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u3, u2} B E}, Membership.mem.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B E) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B E)) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B E)) x (LocalEquiv.source.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) _inst_4 (instTopologicalSpaceProd.{u3, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberBundle.trivializationAt.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u3, u2} B E x)))))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
x ∈ (trivializationAt F E x.proj).source :=
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
-/- warning: fiber_bundle.trivialization_at_proj_fst -> FiberBundle.trivializationAt_proj_fst is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u1, u3} B E}, Eq.{succ u1} B (Prod.fst.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u3)), max (succ (max u1 u3)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) => (Bundle.TotalSpace.{u1, u3} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u3} B E x)) x)) (Bundle.TotalSpace.proj.{u1, u3} B E x)
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u2}} [_inst_4 : TopologicalSpace.{max u2 u3} (Bundle.TotalSpace.{u3, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u3, u2} B E}, Eq.{succ u3} B (Prod.fst.{u3, u1} B F (Trivialization.toFun'.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) _inst_4 (FiberBundle.trivializationAt.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u3, u2} B E x)) x)) (Bundle.TotalSpace.proj.{u3, u2} B E x)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fstₓ'. -/
@[simp, mfld_simps]
theorem trivializationAt_proj_fst {x : TotalSpace E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
@@ -333,9 +285,6 @@ variable (F)
open Trivialization
-/- warning: fiber_bundle.continuous_within_at_total_space -> FiberBundle.continuousWithinAt_totalSpace is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpaceₓ'. -/
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
@@ -358,12 +307,6 @@ theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀
· rwa [source_eq, preimage_preimage]
#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
-/- warning: fiber_bundle.continuous_at_total_space -> FiberBundle.continuousAt_totalSpace is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) {X : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u4}} [_inst_4 : TopologicalSpace.{max u1 u4} (Bundle.TotalSpace.{u1, u4} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u4} (E b)] [_inst_6 : FiberBundle.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u1, u4} B E)) {x₀ : X}, Iff (ContinuousAt.{u3, max u1 u4} X (Bundle.TotalSpace.{u1, u4} B E) _inst_1 _inst_4 f x₀) (And (ContinuousAt.{u3, u1} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u1, u4} B E (f x)) x₀) (ContinuousAt.{u3, u2} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u4)), max (succ (max u1 u4)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) => (Bundle.TotalSpace.{u1, u4} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u4} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u4} B E (f x₀))) (f x))) x₀))
-but is expected to have type
- forall {B : Type.{u4}} (F : Type.{u1}) {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u4} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u3 u4} (Bundle.TotalSpace.{u4, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u4, u3} B E)) {x₀ : X}, Iff (ContinuousAt.{u2, max u4 u3} X (Bundle.TotalSpace.{u4, u3} B E) _inst_1 _inst_4 f x₀) (And (ContinuousAt.{u2, u4} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u4, u3} B E (f x)) x₀) (ContinuousAt.{u2, u1} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u4, u1} B F (Trivialization.toFun'.{u4, u1, max u4 u3} B F (Bundle.TotalSpace.{u4, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u4, u3} B E) _inst_4 (FiberBundle.trivializationAt.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u4, u3} B E (f x₀))) (f x))) x₀))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpaceₓ'. -/
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt f x₀ ↔
@@ -376,12 +319,6 @@ end FiberBundle
variable (F E)
-/- warning: fiber_bundle.exists_trivialization_Icc_subset -> FiberBundle.exists_trivialization_Icc_subset is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : ConditionallyCompleteLinearOrder.{u1} B] [_inst_7 : OrderTopology.{u1} B _inst_2 (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_6)))))] [_inst_8 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (a : B) (b : B), Exists.{max (succ u1) (succ u2) (succ (max u1 u3))} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (e : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) => HasSubset.Subset.{u1} (Set.{u1} B) (Set.hasSubset.{u1} B) (Set.Icc.{u1} B (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_6))))) a b) (Trivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
-but is expected to have type
- forall {B : Type.{u3}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u3, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : ConditionallyCompleteLinearOrder.{u3} B] [_inst_7 : OrderTopology.{u3} B _inst_2 (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_6)))))] [_inst_8 : FiberBundle.{u3, u2, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (a : B) (b : B), Exists.{max (max (succ u3) (succ u2)) (succ u1)} (Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E)) (fun (e : Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E)) => HasSubset.Subset.{u3} (Set.{u3} B) (Set.instHasSubsetSet.{u3} B) (Set.Icc.{u3} B (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_6))))) a b) (Trivialization.baseSet.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subsetₓ'. -/
/-- If `E` is a fiber bundle over a conditionally complete linear order,
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
@@ -546,12 +483,6 @@ def proj : Z.TotalSpace → B :=
#align fiber_bundle_core.proj FiberBundleCore.proj
-/
-/- warning: fiber_bundle_core.triv_change -> FiberBundleCore.trivChange is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) -> ι -> ι -> (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) -> ι -> ι -> (LocalHomeomorph.{max u3 u2, max u3 u2} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (instTopologicalSpaceProd.{u2, u3} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u2, u3} B F _inst_2 _inst_3))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.triv_change FiberBundleCore.trivChangeₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- Local homeomorphism version of the trivialization change. -/
@@ -583,12 +514,6 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
ContinuousOn.prod continuous_fst.continuous_on (Z.continuous_on_coord_change j i)
#align fiber_bundle_core.triv_change FiberBundleCore.trivChange
-/- warning: fiber_bundle_core.mem_triv_change_source -> FiberBundleCore.mem_trivChange_source is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (j : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i j)))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z j)))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (j : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.source.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i j)))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z j)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivChange_source (i j : ι) (p : B × F) :
p ∈ (Z.trivChange i j).source ↔ p.1 ∈ Z.baseSet i ∩ Z.baseSet j := by erw [mem_prod]; simp
@@ -632,45 +557,21 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
variable (i : ι)
-/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_source -> FiberBundleCore.mem_localTrivAsLocalEquiv_source is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.baseSet.{u3, u2, u1} ι B _inst_2 F _inst_3 Z i))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_sourceₓ'. -/
theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
-/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_target -> FiberBundleCore.mem_localTrivAsLocalEquiv_target is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_targetₓ'. -/
theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i := by erw [mem_prod];
simp only [and_true_iff, mem_univ]
#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_apply -> FiberBundleCore.localTrivAsLocalEquiv_apply is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (LocalEquiv.toFun.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_applyₓ'. -/
theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_trans -> FiberBundleCore.localTrivAsLocalEquiv_trans is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (j : ι), HasEquivₓ.Equiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (setoidHasEquiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (LocalEquiv.eqOnSourceSetoid.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F))) (LocalEquiv.trans.{max u2 u3, max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z j)) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i j))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (j : ι), HasEquiv.Equiv.{max (max (succ u3) (succ u2)) (succ (max u3 u2)), 0} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (instHasEquiv.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (LocalEquiv.eqOnSourceSetoid.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F))) (LocalEquiv.trans.{max u3 u2, max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z j)) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i j))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_transₓ'. -/
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
theorem localTrivAsLocalEquiv_trans (i j : ι) :
(Z.localTrivAsLocalEquiv i).symm.trans (Z.localTrivAsLocalEquiv j) ≈
@@ -697,12 +598,6 @@ instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
variable (b : B) (a : F)
-/- warning: fiber_bundle_core.open_source' -> FiberBundleCore.open_source' is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), IsOpen.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), IsOpen.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.open_source' FiberBundleCore.open_source'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
by
@@ -769,23 +664,11 @@ def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
#align fiber_bundle_core.local_triv_at FiberBundleCore.localTrivAt
-/
-/- warning: fiber_bundle_core.local_triv_at_def -> FiberBundleCore.localTrivAt_def is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B), Eq.{max (succ u2) (succ u3) (succ (max u2 u3))} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z b)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B), Eq.{max (succ u3) (succ u2)} (Trivialization.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_2 F _inst_3 Z b)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_defₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_def (b : B) : Z.localTriv (Z.indexAt b) = Z.localTrivAt b :=
rfl
#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_def
-/- warning: fiber_bundle_core.continuous_const_section -> FiberBundleCore.continuous_const_section is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) x (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z j))) -> (Eq.{succ u3} F (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i j x v) v)) -> (Continuous.{u2, max u2 u3} B (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) ((fun (this : B -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => this) (fun (x : B) => Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) x v)))
-but is expected to have type
- forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_2 F _inst_3) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) x (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z j))) -> (Eq.{succ u1} F (FiberBundleCore.coordChange.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i j x v) v)) -> (Continuous.{u3, max u3 u1} B (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) ([mdata let_fun:1 (fun (this : B -> (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z)) => this) (fun (x : B) => Sigma.mk.{u3, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u2, u3, u1} ι B F _inst_2 _inst_3 Z x) x v)]))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_sectionₓ'. -/
/-- If an element of `F` is invariant under all coordinate changes, then one can define a
corresponding section of the fiber bundle, which is continuous. This applies in particular to the
zero section of a vector bundle. Another example (not yet defined) would be the identity
@@ -807,175 +690,85 @@ theorem continuous_const_section (v : F)
· exact A
#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_section
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_coe -> FiberBundleCore.localTrivAsLocalEquiv_coe is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} ((FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} ((FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) -> (Prod.{u3, u2} B F)) (LocalEquiv.toFun.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coeₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coe
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_source -> FiberBundleCore.localTrivAsLocalEquiv_source is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_sourceₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_source :
(Z.localTrivAsLocalEquiv i).source = (Z.localTriv i).source :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_source
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_target -> FiberBundleCore.localTrivAsLocalEquiv_target is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} B F)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_targetₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_target :
(Z.localTrivAsLocalEquiv i).target = (Z.localTriv i).target :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_target
-/- warning: fiber_bundle_core.local_triv_as_local_equiv_symm -> FiberBundleCore.localTrivAsLocalEquiv_symm is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symmₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_symm :
(Z.localTrivAsLocalEquiv i).symm = (Z.localTriv i).toLocalEquiv.symm :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symm
-/- warning: fiber_bundle_core.base_set_at -> FiberBundleCore.baseSet_at is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ u2} (Set.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
-but is expected to have type
- forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ u3} (Set.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i) (Trivialization.baseSet.{u3, u1, max u3 u1} B F (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u2, u3, u1} ι B F _inst_2 _inst_3 Z i))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_atₓ'. -/
@[simp, mfld_simps]
theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
rfl
#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_at
-/- warning: fiber_bundle_core.local_triv_apply -> FiberBundleCore.localTriv_apply is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_apply (p : Z.TotalSpace) :
(Z.localTriv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_apply
-/- warning: fiber_bundle_core.local_triv_at_apply -> FiberBundleCore.localTrivAt_apply is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_applyₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
rw [local_triv_at, local_triv_apply, coord_change_self]; exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
-/- warning: fiber_bundle_core.local_triv_at_apply_mk -> FiberBundleCore.localTrivAt_apply_mk is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B) (a : F), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) b a)) (Prod.mk.{u2, u3} B F b a)
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B) (a : F), Eq.{max (succ u3) (succ u2)} (Prod.{u3, u2} B F) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) b a)) (Prod.mk.{u3, u2} B F b a)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mkₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ = ⟨b, a⟩ :=
Z.localTrivAt_apply _
#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mk
-/- warning: fiber_bundle_core.mem_local_triv_source -> FiberBundleCore.mem_localTriv_source is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_source (p : Z.TotalSpace) :
p ∈ (Z.localTriv i).source ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_source
-/- warning: fiber_bundle_core.mem_local_triv_at_source -> FiberBundleCore.mem_localTrivAt_source is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)))
-but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (b : B), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z))) (Set.instMembershipSet.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z))) p (LocalEquiv.source.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z b))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z b)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
p ∈ (Z.localTrivAt b).source ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
-/- warning: fiber_bundle_core.mem_source_at -> FiberBundleCore.mem_source_at is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B) (a : F), Membership.Mem.{max u2 u3, max u2 u3} (Sigma.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x)) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) b a) (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B) (a : F), Membership.mem.{max u3 u2, max u3 u2} (Sigma.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x)) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) b a) (LocalEquiv.source.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_atₓ'. -/
@[simp, mfld_simps]
theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
rw [local_triv_at, mem_local_triv_source]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
-/- warning: fiber_bundle_core.mem_local_triv_target -> FiberBundleCore.mem_localTriv_target is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_target (p : B × F) :
p ∈ (Z.localTriv i).target ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_target
-/- warning: fiber_bundle_core.mem_local_triv_at_target -> FiberBundleCore.mem_localTrivAt_target is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : Prod.{u2, u3} B F) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (p : Prod.{u3, u2} B F) (b : B), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_target (p : B × F) (b : B) :
p ∈ (Z.localTrivAt b).target ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_target
-/- warning: fiber_bundle_core.local_triv_symm_apply -> FiberBundleCore.localTriv_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Eq.{max (succ u2) (succ u3)} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (Prod.{u2, u3} B F) -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalHomeomorph.hasCoeToFun.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalHomeomorph.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) p) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Prod.fst.{u2, u3} B F p)) (Prod.fst.{u2, u3} B F p) (Prod.snd.{u2, u3} B F p)))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Eq.{max (succ u3) (succ u2)} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalHomeomorph.toFun'.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalHomeomorph.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))) p) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.coordChange.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_2 F _inst_3 Z (Prod.fst.{u3, u2} B F p)) (Prod.fst.{u3, u2} B F p) (Prod.snd.{u3, u2} B F p)))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
(Z.localTriv i).toLocalHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_apply
-/- warning: fiber_bundle_core.mem_local_triv_at_base_set -> FiberBundleCore.mem_localTrivAt_baseSet is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B), Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) b (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B), Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
rw [local_triv_at, ← base_set_at]; exact Z.mem_base_set_at b
@@ -1042,23 +835,11 @@ instance fiberBundle : FiberBundle F Z.Fiber
#align fiber_bundle_core.fiber_bundle FiberBundleCore.fiberBundle
-/
-/- warning: fiber_bundle_core.continuous_proj -> FiberBundleCore.continuous_proj is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3), Continuous.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3), Continuous.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is continuous -/
theorem continuous_proj : Continuous Z.proj :=
continuous_proj F Z.Fiber
#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_proj
-/- warning: fiber_bundle_core.is_open_map_proj -> FiberBundleCore.isOpenMap_proj is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3), IsOpenMap.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)
-but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3), IsOpenMap.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)
-Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.is_open_map_proj FiberBundleCore.isOpenMap_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is an open map -/
theorem isOpenMap_proj : IsOpenMap Z.proj :=
isOpenMap_proj F Z.Fiber
@@ -1101,12 +882,6 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
-/
-/- warning: fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas -> FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) {e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)}, (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) e (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_2 _inst_3 a)) -> (ContinuousOn.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) {e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)}, (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) e (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_2 _inst_3 a)) -> (ContinuousOn.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_2 _inst_3 a) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlasₓ'. -/
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
by
@@ -1116,12 +891,6 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
exact le_iSup₂ e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
-/- warning: fiber_prebundle.is_open_source -> FiberPrebundle.isOpen_source is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)), IsOpen.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)), IsOpen.{max u3 u1} (Bundle.TotalSpace.{u3, u1} B E) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_2 _inst_3 a) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_sourceₓ'. -/
theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTopology] e.source :=
by
letI := a.total_space_topology
@@ -1133,12 +902,6 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTop
Pretrivialization.preimage_symm_proj_inter]
#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_source
-/- warning: fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter -> FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (e' : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)), (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_2 _inst_3 a)) -> (IsOpen.{max u1 u2} (Prod.{u1, u2} B F) (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (Inter.inter.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} B F)) (Set.hasInter.{max u1 u2} (Prod.{u1, u2} B F)) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e')) (Set.preimage.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e'))) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))))
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (e' : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)), (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_2 _inst_3 a)) -> (IsOpen.{max u3 u2} (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Inter.inter.{max u3 u2} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instInterSet.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e')) (Set.preimage.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e'))) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_interₓ'. -/
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
(he' : e' ∈ a.pretrivializationAtlas) :
IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) :=
@@ -1177,12 +940,6 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
-/
-/- warning: fiber_prebundle.mem_trivialization_at_source -> FiberPrebundle.mem_pretrivializationAt_source is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B) (x : E b), Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B (fun (b : B) => E b)) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Bundle.totalSpaceMk.{u1, u3} B (fun (b : B) => E b) b x) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b)))
-but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B) (x : E b), Membership.mem.{max u3 u2, max u2 u3} (Bundle.TotalSpace.{u2, u3} B E) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Set.instMembershipSet.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Bundle.totalSpaceMk.{u2, u3} B E b x) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_2 _inst_3 a b)))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_sourceₓ'. -/
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
by
@@ -1190,12 +947,6 @@ theorem mem_pretrivializationAt_source (b : B) (x : E b) :
exact a.mem_base_pretrivialization_at b
#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_source
-/- warning: fiber_prebundle.total_space_mk_preimage_source -> FiberPrebundle.totalSpaceMk_preimage_source is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (Bundle.totalSpaceMk.{u1, u3} B E b) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b)))) (Set.univ.{u3} (E b))
-but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (Bundle.totalSpaceMk.{u2, u3} B E b) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_2 _inst_3 a b)))) (Set.univ.{u3} (E b))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_sourceₓ'. -/
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
totalSpaceMk b ⁻¹' (a.pretrivializationAt b).source = univ :=
@@ -1214,24 +965,12 @@ def fiberTopology (b : B) : TopologicalSpace (E b) :=
#align fiber_prebundle.fiber_topology FiberPrebundle.fiberTopology
-/
-/- warning: fiber_prebundle.inducing_total_space_mk -> FiberPrebundle.inducing_totalSpaceMk is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Inducing.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
-but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Inducing.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMkₓ'. -/
@[continuity]
theorem inducing_totalSpaceMk (b : B) :
@Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) := by
letI := a.total_space_topology; letI := a.fiber_topology b; exact ⟨rfl⟩
#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMk
-/- warning: fiber_prebundle.continuous_total_space_mk -> FiberPrebundle.continuous_totalSpaceMk is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Continuous.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
-but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Continuous.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMkₓ'. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
@Continuous _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) :=
@@ -1261,12 +1000,6 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
-/
-/- warning: fiber_prebundle.continuous_proj -> FiberPrebundle.continuous_proj is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3), Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_2 _inst_3), Continuous.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_2 _inst_3 a) _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E)
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_projₓ'. -/
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
letI := a.total_space_topology
@@ -1275,12 +1008,6 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
exact continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
-/- warning: fiber_prebundle.continuous_on_of_comp_right -> FiberPrebundle.continuousOn_of_comp_right is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) {X : Type.{u4}} [_inst_4 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u1, u3} B E) -> X} {s : Set.{u1} B}, (IsOpen.{u1} B _inst_2 s) -> (forall (b : B), (Membership.Mem.{u1, u1} B (Set.{u1} B) (Set.hasMem.{u1} B) b s) -> (ContinuousOn.{max u1 u2, u4} (Prod.{u1, u2} B F) X (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) _inst_4 (Function.comp.{succ (max u1 u2), max (succ u1) (succ u3), succ u4} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) X f (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b))))) (Set.prod.{u1, u2} B F (Inter.inter.{u1} (Set.{u1} B) (Set.hasInter.{u1} B) s (Pretrivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b))) (Set.univ.{u2} F)))) -> (ContinuousOn.{max u1 u3, u4} (Bundle.TotalSpace.{u1, u3} B E) X (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) _inst_4 f (Set.preimage.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) s))
-but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_2 _inst_3) {X : Type.{u4}} [_inst_4 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u3, u2} B E) -> X} {s : Set.{u3} B}, (IsOpen.{u3} B _inst_2 s) -> (forall (b : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b s) -> (ContinuousOn.{max u3 u1, u4} (Prod.{u3, u1} B F) X (instTopologicalSpaceProd.{u3, u1} B F _inst_2 _inst_3) _inst_4 (Function.comp.{succ (max u3 u1), max (succ u3) (succ u2), succ u4} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) X f (LocalEquiv.toFun.{max u3 u1, max u3 u2} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) (LocalEquiv.symm.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (Pretrivialization.toLocalEquiv.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_2 _inst_3 a b))))) (Set.prod.{u3, u1} B F (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) s (Pretrivialization.baseSet.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_2 _inst_3 a b))) (Set.univ.{u1} F)))) -> (ContinuousOn.{max u3 u2, u4} (Bundle.TotalSpace.{u3, u2} B E) X (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_2 _inst_3 a) _inst_4 f (Set.preimage.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (Bundle.TotalSpace.proj.{u3, u2} B E) s))
-Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_on_of_comp_right FiberPrebundle.continuousOn_of_comp_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -369,9 +369,7 @@ theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt f x₀ ↔
ContinuousAt (fun x => (f x).proj) x₀ ∧
ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
- by
- simp_rw [← continuousWithinAt_univ]
- exact continuous_within_at_total_space F f
+ by simp_rw [← continuousWithinAt_univ]; exact continuous_within_at_total_space F f
#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpace
end FiberBundle
@@ -407,8 +405,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
by
- cases' hc.1.eq_or_lt with heq hlt
- · rwa [← HEq]
+ cases' hc.1.eq_or_lt with heq hlt; · rwa [← HEq]
refine' ⟨hc, _⟩
/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
@@ -451,9 +448,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
exacts[Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
· /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
`[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
- rw [disjoint_left] at he
- push_neg at he
- rcases he with ⟨d', hdd' : d' < d, hd'c⟩
+ rw [disjoint_left] at he; push_neg at he; rcases he with ⟨d', hdd' : d' < d, hd'c⟩
exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
@@ -596,10 +591,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivChange_source (i j : ι) (p : B × F) :
- p ∈ (Z.trivChange i j).source ↔ p.1 ∈ Z.baseSet i ∩ Z.baseSet j :=
- by
- erw [mem_prod]
- simp
+ p ∈ (Z.trivChange i j).source ↔ p.1 ∈ Z.baseSet i ∩ Z.baseSet j := by erw [mem_prod]; simp
#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_source
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -658,9 +650,7 @@ but is expected to have type
forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_targetₓ'. -/
theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
- p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i :=
- by
- erw [mem_prod]
+ p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i := by erw [mem_prod];
simp only [and_true_iff, mem_univ]
#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
@@ -687,9 +677,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
(Z.trivChange i j).toLocalEquiv :=
by
constructor
- · ext x
- simp only [mem_local_triv_as_local_equiv_target, mfld_simps]
- rfl
+ · ext x; simp only [mem_local_triv_as_local_equiv_target, mfld_simps]; rfl
· rintro ⟨x, v⟩ hx
simp only [triv_change, local_triv_as_local_equiv, LocalEquiv.symm, true_and_iff,
Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, LocalEquiv.trans_source, mem_inter_iff,
@@ -735,9 +723,7 @@ def localTriv (i : ι) : Trivialization F Z.proj
open_baseSet := Z.isOpen_baseSet i
source_eq := rfl
target_eq := rfl
- proj_toFun p hp := by
- simp only [mfld_simps]
- rfl
+ proj_toFun p hp := by simp only [mfld_simps]; rfl
open_source := Z.open_source' i
open_target := (Z.isOpen_baseSet i).Prod isOpen_univ
continuous_toFun := by
@@ -898,10 +884,8 @@ but is expected to have type
forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_applyₓ'. -/
@[simp, mfld_simps]
-theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ :=
- by
- rw [local_triv_at, local_triv_apply, coord_change_self]
- exact Z.mem_base_set_at p.1
+theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ := by
+ rw [local_triv_at, local_triv_apply, coord_change_self]; exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
/- warning: fiber_bundle_core.local_triv_at_apply_mk -> FiberBundleCore.localTrivAt_apply_mk is a dubious translation:
@@ -946,10 +930,8 @@ but is expected to have type
forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B) (a : F), Membership.mem.{max u3 u2, max u3 u2} (Sigma.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x)) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) b a) (LocalEquiv.source.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_atₓ'. -/
@[simp, mfld_simps]
-theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source :=
- by
- rw [local_triv_at, mem_local_triv_source]
- exact Z.mem_base_set_at b
+theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
+ rw [local_triv_at, mem_local_triv_source]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
/- warning: fiber_bundle_core.mem_local_triv_target -> FiberBundleCore.mem_localTriv_target is a dubious translation:
@@ -995,10 +977,8 @@ but is expected to have type
forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B), Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSetₓ'. -/
@[simp, mfld_simps]
-theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet :=
- by
- rw [local_triv_at, ← base_set_at]
- exact Z.mem_base_set_at b
+theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
+ rw [local_triv_at, ← base_set_at]; exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
#print FiberBundleCore.continuous_totalSpaceMk /-
@@ -1017,10 +997,8 @@ theorem continuous_totalSpaceMk (b : B) :
apply IsOpen.inter
· simp only [total_space.proj, proj, ← preimage_comp]
by_cases b ∈ (Z.local_triv i).baseSet
- · rw [preimage_const_of_mem h]
- exact isOpen_univ
- · rw [preimage_const_of_not_mem h]
- exact isOpen_empty
+ · rw [preimage_const_of_mem h]; exact isOpen_univ
+ · rw [preimage_const_of_not_mem h]; exact isOpen_empty
· simp only [Function.comp, local_triv_apply]
rw [preimage_inter, preimage_comp]
by_cases b ∈ Z.base_set i
@@ -1183,9 +1161,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
letI := a.total_space_topology
refine'
continuous_on_iff'.mpr fun s hs =>
- ⟨e ⁻¹' s ∩ e.source, is_open_supr_iff.mpr fun e' => _,
- by
- rw [inter_assoc, inter_self]
+ ⟨e ⁻¹' s ∩ e.source, is_open_supr_iff.mpr fun e' => _, by rw [inter_assoc, inter_self];
rfl⟩
refine' is_open_supr_iff.mpr fun he' => _
rw [isOpen_coinduced, isOpen_induced_iff]
@@ -1193,10 +1169,8 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
have hu3 := congr_arg (fun s => (fun x : e'.target => (x : B × F)) ⁻¹' s) hu2
simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
refine'
- ⟨u ∩ e'.to_local_equiv.target ∩ e'.to_local_equiv.symm ⁻¹' e.source, _,
- by
- simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]
- rfl⟩
+ ⟨u ∩ e'.to_local_equiv.target ∩ e'.to_local_equiv.symm ⁻¹' e.source, _, by
+ simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]; rfl⟩
rw [inter_assoc]
exact hu1.inter (a.is_open_target_of_mem_pretrivialization_atlas_inter e e' he')
continuous_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
@@ -1248,11 +1222,8 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMkₓ'. -/
@[continuity]
theorem inducing_totalSpaceMk (b : B) :
- @Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) :=
- by
- letI := a.total_space_topology
- letI := a.fiber_topology b
- exact ⟨rfl⟩
+ @Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) := by
+ letI := a.total_space_topology; letI := a.fiber_topology b; exact ⟨rfl⟩
#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMk
/- warning: fiber_prebundle.continuous_total_space_mk -> FiberPrebundle.continuous_totalSpaceMk is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -334,10 +334,7 @@ variable (F)
open Trivialization
/- warning: fiber_bundle.continuous_within_at_total_space -> FiberBundle.continuousWithinAt_totalSpace is a dubious translation:
-lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) {X : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u4}} [_inst_4 : TopologicalSpace.{max u1 u4} (Bundle.TotalSpace.{u1, u4} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u4} (E b)] [_inst_6 : FiberBundle.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u1, u4} B E)) {s : Set.{u3} X} {x₀ : X}, Iff (ContinuousWithinAt.{u3, max u1 u4} X (Bundle.TotalSpace.{u1, u4} B E) _inst_1 _inst_4 f s x₀) (And (ContinuousWithinAt.{u3, u1} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u1, u4} B E (f x)) s x₀) (ContinuousWithinAt.{u3, u2} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u4)), max (succ (max u1 u4)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) => (Bundle.TotalSpace.{u1, u4} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u4} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u4} B E (f x₀))) (f x))) s x₀))
-but is expected to have type
- forall {B : Type.{u4}} (F : Type.{u1}) {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u4} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u3 u4} (Bundle.TotalSpace.{u4, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u4, u3} B E)) {s : Set.{u2} X} {x₀ : X}, Iff (ContinuousWithinAt.{u2, max u4 u3} X (Bundle.TotalSpace.{u4, u3} B E) _inst_1 _inst_4 f s x₀) (And (ContinuousWithinAt.{u2, u4} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u4, u3} B E (f x)) s x₀) (ContinuousWithinAt.{u2, u1} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u4, u1} B F (Trivialization.toFun'.{u4, u1, max u4 u3} B F (Bundle.TotalSpace.{u4, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u4, u3} B E) _inst_4 (FiberBundle.trivializationAt.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u4, u3} B E (f x₀))) (f x))) s x₀))
+<too large>
Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpaceₓ'. -/
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -397,7 +397,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
⟨trivialization_at F E a, mem_base_set_trivialization_at F E a⟩
-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
cases' le_or_lt a b with hab hab <;>
- [skip, exact ⟨ea, by simp [*]⟩]
+ [skip;exact ⟨ea, by simp [*]⟩]
/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
set s : Set B := { x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet }
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -406,7 +406,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
have sbd : BddAbove s := ⟨b, hsb⟩
set c := Sup s
- have hsc : IsLUB s c := isLUB_csupₛ sne sbd
+ have hsc : IsLUB s c := isLUB_csSup sne sbd
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.base_set⟩ : c ∈ s :=
by
@@ -1138,7 +1138,7 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
refine'
id fun z H =>
id fun U h => preimage_nhdsWithin_coinduced' H e.open_target (le_def.1 (nhds_mono _) U h)
- exact le_supᵢ₂ e he
+ exact le_iSup₂ e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
/- warning: fiber_prebundle.is_open_source -> FiberPrebundle.isOpen_source is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -305,12 +305,24 @@ theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
variable {E F}
+/- warning: fiber_bundle.mem_trivialization_at_proj_source -> FiberBundle.mem_trivializationAt_proj_source is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u1, u3} B E}, Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) x (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) _inst_4 (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberBundle.trivializationAt.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u3} B E x)))))
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u2}} [_inst_4 : TopologicalSpace.{max u2 u3} (Bundle.TotalSpace.{u3, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u3, u2} B E}, Membership.mem.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B E) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B E)) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B E)) x (LocalEquiv.source.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) _inst_4 (instTopologicalSpaceProd.{u3, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberBundle.trivializationAt.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u3, u2} B E x)))))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
x ∈ (trivializationAt F E x.proj).source :=
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
+/- warning: fiber_bundle.trivialization_at_proj_fst -> FiberBundle.trivializationAt_proj_fst is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u1, u3} B E}, Eq.{succ u1} B (Prod.fst.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u3)), max (succ (max u1 u3)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) => (Bundle.TotalSpace.{u1, u3} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u3} B E x)) x)) (Bundle.TotalSpace.proj.{u1, u3} B E x)
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u2}} [_inst_4 : TopologicalSpace.{max u2 u3} (Bundle.TotalSpace.{u3, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] {x : Bundle.TotalSpace.{u3, u2} B E}, Eq.{succ u3} B (Prod.fst.{u3, u1} B F (Trivialization.toFun'.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) _inst_4 (FiberBundle.trivializationAt.{u3, u1, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u3, u2} B E x)) x)) (Bundle.TotalSpace.proj.{u3, u2} B E x)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fstₓ'. -/
@[simp, mfld_simps]
theorem trivializationAt_proj_fst {x : TotalSpace E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
@@ -321,6 +333,12 @@ variable (F)
open Trivialization
+/- warning: fiber_bundle.continuous_within_at_total_space -> FiberBundle.continuousWithinAt_totalSpace is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) {X : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u4}} [_inst_4 : TopologicalSpace.{max u1 u4} (Bundle.TotalSpace.{u1, u4} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u4} (E b)] [_inst_6 : FiberBundle.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u1, u4} B E)) {s : Set.{u3} X} {x₀ : X}, Iff (ContinuousWithinAt.{u3, max u1 u4} X (Bundle.TotalSpace.{u1, u4} B E) _inst_1 _inst_4 f s x₀) (And (ContinuousWithinAt.{u3, u1} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u1, u4} B E (f x)) s x₀) (ContinuousWithinAt.{u3, u2} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u4)), max (succ (max u1 u4)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) => (Bundle.TotalSpace.{u1, u4} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u4} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u4} B E (f x₀))) (f x))) s x₀))
+but is expected to have type
+ forall {B : Type.{u4}} (F : Type.{u1}) {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u4} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u3 u4} (Bundle.TotalSpace.{u4, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u4, u3} B E)) {s : Set.{u2} X} {x₀ : X}, Iff (ContinuousWithinAt.{u2, max u4 u3} X (Bundle.TotalSpace.{u4, u3} B E) _inst_1 _inst_4 f s x₀) (And (ContinuousWithinAt.{u2, u4} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u4, u3} B E (f x)) s x₀) (ContinuousWithinAt.{u2, u1} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u4, u1} B F (Trivialization.toFun'.{u4, u1, max u4 u3} B F (Bundle.TotalSpace.{u4, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u4, u3} B E) _inst_4 (FiberBundle.trivializationAt.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u4, u3} B E (f x₀))) (f x))) s x₀))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpaceₓ'. -/
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
@@ -343,6 +361,12 @@ theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀
· rwa [source_eq, preimage_preimage]
#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
+/- warning: fiber_bundle.continuous_at_total_space -> FiberBundle.continuousAt_totalSpace is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) {X : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} X] [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u4}} [_inst_4 : TopologicalSpace.{max u1 u4} (Bundle.TotalSpace.{u1, u4} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u4} (E b)] [_inst_6 : FiberBundle.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u1, u4} B E)) {x₀ : X}, Iff (ContinuousAt.{u3, max u1 u4} X (Bundle.TotalSpace.{u1, u4} B E) _inst_1 _inst_4 f x₀) (And (ContinuousAt.{u3, u1} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u1, u4} B E (f x)) x₀) (ContinuousAt.{u3, u2} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u1, u2} B F (coeFn.{max (succ u1) (succ u2) (succ (max u1 u4)), max (succ (max u1 u4)) (succ u1) (succ u2)} (Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) (fun (_x : Trivialization.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u4} B E)) => (Bundle.TotalSpace.{u1, u4} B E) -> (Prod.{u1, u2} B F)) (Trivialization.hasCoeToFun.{u1, u2, max u1 u4} B F (Bundle.TotalSpace.{u1, u4} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u4} B E) _inst_4) (FiberBundle.trivializationAt.{u1, u2, u4} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u1, u4} B E (f x₀))) (f x))) x₀))
+but is expected to have type
+ forall {B : Type.{u4}} (F : Type.{u1}) {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u4} B] [_inst_3 : TopologicalSpace.{u1} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u3 u4} (Bundle.TotalSpace.{u4, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (f : X -> (Bundle.TotalSpace.{u4, u3} B E)) {x₀ : X}, Iff (ContinuousAt.{u2, max u4 u3} X (Bundle.TotalSpace.{u4, u3} B E) _inst_1 _inst_4 f x₀) (And (ContinuousAt.{u2, u4} X B _inst_1 _inst_2 (fun (x : X) => Bundle.TotalSpace.proj.{u4, u3} B E (f x)) x₀) (ContinuousAt.{u2, u1} X F _inst_1 _inst_3 (fun (x : X) => Prod.snd.{u4, u1} B F (Trivialization.toFun'.{u4, u1, max u4 u3} B F (Bundle.TotalSpace.{u4, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u4, u3} B E) _inst_4 (FiberBundle.trivializationAt.{u4, u1, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b) _inst_6 (Bundle.TotalSpace.proj.{u4, u3} B E (f x₀))) (f x))) x₀))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpaceₓ'. -/
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt f x₀ ↔
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -191,11 +191,11 @@ variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
#print FiberBundle /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`mem_baseSet_trivializationAt] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`trivialization_mem_atlas] [] -/
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b685f506164f8d17a6404048bc4d696739c5d976
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit 8ef6f08ff8c781c5c07a8b12843710e1a0d8a688
+! leanprover-community/mathlib commit 0187644979f2d3e10a06e916a869c994facd9a87
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -173,14 +173,14 @@ Fiber bundle, topological bundle, structure group
-/
-variable {ι : Type _} {B : Type _} {F : Type _}
+variable {ι B F X : Type _} [TopologicalSpace X]
open TopologicalSpace Filter Set Bundle
open Topology Classical Bundle
attribute [mfld_simps]
- total_space.proj total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul total_space.mk_cast
+ total_space_mk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul total_space.mk_cast
/-! ### General definition of fiber bundles -/
@@ -233,9 +233,9 @@ variable (F) {E} [FiberBundle F E]
/- warning: fiber_bundle.map_proj_nhds -> FiberBundle.map_proj_nhds is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : Bundle.TotalSpace.{u1, u3} B E), Eq.{succ u1} (Filter.{u1} B) (Filter.map.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) (nhds.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) _inst_3 x)) (nhds.{u1} B _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E x))
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : Bundle.TotalSpace.{u1, u3} B E), Eq.{succ u1} (Filter.{u1} B) (Filter.map.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) (nhds.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) _inst_4 x)) (nhds.{u1} B _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E x))
but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] {E : B -> Type.{u1}} [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : Bundle.TotalSpace.{u2, u1} B E), Eq.{succ u2} (Filter.{u2} B) (Filter.map.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E) (nhds.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B E) _inst_3 x)) (nhds.{u2} B _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E x))
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] {E : B -> Type.{u1}} [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : Bundle.TotalSpace.{u2, u1} B E), Eq.{succ u2} (Filter.{u2} B) (Filter.map.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E) (nhds.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B E) _inst_4 x)) (nhds.{u2} B _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E x))
Case conversion may be inaccurate. Consider using '#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhdsₓ'. -/
theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
@@ -246,9 +246,9 @@ variable (E)
/- warning: fiber_bundle.continuous_proj -> FiberBundle.continuous_proj is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], Continuous.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], Continuous.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_proj FiberBundle.continuous_projₓ'. -/
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
@@ -258,9 +258,9 @@ theorem continuous_proj : Continuous (π E) :=
/- warning: fiber_bundle.is_open_map_proj -> FiberBundle.isOpenMap_proj is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], IsOpenMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], IsOpenMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], IsOpenMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)], IsOpenMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
Case conversion may be inaccurate. Consider using '#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_projₓ'. -/
/-- The projection from a fiber bundle to its base is an open map. -/
theorem isOpenMap_proj : IsOpenMap (π E) :=
@@ -269,9 +269,9 @@ theorem isOpenMap_proj : IsOpenMap (π E) :=
/- warning: fiber_bundle.surjective_proj -> FiberBundle.surjective_proj is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u2} F], Function.Surjective.{max (succ u1) (succ u3), succ u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E)
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u2} F], Function.Surjective.{max (succ u1) (succ u3), succ u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E)
but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u3} F], Function.Surjective.{max (succ u2) (succ u1), succ u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E)
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u3} F], Function.Surjective.{max (succ u2) (succ u1), succ u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E)
Case conversion may be inaccurate. Consider using '#align fiber_bundle.surjective_proj FiberBundle.surjective_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
@@ -283,9 +283,9 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
/- warning: fiber_bundle.quotient_map_proj -> FiberBundle.quotientMap_proj is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u2} F], QuotientMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u2} F], QuotientMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
but is expected to have type
- forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u3} F], QuotientMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : FiberBundle.{u2, u3, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] [_inst_7 : Nonempty.{succ u3} F], QuotientMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_4 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B E)
Case conversion may be inaccurate. Consider using '#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
@@ -295,23 +295,73 @@ theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
/- warning: fiber_bundle.continuous_total_space_mk -> FiberBundle.continuous_totalSpaceMk is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : B), Continuous.{u3, max u1 u3} (E x) (Bundle.TotalSpace.{u1, u3} B E) (_inst_4 x) _inst_3 (Bundle.totalSpaceMk.{u1, u3} B E x)
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : B), Continuous.{u3, max u1 u3} (E x) (Bundle.TotalSpace.{u1, u3} B E) (_inst_5 x) _inst_4 (Bundle.totalSpaceMk.{u1, u3} B E x)
but is expected to have type
- forall {B : Type.{u1}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u2}) [_inst_3 : TopologicalSpace.{max u2 u1} (Bundle.TotalSpace.{u1, u2} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_5 : FiberBundle.{u1, u3, u2} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : B), Continuous.{u2, max u1 u2} (E x) (Bundle.TotalSpace.{u1, u2} B E) (_inst_4 x) _inst_3 (Bundle.totalSpaceMk.{u1, u2} B E x)
+ forall {B : Type.{u1}} (F : Type.{u3}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u3} F] (E : B -> Type.{u2}) [_inst_4 : TopologicalSpace.{max u2 u1} (Bundle.TotalSpace.{u1, u2} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_6 : FiberBundle.{u1, u3, u2} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (x : B), Continuous.{u2, max u1 u2} (E x) (Bundle.TotalSpace.{u1, u2} B E) (_inst_5 x) _inst_4 (Bundle.totalSpaceMk.{u1, u2} B E x)
Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMkₓ'. -/
theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
(totalSpaceMk_inducing F E x).Continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
+variable {E F}
+
+@[simp, mfld_simps]
+theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
+ x ∈ (trivializationAt F E x.proj).source :=
+ (Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
+#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
+
+@[simp, mfld_simps]
+theorem trivializationAt_proj_fst {x : TotalSpace E} :
+ ((trivializationAt F E x.proj) x).1 = x.proj :=
+ Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
+#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fst
+
+variable (F)
+
+open Trivialization
+
+/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
+theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
+ ContinuousWithinAt f s x₀ ↔
+ ContinuousWithinAt (fun x => (f x).proj) s x₀ ∧
+ ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ :=
+ by
+ refine' (and_iff_right_iff_imp.2 fun hf => _).symm.trans (and_congr_right fun hf => _)
+ · refine' (continuous_proj F E).ContinuousWithinAt.comp hf (maps_to_image f s)
+ have h1 : (fun x => (f x).proj) ⁻¹' (trivialization_at F E (f x₀).proj).baseSet ∈ 𝓝[s] x₀ :=
+ hf.preimage_mem_nhds_within ((open_base_set _).mem_nhds (mem_base_set_trivialization_at F E _))
+ have h2 : ContinuousWithinAt (fun x => (trivialization_at F E (f x₀).proj (f x)).1) s x₀ :=
+ by
+ refine'
+ hf.congr_of_eventually_eq (eventually_of_mem h1 fun x hx => _) trivialization_at_proj_fst
+ rw [coe_fst']
+ exact hx
+ rw [(trivialization_at F E (f x₀).proj).continuousWithinAt_iff_continuousWithinAt_comp_left]
+ · simp_rw [continuousWithinAt_prod_iff, Function.comp, Trivialization.coe_coe, h2, true_and_iff]
+ · apply mem_trivialization_at_proj_source
+ · rwa [source_eq, preimage_preimage]
+#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
+
+/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
+theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
+ ContinuousAt f x₀ ↔
+ ContinuousAt (fun x => (f x).proj) x₀ ∧
+ ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
+ by
+ simp_rw [← continuousWithinAt_univ]
+ exact continuous_within_at_total_space F f
+#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpace
+
end FiberBundle
variable (F E)
/- warning: fiber_bundle.exists_trivialization_Icc_subset -> FiberBundle.exists_trivialization_Icc_subset is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : ConditionallyCompleteLinearOrder.{u1} B] [_inst_6 : OrderTopology.{u1} B _inst_1 (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_5)))))] [_inst_7 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (a : B) (b : B), Exists.{max (succ u1) (succ u2) (succ (max u1 u3))} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (e : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) => HasSubset.Subset.{u1} (Set.{u1} B) (Set.hasSubset.{u1} B) (Set.Icc.{u1} B (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_5))))) a b) (Trivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_6 : ConditionallyCompleteLinearOrder.{u1} B] [_inst_7 : OrderTopology.{u1} B _inst_2 (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_6)))))] [_inst_8 : FiberBundle.{u1, u2, u3} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (a : B) (b : B), Exists.{max (succ u1) (succ u2) (succ (max u1 u3))} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (e : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E)) => HasSubset.Subset.{u1} (Set.{u1} B) (Set.hasSubset.{u1} B) (Set.Icc.{u1} B (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_6))))) a b) (Trivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
but is expected to have type
- forall {B : Type.{u3}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u3, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : ConditionallyCompleteLinearOrder.{u3} B] [_inst_6 : OrderTopology.{u3} B _inst_1 (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_5)))))] [_inst_7 : FiberBundle.{u3, u2, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (a : B) (b : B), Exists.{max (max (succ u3) (succ u2)) (succ u1)} (Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (fun (e : Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) => HasSubset.Subset.{u3} (Set.{u3} B) (Set.instHasSubsetSet.{u3} B) (Set.Icc.{u3} B (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_5))))) a b) (Trivialization.baseSet.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
+ forall {B : Type.{u3}} (F : Type.{u2}) [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (E : B -> Type.{u1}) [_inst_4 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u3, u1} B E)] [_inst_5 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_6 : ConditionallyCompleteLinearOrder.{u3} B] [_inst_7 : OrderTopology.{u3} B _inst_2 (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_6)))))] [_inst_8 : FiberBundle.{u3, u2, u1} B F _inst_2 _inst_3 E _inst_4 (fun (b : B) => _inst_5 b)] (a : B) (b : B), Exists.{max (max (succ u3) (succ u2)) (succ u1)} (Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E)) (fun (e : Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E)) => HasSubset.Subset.{u3} (Set.{u3} B) (Set.instHasSubsetSet.{u3} B) (Set.Icc.{u3} B (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_6))))) a b) (Trivialization.baseSet.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 _inst_4 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
Case conversion may be inaccurate. Consider using '#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subsetₓ'. -/
/-- If `E` is a fiber bundle over a conditionally complete linear order,
then it is trivial over any closed interval. -/
@@ -482,9 +532,9 @@ def proj : Z.TotalSpace → B :=
/- warning: fiber_bundle_core.triv_change -> FiberBundleCore.trivChange is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) -> ι -> ι -> (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) -> ι -> ι -> (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) -> ι -> ι -> (LocalHomeomorph.{max u3 u2, max u3 u2} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (instTopologicalSpaceProd.{u2, u3} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u2, u3} B F _inst_1 _inst_2))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) -> ι -> ι -> (LocalHomeomorph.{max u3 u2, max u3 u2} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (instTopologicalSpaceProd.{u2, u3} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u2, u3} B F _inst_2 _inst_3))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.triv_change FiberBundleCore.trivChangeₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -519,9 +569,9 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
/- warning: fiber_bundle_core.mem_triv_change_source -> FiberBundleCore.mem_trivChange_source is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (j : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i j)))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z j)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (j : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i j)))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z j)))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (j : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.source.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i j)))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z j)))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (j : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.source.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i j)))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z j)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivChange_source (i j : ι) (p : B × F) :
@@ -571,9 +621,9 @@ variable (i : ι)
/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_source -> FiberBundleCore.mem_localTrivAsLocalEquiv_source is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.baseSet.{u3, u2, u1} ι B _inst_1 F _inst_2 Z i))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.baseSet.{u3, u2, u1} ι B _inst_2 F _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_sourceₓ'. -/
theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
@@ -582,9 +632,9 @@ theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_target -> FiberBundleCore.mem_localTrivAsLocalEquiv_target is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_targetₓ'. -/
theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i :=
@@ -595,9 +645,9 @@ theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
/- warning: fiber_bundle_core.local_triv_as_local_equiv_apply -> FiberBundleCore.localTrivAsLocalEquiv_apply is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (LocalEquiv.toFun.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (LocalEquiv.toFun.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_applyₓ'. -/
theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
@@ -606,9 +656,9 @@ theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
/- warning: fiber_bundle_core.local_triv_as_local_equiv_trans -> FiberBundleCore.localTrivAsLocalEquiv_trans is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (j : ι), HasEquivₓ.Equiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (setoidHasEquiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (LocalEquiv.eqOnSourceSetoid.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F))) (LocalEquiv.trans.{max u2 u3, max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z j)) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i j))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (j : ι), HasEquivₓ.Equiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (setoidHasEquiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (LocalEquiv.eqOnSourceSetoid.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F))) (LocalEquiv.trans.{max u2 u3, max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z j)) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i j))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (j : ι), HasEquiv.Equiv.{max (max (succ u3) (succ u2)) (succ (max u3 u2)), 0} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (instHasEquiv.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (LocalEquiv.eqOnSourceSetoid.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F))) (LocalEquiv.trans.{max u3 u2, max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z j)) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i j))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (j : ι), HasEquiv.Equiv.{max (max (succ u3) (succ u2)) (succ (max u3 u2)), 0} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (instHasEquiv.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (LocalEquiv.eqOnSourceSetoid.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F))) (LocalEquiv.trans.{max u3 u2, max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z j)) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i j))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_transₓ'. -/
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
theorem localTrivAsLocalEquiv_trans (i j : ι) :
@@ -640,9 +690,9 @@ variable (b : B) (a : F)
/- warning: fiber_bundle_core.open_source' -> FiberBundleCore.open_source' is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), IsOpen.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), IsOpen.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), IsOpen.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), IsOpen.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.open_source' FiberBundleCore.open_source'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
@@ -714,9 +764,9 @@ def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
/- warning: fiber_bundle_core.local_triv_at_def -> FiberBundleCore.localTrivAt_def is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B), Eq.{max (succ u2) (succ u3) (succ (max u2 u3))} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z b)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B), Eq.{max (succ u2) (succ u3) (succ (max u2 u3))} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z b)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B), Eq.{max (succ u3) (succ u2)} (Trivialization.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_1 F _inst_2 Z b)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b)
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B), Eq.{max (succ u3) (succ u2)} (Trivialization.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_2 F _inst_3 Z b)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b)
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_defₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_def (b : B) : Z.localTriv (Z.indexAt b) = Z.localTrivAt b :=
@@ -725,9 +775,9 @@ theorem localTrivAt_def (b : B) : Z.localTriv (Z.indexAt b) = Z.localTrivAt b :=
/- warning: fiber_bundle_core.continuous_const_section -> FiberBundleCore.continuous_const_section is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) x (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z j))) -> (Eq.{succ u3} F (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i j x v) v)) -> (Continuous.{u2, max u2 u3} B (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) ((fun (this : B -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => this) (fun (x : B) => Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) x v)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) x (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z j))) -> (Eq.{succ u3} F (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i j x v) v)) -> (Continuous.{u2, max u2 u3} B (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) ((fun (this : B -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => this) (fun (x : B) => Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) x v)))
but is expected to have type
- forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_1 F _inst_2) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) x (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z j))) -> (Eq.{succ u1} F (FiberBundleCore.coordChange.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i j x v) v)) -> (Continuous.{u3, max u3 u1} B (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) ([mdata let_fun:1 (fun (this : B -> (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z)) => this) (fun (x : B) => Sigma.mk.{u3, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u2, u3, u1} ι B F _inst_1 _inst_2 Z x) x v)]))
+ forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_2 F _inst_3) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) x (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z j))) -> (Eq.{succ u1} F (FiberBundleCore.coordChange.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i j x v) v)) -> (Continuous.{u3, max u3 u1} B (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) ([mdata let_fun:1 (fun (this : B -> (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z)) => this) (fun (x : B) => Sigma.mk.{u3, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u2, u3, u1} ι B F _inst_2 _inst_3 Z x) x v)]))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_sectionₓ'. -/
/-- If an element of `F` is invariant under all coordinate changes, then one can define a
corresponding section of the fiber bundle, which is continuous. This applies in particular to the
@@ -752,9 +802,9 @@ theorem continuous_const_section (v : F)
/- warning: fiber_bundle_core.local_triv_as_local_equiv_coe -> FiberBundleCore.localTrivAsLocalEquiv_coe is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} ((FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} ((FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} ((FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) -> (Prod.{u3, u2} B F)) (LocalEquiv.toFun.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} ((FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) -> (Prod.{u3, u2} B F)) (LocalEquiv.toFun.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coeₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
@@ -763,9 +813,9 @@ theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv
/- warning: fiber_bundle_core.local_triv_as_local_equiv_source -> FiberBundleCore.localTrivAsLocalEquiv_source is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_sourceₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_source :
@@ -775,9 +825,9 @@ theorem localTrivAsLocalEquiv_source :
/- warning: fiber_bundle_core.local_triv_as_local_equiv_target -> FiberBundleCore.localTrivAsLocalEquiv_target is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} B F)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} B F)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_targetₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_target :
@@ -787,9 +837,9 @@ theorem localTrivAsLocalEquiv_target :
/- warning: fiber_bundle_core.local_triv_as_local_equiv_symm -> FiberBundleCore.localTrivAsLocalEquiv_symm is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι), Eq.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symmₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_symm :
@@ -799,9 +849,9 @@ theorem localTrivAsLocalEquiv_symm :
/- warning: fiber_bundle_core.base_set_at -> FiberBundleCore.baseSet_at is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ u2} (Set.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ u2} (Set.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))
but is expected to have type
- forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ u3} (Set.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i) (Trivialization.baseSet.{u3, u1, max u3 u1} B F (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u2, u3, u1} ι B F _inst_1 _inst_2 Z i))
+ forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_2 F _inst_3) (i : ι), Eq.{succ u3} (Set.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_2 F _inst_3 Z i) (Trivialization.baseSet.{u3, u1, max u3 u1} B F (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u2, u3, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u2, u3, u1} ι B F _inst_2 _inst_3 Z i))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_atₓ'. -/
@[simp, mfld_simps]
theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
@@ -810,9 +860,9 @@ theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
/- warning: fiber_bundle_core.local_triv_apply -> FiberBundleCore.localTriv_apply is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_2 F _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_apply (p : Z.TotalSpace) :
@@ -822,9 +872,9 @@ theorem localTriv_apply (p : Z.TotalSpace) :
/- warning: fiber_bundle_core.local_triv_at_apply -> FiberBundleCore.localTrivAt_apply is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p)) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p)) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_applyₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ :=
@@ -835,9 +885,9 @@ theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p
/- warning: fiber_bundle_core.local_triv_at_apply_mk -> FiberBundleCore.localTrivAt_apply_mk is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B) (a : F), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) b a)) (Prod.mk.{u2, u3} B F b a)
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B) (a : F), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) b a)) (Prod.mk.{u2, u3} B F b a)
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B) (a : F), Eq.{max (succ u3) (succ u2)} (Prod.{u3, u2} B F) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) b a)) (Prod.mk.{u3, u2} B F b a)
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B) (a : F), Eq.{max (succ u3) (succ u2)} (Prod.{u3, u2} B F) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) b a)) (Prod.mk.{u3, u2} B F b a)
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mkₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ = ⟨b, a⟩ :=
@@ -846,9 +896,9 @@ theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ =
/- warning: fiber_bundle_core.mem_local_triv_source -> FiberBundleCore.mem_localTriv_source is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i)))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_2 _inst_3 Z i)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_source (p : Z.TotalSpace) :
@@ -858,9 +908,9 @@ theorem mem_localTriv_source (p : Z.TotalSpace) :
/- warning: fiber_bundle_core.mem_local_triv_at_source -> FiberBundleCore.mem_localTrivAt_source is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)))
but is expected to have type
- forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (b : B), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z))) (Set.instMembershipSet.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z))) p (LocalEquiv.source.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z b))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z b)))
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_2 F _inst_3) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (b : B), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Set.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z))) (Set.instMembershipSet.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z))) p (LocalEquiv.source.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z b))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_2 _inst_3 Z b)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
@@ -870,9 +920,9 @@ theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
/- warning: fiber_bundle_core.mem_source_at -> FiberBundleCore.mem_source_at is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B) (a : F), Membership.Mem.{max u2 u3, max u2 u3} (Sigma.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x)) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) b a) (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B) (a : F), Membership.Mem.{max u2 u3, max u2 u3} (Sigma.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x)) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z))) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) b a) (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B) (a : F), Membership.mem.{max u3 u2, max u3 u2} (Sigma.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x)) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z))) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z))) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) b a) (LocalEquiv.source.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B) (a : F), Membership.mem.{max u3 u2, max u3 u2} (Sigma.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x)) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z))) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) b a) (LocalEquiv.source.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_atₓ'. -/
@[simp, mfld_simps]
theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source :=
@@ -883,9 +933,9 @@ theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source
/- warning: fiber_bundle_core.mem_local_triv_target -> FiberBundleCore.mem_localTriv_target is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i)))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_target (p : B × F) :
@@ -895,9 +945,9 @@ theorem mem_localTriv_target (p : B × F) :
/- warning: fiber_bundle_core.mem_local_triv_at_target -> FiberBundleCore.mem_localTrivAt_target is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : Prod.{u2, u3} B F) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (p : Prod.{u2, u3} B F) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b)))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (p : Prod.{u3, u2} B F) (b : B), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b)))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (p : Prod.{u3, u2} B F) (b : B), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_target (p : B × F) (b : B) :
@@ -907,9 +957,9 @@ theorem mem_localTrivAt_target (p : B × F) (b : B) :
/- warning: fiber_bundle_core.local_triv_symm_apply -> FiberBundleCore.localTriv_symm_apply is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Eq.{max (succ u2) (succ u3)} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (Prod.{u2, u3} B F) -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalHomeomorph.hasCoeToFun.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalHomeomorph.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) p) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Prod.fst.{u2, u3} B F p)) (Prod.fst.{u2, u3} B F p) (Prod.snd.{u2, u3} B F p)))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u2, u3} B F), Eq.{max (succ u2) (succ u3)} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (fun (_x : LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) => (Prod.{u2, u3} B F) -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalHomeomorph.hasCoeToFun.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (LocalHomeomorph.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_2 _inst_3 Z i))) p) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z x) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_2 F _inst_3 Z i (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_2 F _inst_3 Z (Prod.fst.{u2, u3} B F p)) (Prod.fst.{u2, u3} B F p) (Prod.snd.{u2, u3} B F p)))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Eq.{max (succ u3) (succ u2)} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalHomeomorph.toFun'.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalHomeomorph.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))) p) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.coordChange.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_1 F _inst_2 Z (Prod.fst.{u3, u2} B F p)) (Prod.fst.{u3, u2} B F p) (Prod.snd.{u3, u2} B F p)))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (i : ι) (p : Prod.{u3, u2} B F), Eq.{max (succ u3) (succ u2)} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalHomeomorph.toFun'.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (LocalHomeomorph.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_2 _inst_3 Z i))) p) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z x) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.coordChange.{u1, u3, u2} ι B _inst_2 F _inst_3 Z i (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_2 F _inst_3 Z (Prod.fst.{u3, u2} B F p)) (Prod.fst.{u3, u2} B F p) (Prod.snd.{u3, u2} B F p)))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
@@ -919,9 +969,9 @@ theorem localTriv_symm_apply (p : B × F) :
/- warning: fiber_bundle_core.mem_local_triv_at_base_set -> FiberBundleCore.mem_localTrivAt_baseSet is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B), Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) b (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3) (b : B), Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) b (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_2 _inst_3 Z b))
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B), Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3) (b : B), Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) _inst_2 _inst_3 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_2 _inst_3 Z b))
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet :=
@@ -995,9 +1045,9 @@ instance fiberBundle : FiberBundle F Z.Fiber
/- warning: fiber_bundle_core.continuous_proj -> FiberBundleCore.continuous_proj is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2), Continuous.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3), Continuous.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2), Continuous.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3), Continuous.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is continuous -/
theorem continuous_proj : Continuous Z.proj :=
@@ -1006,9 +1056,9 @@ theorem continuous_proj : Continuous Z.proj :=
/- warning: fiber_bundle_core.is_open_map_proj -> FiberBundleCore.isOpenMap_proj is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2), IsOpenMap.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_2 F _inst_3), IsOpenMap.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_2 _inst_3 Z)
but is expected to have type
- forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2), IsOpenMap.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_2 F _inst_3), IsOpenMap.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_2 _inst_3 Z) _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_2 _inst_3 Z)
Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.is_open_map_proj FiberBundleCore.isOpenMap_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is an open map -/
theorem isOpenMap_proj : IsOpenMap Z.proj :=
@@ -1054,9 +1104,9 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E
/- warning: fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas -> FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) {e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)}, (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) e (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_1 _inst_2 a)) -> (ContinuousOn.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e))) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) {e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)}, (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) e (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_2 _inst_3 a)) -> (ContinuousOn.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))
but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) {e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)}, (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) e (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_1 _inst_2 a)) -> (ContinuousOn.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_1 _inst_2 a) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e))) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) {e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)}, (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) e (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_2 _inst_3 a)) -> (ContinuousOn.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_2 _inst_3 a) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlasₓ'. -/
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
@@ -1069,9 +1119,9 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
/- warning: fiber_prebundle.is_open_source -> FiberPrebundle.isOpen_source is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)), IsOpen.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)), IsOpen.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)), IsOpen.{max u3 u1} (Bundle.TotalSpace.{u3, u1} B E) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_1 _inst_2 a) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)), IsOpen.{max u3 u1} (Bundle.TotalSpace.{u3, u1} B E) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_2 _inst_3 a) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_sourceₓ'. -/
theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTopology] e.source :=
by
@@ -1086,9 +1136,9 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTop
/- warning: fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter -> FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (e' : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)), (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_1 _inst_2 a)) -> (IsOpen.{max u1 u2} (Prod.{u1, u2} B F) (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) (Inter.inter.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} B F)) (Set.hasInter.{max u1 u2} (Prod.{u1, u2} B F)) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e')) (Set.preimage.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e'))) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (e' : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)), (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_2 _inst_3 a)) -> (IsOpen.{max u1 u2} (Prod.{u1, u2} B F) (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) (Inter.inter.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} B F)) (Set.hasInter.{max u1 u2} (Prod.{u1, u2} B F)) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e')) (Set.preimage.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e'))) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))))
but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (e' : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)), (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_1 _inst_2 a)) -> (IsOpen.{max u3 u2} (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Inter.inter.{max u3 u2} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instInterSet.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e')) (Set.preimage.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e'))) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))))
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_2 _inst_3) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (e' : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)), (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_2 _inst_3 a)) -> (IsOpen.{max u3 u2} (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_2 _inst_3) (Inter.inter.{max u3 u2} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instInterSet.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e')) (Set.preimage.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e'))) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_interₓ'. -/
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
(he' : e' ∈ a.pretrivializationAtlas) :
@@ -1134,9 +1184,9 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
/- warning: fiber_prebundle.mem_trivialization_at_source -> FiberPrebundle.mem_pretrivializationAt_source is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B) (x : E b), Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B (fun (b : B) => E b)) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Bundle.totalSpaceMk.{u1, u3} B (fun (b : B) => E b) b x) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b)))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B) (x : E b), Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B (fun (b : B) => E b)) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Bundle.totalSpaceMk.{u1, u3} B (fun (b : B) => E b) b x) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b)))
but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B) (x : E b), Membership.mem.{max u3 u2, max u2 u3} (Bundle.TotalSpace.{u2, u3} B E) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Set.instMembershipSet.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Bundle.totalSpaceMk.{u2, u3} B E b x) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_1 _inst_2 a b)))
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B) (x : E b), Membership.mem.{max u3 u2, max u2 u3} (Bundle.TotalSpace.{u2, u3} B E) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Set.instMembershipSet.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Bundle.totalSpaceMk.{u2, u3} B E b x) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_2 _inst_3 a b)))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_sourceₓ'. -/
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
@@ -1147,9 +1197,9 @@ theorem mem_pretrivializationAt_source (b : B) (x : E b) :
/- warning: fiber_prebundle.total_space_mk_preimage_source -> FiberPrebundle.totalSpaceMk_preimage_source is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (Bundle.totalSpaceMk.{u1, u3} B E b) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b)))) (Set.univ.{u3} (E b))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (Bundle.totalSpaceMk.{u1, u3} B E b) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b)))) (Set.univ.{u3} (E b))
but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (Bundle.totalSpaceMk.{u2, u3} B E b) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_1 _inst_2 a b)))) (Set.univ.{u3} (E b))
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (Bundle.totalSpaceMk.{u2, u3} B E b) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_2 _inst_3 a b)))) (Set.univ.{u3} (E b))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_sourceₓ'. -/
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
@@ -1171,9 +1221,9 @@ def fiberTopology (b : B) : TopologicalSpace (E b) :=
/- warning: fiber_prebundle.inducing_total_space_mk -> FiberPrebundle.inducing_totalSpaceMk is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Inducing.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Inducing.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Inducing.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Inducing.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMkₓ'. -/
@[continuity]
theorem inducing_totalSpaceMk (b : B) :
@@ -1186,9 +1236,9 @@ theorem inducing_totalSpaceMk (b : B) :
/- warning: fiber_prebundle.continuous_total_space_mk -> FiberPrebundle.continuous_totalSpaceMk is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Continuous.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) (b : B), Continuous.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
but is expected to have type
- forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Continuous.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u2} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_2 _inst_3) (b : B), Continuous.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_2 _inst_3 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMkₓ'. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
@@ -1221,9 +1271,9 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
/- warning: fiber_prebundle.continuous_proj -> FiberPrebundle.continuous_proj is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2), Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3), Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)
but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_1 _inst_2), Continuous.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_1 _inst_2 a) _inst_1 (Bundle.TotalSpace.proj.{u3, u2} B E)
+ forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_2 _inst_3), Continuous.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_2 _inst_3 a) _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E)
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_projₓ'. -/
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
@@ -1235,9 +1285,9 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
/- warning: fiber_prebundle.continuous_on_of_comp_right -> FiberPrebundle.continuousOn_of_comp_right is a dubious translation:
lean 3 declaration is
- forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) {X : Type.{u4}} [_inst_3 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u1, u3} B E) -> X} {s : Set.{u1} B}, (IsOpen.{u1} B _inst_1 s) -> (forall (b : B), (Membership.Mem.{u1, u1} B (Set.{u1} B) (Set.hasMem.{u1} B) b s) -> (ContinuousOn.{max u1 u2, u4} (Prod.{u1, u2} B F) X (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) _inst_3 (Function.comp.{succ (max u1 u2), max (succ u1) (succ u3), succ u4} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) X f (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b))))) (Set.prod.{u1, u2} B F (Inter.inter.{u1} (Set.{u1} B) (Set.hasInter.{u1} B) s (Pretrivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b))) (Set.univ.{u2} F)))) -> (ContinuousOn.{max u1 u3, u4} (Bundle.TotalSpace.{u1, u3} B E) X (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) _inst_3 f (Set.preimage.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) s))
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_2 : TopologicalSpace.{u1} B] [_inst_3 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_2 _inst_3) {X : Type.{u4}} [_inst_4 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u1, u3} B E) -> X} {s : Set.{u1} B}, (IsOpen.{u1} B _inst_2 s) -> (forall (b : B), (Membership.Mem.{u1, u1} B (Set.{u1} B) (Set.hasMem.{u1} B) b s) -> (ContinuousOn.{max u1 u2, u4} (Prod.{u1, u2} B F) X (Prod.topologicalSpace.{u1, u2} B F _inst_2 _inst_3) _inst_4 (Function.comp.{succ (max u1 u2), max (succ u1) (succ u3), succ u4} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) X f (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b))))) (Set.prod.{u1, u2} B F (Inter.inter.{u1} (Set.{u1} B) (Set.hasInter.{u1} B) s (Pretrivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_2 _inst_3 a b))) (Set.univ.{u2} F)))) -> (ContinuousOn.{max u1 u3, u4} (Bundle.TotalSpace.{u1, u3} B E) X (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_2 _inst_3 a) _inst_4 f (Set.preimage.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) s))
but is expected to have type
- forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_1 _inst_2) {X : Type.{u4}} [_inst_3 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u3, u2} B E) -> X} {s : Set.{u3} B}, (IsOpen.{u3} B _inst_1 s) -> (forall (b : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b s) -> (ContinuousOn.{max u3 u1, u4} (Prod.{u3, u1} B F) X (instTopologicalSpaceProd.{u3, u1} B F _inst_1 _inst_2) _inst_3 (Function.comp.{succ (max u3 u1), max (succ u3) (succ u2), succ u4} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) X f (LocalEquiv.toFun.{max u3 u1, max u3 u2} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) (LocalEquiv.symm.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (Pretrivialization.toLocalEquiv.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_1 _inst_2 a b))))) (Set.prod.{u3, u1} B F (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) s (Pretrivialization.baseSet.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_1 _inst_2 a b))) (Set.univ.{u1} F)))) -> (ContinuousOn.{max u3 u2, u4} (Bundle.TotalSpace.{u3, u2} B E) X (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_1 _inst_2 a) _inst_3 f (Set.preimage.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (Bundle.TotalSpace.proj.{u3, u2} B E) s))
+ forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_2 : TopologicalSpace.{u3} B] [_inst_3 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_2 _inst_3) {X : Type.{u4}} [_inst_4 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u3, u2} B E) -> X} {s : Set.{u3} B}, (IsOpen.{u3} B _inst_2 s) -> (forall (b : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b s) -> (ContinuousOn.{max u3 u1, u4} (Prod.{u3, u1} B F) X (instTopologicalSpaceProd.{u3, u1} B F _inst_2 _inst_3) _inst_4 (Function.comp.{succ (max u3 u1), max (succ u3) (succ u2), succ u4} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) X f (LocalEquiv.toFun.{max u3 u1, max u3 u2} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) (LocalEquiv.symm.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (Pretrivialization.toLocalEquiv.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_2 _inst_3 a b))))) (Set.prod.{u3, u1} B F (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) s (Pretrivialization.baseSet.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_2 _inst_3 a b))) (Set.univ.{u1} F)))) -> (ContinuousOn.{max u3 u2, u4} (Bundle.TotalSpace.{u3, u2} B E) X (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_2 _inst_3 a) _inst_4 f (Set.preimage.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (Bundle.TotalSpace.proj.{u3, u2} B E) s))
Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_on_of_comp_right FiberPrebundle.continuousOn_of_comp_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
+! leanprover-community/mathlib commit 8ef6f08ff8c781c5c07a8b12843710e1a0d8a688
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Topology.FiberBundle.Trivialization
/-!
# Fiber bundles
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Mathematically, a (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on
`B` for which the fibers are all homeomorphic to `F`, such that the local situation around each
point is a direct product.
mathlib commit https://github.com/leanprover-community/mathlib/commit/dd6388c44e6f6b4547070b887c5905d5cfe6c9f8
@@ -187,6 +187,7 @@ section FiberBundle
variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
[TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
+#print FiberBundle /-
/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`totalSpaceMk_inducing] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`trivializationAtlas] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`trivializationAt] [] -/
@@ -202,11 +203,13 @@ class FiberBundle where
mem_baseSet_trivializationAt : ∀ b : B, b ∈ (trivialization_at b).baseSet
trivialization_mem_atlas : ∀ b : B, trivialization_at b ∈ trivialization_atlas
#align fiber_bundle FiberBundle
+-/
export FiberBundle ()
variable {F E}
+#print MemTrivializationAtlas /-
/-- Given a type `E` equipped with a fiber bundle structure, this is a `Prop` typeclass
for trivializations of `E`, expressing that a trivialization is in the designated atlas for the
bundle. This is needed because lemmas about the linearity of trivializations or the continuity (as
@@ -216,6 +219,7 @@ expected to hold for trivializations in the designated atlas. -/
class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π E)) : Prop where
out : e ∈ trivializationAtlas F E
#align mem_trivialization_atlas MemTrivializationAtlas
+-/
instance [FiberBundle F E] (b : B) : MemTrivializationAtlas (trivializationAt F E b)
where out := trivialization_mem_atlas F E b
@@ -224,6 +228,12 @@ namespace FiberBundle
variable (F) {E} [FiberBundle F E]
+/- warning: fiber_bundle.map_proj_nhds -> FiberBundle.map_proj_nhds is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] {E : B -> Type.{u3}} [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : Bundle.TotalSpace.{u1, u3} B E), Eq.{succ u1} (Filter.{u1} B) (Filter.map.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) (nhds.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) _inst_3 x)) (nhds.{u1} B _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E x))
+but is expected to have type
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] {E : B -> Type.{u1}} [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : Bundle.TotalSpace.{u2, u1} B E), Eq.{succ u2} (Filter.{u2} B) (Filter.map.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E) (nhds.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B E) _inst_3 x)) (nhds.{u2} B _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E x))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhdsₓ'. -/
theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
(trivializationAt F E x.proj).mem_source.2 <| mem_baseSet_trivializationAt F E x.proj
@@ -231,17 +241,35 @@ theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
variable (E)
+/- warning: fiber_bundle.continuous_proj -> FiberBundle.continuous_proj is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+but is expected to have type
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], Continuous.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_proj FiberBundle.continuous_projₓ'. -/
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
theorem continuous_proj : Continuous (π E) :=
continuous_iff_continuousAt.2 fun x => (map_proj_nhds F x).le
#align fiber_bundle.continuous_proj FiberBundle.continuous_proj
+/- warning: fiber_bundle.is_open_map_proj -> FiberBundle.isOpenMap_proj is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], IsOpenMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+but is expected to have type
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)], IsOpenMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_projₓ'. -/
/-- The projection from a fiber bundle to its base is an open map. -/
theorem isOpenMap_proj : IsOpenMap (π E) :=
IsOpenMap.of_nhds_le fun x => (map_proj_nhds F x).ge
#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_proj
+/- warning: fiber_bundle.surjective_proj -> FiberBundle.surjective_proj is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u2} F], Function.Surjective.{max (succ u1) (succ u3), succ u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E)
+but is expected to have type
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u3} F], Function.Surjective.{max (succ u2) (succ u1), succ u2} (Bundle.TotalSpace.{u2, u1} B E) B (Bundle.TotalSpace.proj.{u2, u1} B E)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.surjective_proj FiberBundle.surjective_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
@@ -250,12 +278,24 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
⟨p, hpb⟩
#align fiber_bundle.surjective_proj FiberBundle.surjective_proj
+/- warning: fiber_bundle.quotient_map_proj -> FiberBundle.quotientMap_proj is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u2} F], QuotientMap.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+but is expected to have type
+ forall {B : Type.{u2}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u2} (Bundle.TotalSpace.{u2, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : FiberBundle.{u2, u3, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] [_inst_6 : Nonempty.{succ u3} F], QuotientMap.{max u2 u1, u2} (Bundle.TotalSpace.{u2, u1} B E) B _inst_3 _inst_1 (Bundle.TotalSpace.proj.{u2, u1} B E)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_projₓ'. -/
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
(isOpenMap_proj F E).to_quotientMap (continuous_proj F E) (surjective_proj F E)
#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_proj
+/- warning: fiber_bundle.continuous_total_space_mk -> FiberBundle.continuous_totalSpaceMk is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : B), Continuous.{u3, max u1 u3} (E x) (Bundle.TotalSpace.{u1, u3} B E) (_inst_4 x) _inst_3 (Bundle.totalSpaceMk.{u1, u3} B E x)
+but is expected to have type
+ forall {B : Type.{u1}} (F : Type.{u3}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u3} F] (E : B -> Type.{u2}) [_inst_3 : TopologicalSpace.{max u2 u1} (Bundle.TotalSpace.{u1, u2} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u2} (E b)] [_inst_5 : FiberBundle.{u1, u3, u2} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (x : B), Continuous.{u2, max u1 u2} (E x) (Bundle.TotalSpace.{u1, u2} B E) (_inst_4 x) _inst_3 (Bundle.totalSpaceMk.{u1, u2} B E x)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMkₓ'. -/
theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
(totalSpaceMk_inducing F E x).Continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
@@ -264,6 +304,12 @@ end FiberBundle
variable (F E)
+/- warning: fiber_bundle.exists_trivialization_Icc_subset -> FiberBundle.exists_trivialization_Icc_subset is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u3}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u3} (E b)] [_inst_5 : ConditionallyCompleteLinearOrder.{u1} B] [_inst_6 : OrderTopology.{u1} B _inst_1 (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_5)))))] [_inst_7 : FiberBundle.{u1, u2, u3} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (a : B) (b : B), Exists.{max (succ u1) (succ u2) (succ (max u1 u3))} (Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) (fun (e : Trivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E)) => HasSubset.Subset.{u1} (Set.{u1} B) (Set.hasSubset.{u1} B) (Set.Icc.{u1} B (PartialOrder.toPreorder.{u1} B (SemilatticeInf.toPartialOrder.{u1} B (Lattice.toSemilatticeInf.{u1} B (ConditionallyCompleteLattice.toLattice.{u1} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u1} B _inst_5))))) a b) (Trivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
+but is expected to have type
+ forall {B : Type.{u3}} (F : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (E : B -> Type.{u1}) [_inst_3 : TopologicalSpace.{max u1 u3} (Bundle.TotalSpace.{u3, u1} B E)] [_inst_4 : forall (b : B), TopologicalSpace.{u1} (E b)] [_inst_5 : ConditionallyCompleteLinearOrder.{u3} B] [_inst_6 : OrderTopology.{u3} B _inst_1 (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_5)))))] [_inst_7 : FiberBundle.{u3, u2, u1} B F _inst_1 _inst_2 E _inst_3 (fun (b : B) => _inst_4 b)] (a : B) (b : B), Exists.{max (max (succ u3) (succ u2)) (succ u1)} (Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) (fun (e : Trivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E)) => HasSubset.Subset.{u3} (Set.{u3} B) (Set.instHasSubsetSet.{u3} B) (Set.Icc.{u3} B (PartialOrder.toPreorder.{u3} B (SemilatticeInf.toPartialOrder.{u3} B (Lattice.toSemilatticeInf.{u3} B (ConditionallyCompleteLattice.toLattice.{u3} B (ConditionallyCompleteLinearOrder.toConditionallyCompleteLattice.{u3} B _inst_5))))) a b) (Trivialization.baseSet.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 _inst_3 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subsetₓ'. -/
/-- If `E` is a fiber bundle over a conditionally complete linear order,
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
@@ -342,6 +388,7 @@ end FiberBundle
/-! ### Core construction for constructing fiber bundles -/
+#print FiberBundleCore /-
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- Core data defining a locally trivial bundle with fiber `F` over a topological
space `B`. Note that "bundle" is used in its mathematical sense. This is the (computer science)
@@ -368,6 +415,7 @@ structure FiberBundleCore (ι : Type _) (B : Type _) [TopologicalSpace B] (F : T
∀ x ∈ base_set i ∩ base_set j ∩ base_set k,
∀ v, (coord_change j k x) (coord_change i j x v) = coord_change i k x v
#align fiber_bundle_core FiberBundleCore
+-/
namespace FiberBundleCore
@@ -375,34 +423,43 @@ variable [TopologicalSpace B] [TopologicalSpace F] (Z : FiberBundleCore ι B F)
include Z
+#print FiberBundleCore.Index /-
/-- The index set of a fiber bundle core, as a convenience function for dot notation -/
@[nolint unused_arguments has_nonempty_instance]
def Index :=
ι
#align fiber_bundle_core.index FiberBundleCore.Index
+-/
+#print FiberBundleCore.Base /-
/-- The base space of a fiber bundle core, as a convenience function for dot notation -/
@[nolint unused_arguments, reducible]
def Base :=
B
#align fiber_bundle_core.base FiberBundleCore.Base
+-/
+#print FiberBundleCore.Fiber /-
/-- The fiber of a fiber bundle core, as a convenience function for dot notation and
typeclass inference -/
@[nolint unused_arguments has_nonempty_instance]
def Fiber (x : B) :=
F
#align fiber_bundle_core.fiber FiberBundleCore.Fiber
+-/
section FiberInstances
attribute [local reducible] fiber
+#print FiberBundleCore.topologicalSpaceFiber /-
instance topologicalSpaceFiber (x : B) : TopologicalSpace (Z.Fiber x) := by infer_instance
#align fiber_bundle_core.topological_space_fiber FiberBundleCore.topologicalSpaceFiber
+-/
end FiberInstances
+#print FiberBundleCore.TotalSpace /-
/-- The total space of the fiber bundle, as a convenience function for dot notation.
It is by definition equal to `bundle.total_space Z.fiber`, a.k.a. `Σ x, Z.fiber x` but with a
different name for typeclass inference. -/
@@ -410,13 +467,22 @@ different name for typeclass inference. -/
def TotalSpace :=
Bundle.TotalSpace Z.Fiber
#align fiber_bundle_core.total_space FiberBundleCore.TotalSpace
+-/
+#print FiberBundleCore.proj /-
/-- The projection from the total space of a fiber bundle core, on its base. -/
@[reducible, simp, mfld_simps]
def proj : Z.TotalSpace → B :=
Bundle.TotalSpace.proj
#align fiber_bundle_core.proj FiberBundleCore.proj
+-/
+/- warning: fiber_bundle_core.triv_change -> FiberBundleCore.trivChange is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) -> ι -> ι -> (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F], (FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) -> ι -> ι -> (LocalHomeomorph.{max u3 u2, max u3 u2} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (instTopologicalSpaceProd.{u2, u3} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u2, u3} B F _inst_1 _inst_2))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.triv_change FiberBundleCore.trivChangeₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- Local homeomorphism version of the trivialization change. -/
@@ -448,6 +514,12 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F)
ContinuousOn.prod continuous_fst.continuous_on (Z.continuous_on_coord_change j i)
#align fiber_bundle_core.triv_change FiberBundleCore.trivChange
+/- warning: fiber_bundle_core.mem_triv_change_source -> FiberBundleCore.mem_trivChange_source is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (j : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i j)))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z j)))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (j : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.source.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i j)))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z j)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_trivChange_source (i j : ι) (p : B × F) :
p ∈ (Z.trivChange i j).source ↔ p.1 ∈ Z.baseSet i ∩ Z.baseSet j :=
@@ -457,6 +529,7 @@ theorem mem_trivChange_source (i j : ι) (p : B × F) :
#align fiber_bundle_core.mem_triv_change_source FiberBundleCore.mem_trivChange_source
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FiberBundleCore.localTrivAsLocalEquiv /-
/-- Associate to a trivialization index `i : ι` the corresponding trivialization, i.e., a bijection
between `proj ⁻¹ (base_set i)` and `base_set i × F`. As the fiber above `x` is `F` but read in the
chart with index `index_at x`, the trivialization in the fiber above x is by definition the
@@ -489,14 +562,27 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F)
· exact hx
· simp only [hx, mem_inter_iff, and_self_iff, mem_base_set_at]
#align fiber_bundle_core.local_triv_as_local_equiv FiberBundleCore.localTrivAsLocalEquiv
+-/
variable (i : ι)
+/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_source -> FiberBundleCore.mem_localTrivAsLocalEquiv_source is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.baseSet.{u3, u2, u1} ι B _inst_1 F _inst_2 Z i))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_sourceₓ'. -/
theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
+/- warning: fiber_bundle_core.mem_local_triv_as_local_equiv_target -> FiberBundleCore.mem_localTrivAsLocalEquiv_target is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.baseSet.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_targetₓ'. -/
theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i :=
by
@@ -504,11 +590,23 @@ theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
simp only [and_true_iff, mem_univ]
#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_apply -> FiberBundleCore.localTrivAsLocalEquiv_apply is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (LocalEquiv.toFun.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_applyₓ'. -/
theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
(Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_trans -> FiberBundleCore.localTrivAsLocalEquiv_trans is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (j : ι), HasEquivₓ.Equiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (setoidHasEquiv.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F)) (LocalEquiv.eqOnSourceSetoid.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F))) (LocalEquiv.trans.{max u2 u3, max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z j)) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Prod.{u2, u3} B F) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i j))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (j : ι), HasEquiv.Equiv.{max (max (succ u3) (succ u2)) (succ (max u3 u2)), 0} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (instHasEquiv.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F)) (LocalEquiv.eqOnSourceSetoid.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F))) (LocalEquiv.trans.{max u3 u2, max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z j)) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.trivChange.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i j))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_transₓ'. -/
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
theorem localTrivAsLocalEquiv_trans (i j : ι) :
(Z.localTrivAsLocalEquiv i).symm.trans (Z.localTrivAsLocalEquiv j) ≈
@@ -526,15 +624,23 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
simp only [Z.coord_change_comp, hx, mem_inter_iff, and_self_iff, mem_base_set_at]
#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
+#print FiberBundleCore.toTopologicalSpace /-
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
TopologicalSpace.generateFrom <|
⋃ (i : ι) (s : Set (B × F)) (s_open : IsOpen s), {(Z i).source ∩ Z i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
+-/
variable (b : B) (a : F)
+/- warning: fiber_bundle_core.open_source' -> FiberBundleCore.open_source' is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), IsOpen.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), IsOpen.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.open_source' FiberBundleCore.open_source'ₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
by
@@ -546,6 +652,7 @@ theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source :=
mem_local_triv_as_local_equiv_source, and_true_iff, mem_univ, mem_preimage]
#align fiber_bundle_core.open_source' FiberBundleCore.open_source'
+#print FiberBundleCore.localTriv /-
/-- Extended version of the local trivialization of a fiber bundle constructed from core,
registering additionally in its type that it is a local bundle trivialization. -/
def localTriv (i : ι) : Trivialization F Z.proj
@@ -592,18 +699,33 @@ def localTriv (i : ι) : Trivialization F Z.proj
rfl
toLocalEquiv := Z.localTrivAsLocalEquiv i
#align fiber_bundle_core.local_triv FiberBundleCore.localTriv
+-/
+#print FiberBundleCore.localTrivAt /-
/-- Preferred local trivialization of a fiber bundle constructed from core, at a given point, as
a bundle trivialization -/
def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
Z.localTriv (Z.indexAt b)
#align fiber_bundle_core.local_triv_at FiberBundleCore.localTrivAt
+-/
+/- warning: fiber_bundle_core.local_triv_at_def -> FiberBundleCore.localTrivAt_def is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B), Eq.{max (succ u2) (succ u3) (succ (max u2 u3))} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z b)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B), Eq.{max (succ u3) (succ u2)} (Trivialization.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_1 F _inst_2 Z b)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_defₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_def (b : B) : Z.localTriv (Z.indexAt b) = Z.localTrivAt b :=
rfl
#align fiber_bundle_core.local_triv_at_def FiberBundleCore.localTrivAt_def
+/- warning: fiber_bundle_core.continuous_const_section -> FiberBundleCore.continuous_const_section is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) x (Inter.inter.{u2} (Set.{u2} B) (Set.hasInter.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z j))) -> (Eq.{succ u3} F (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i j x v) v)) -> (Continuous.{u2, max u2 u3} B (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) ((fun (this : B -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => this) (fun (x : B) => Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) x v)))
+but is expected to have type
+ forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_1 F _inst_2) (v : F), (forall (i : ι) (j : ι) (x : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) x (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z j))) -> (Eq.{succ u1} F (FiberBundleCore.coordChange.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i j x v) v)) -> (Continuous.{u3, max u3 u1} B (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) ([mdata let_fun:1 (fun (this : B -> (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z)) => this) (fun (x : B) => Sigma.mk.{u3, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u2, u3, u1} ι B F _inst_1 _inst_2 Z x) x v)]))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_sectionₓ'. -/
/-- If an element of `F` is invariant under all coordinate changes, then one can define a
corresponding section of the fiber bundle, which is continuous. This applies in particular to the
zero section of a vector bundle. Another example (not yet defined) would be the identity
@@ -625,40 +747,82 @@ theorem continuous_const_section (v : F)
· exact A
#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_section
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_coe -> FiberBundleCore.localTrivAsLocalEquiv_coe is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} ((FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (fun (_x : LocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (LocalEquiv.hasCoeToFun.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F)) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} ((FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) -> (Prod.{u3, u2} B F)) (LocalEquiv.toFun.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coeₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coe
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_source -> FiberBundleCore.localTrivAsLocalEquiv_source is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.source.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_sourceₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_source :
(Z.localTrivAsLocalEquiv i).source = (Z.localTriv i).source :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_source
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_target -> FiberBundleCore.localTrivAsLocalEquiv_target is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (Set.{max u2 u3} (Prod.{u2, u3} B F)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_targetₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_target :
(Z.localTrivAsLocalEquiv i).target = (Z.localTriv i).target :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_target
+/- warning: fiber_bundle_core.local_triv_as_local_equiv_symm -> FiberBundleCore.localTrivAsLocalEquiv_symm is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ (max u2 u3)} (LocalEquiv.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι), Eq.{max (succ u3) (succ u2)} (LocalEquiv.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.localTrivAsLocalEquiv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)) (LocalEquiv.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symmₓ'. -/
@[simp, mfld_simps]
theorem localTrivAsLocalEquiv_symm :
(Z.localTrivAsLocalEquiv i).symm = (Z.localTriv i).toLocalEquiv.symm :=
rfl
#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symm
+/- warning: fiber_bundle_core.base_set_at -> FiberBundleCore.baseSet_at is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ u2} (Set.{u2} B) (FiberBundleCore.baseSet.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))
+but is expected to have type
+ forall {ι : Type.{u2}} {B : Type.{u3}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u2, u3, u1} ι B _inst_1 F _inst_2) (i : ι), Eq.{succ u3} (Set.{u3} B) (FiberBundleCore.baseSet.{u2, u3, u1} ι B _inst_1 F _inst_2 Z i) (Trivialization.baseSet.{u3, u1, max u3 u1} B F (FiberBundleCore.TotalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u2, u3, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u2, u3, u1} ι B F _inst_1 _inst_2 Z i))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_atₓ'. -/
@[simp, mfld_simps]
theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
rfl
#align fiber_bundle_core.base_set_at FiberBundleCore.baseSet_at
+/- warning: fiber_bundle_core.local_triv_apply -> FiberBundleCore.localTriv_apply is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (FiberBundleCore.coordChange.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (FiberBundleCore.indexAt.{u3, u2, u1} ι B _inst_1 F _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) i (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_apply (p : Z.TotalSpace) :
(Z.localTriv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_apply FiberBundleCore.localTriv_apply
+/- warning: fiber_bundle_core.local_triv_at_apply -> FiberBundleCore.localTrivAt_apply is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p)) p) (Prod.mk.{u2, u3} B F (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} B F) (Trivialization.toFun'.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p)) p) (Prod.mk.{u2, u1} B F (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Sigma.snd.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_applyₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p.2⟩ :=
by
@@ -666,23 +830,47 @@ theorem localTrivAt_apply (p : Z.TotalSpace) : (Z.localTrivAt p.1) p = ⟨p.1, p
exact Z.mem_base_set_at p.1
#align fiber_bundle_core.local_triv_at_apply FiberBundleCore.localTrivAt_apply
+/- warning: fiber_bundle_core.local_triv_at_apply_mk -> FiberBundleCore.localTrivAt_apply_mk is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B) (a : F), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} B F) (coeFn.{max (succ u2) (succ u3) (succ (max u2 u3)), max (succ (max u2 u3)) (succ u2) (succ u3)} (Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (fun (_x : Trivialization.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) => (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) -> (Prod.{u2, u3} B F)) (Trivialization.hasCoeToFun.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) b a)) (Prod.mk.{u2, u3} B F b a)
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B) (a : F), Eq.{max (succ u3) (succ u2)} (Prod.{u3, u2} B F) (Trivialization.toFun'.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) b a)) (Prod.mk.{u3, u2} B F b a)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mkₓ'. -/
@[simp, mfld_simps]
theorem localTrivAt_apply_mk (b : B) (a : F) : (Z.localTrivAt b) ⟨b, a⟩ = ⟨b, a⟩ :=
Z.localTrivAt_apply _
#align fiber_bundle_core.local_triv_at_apply_mk FiberBundleCore.localTrivAt_apply_mk
+/- warning: fiber_bundle_core.mem_local_triv_source -> FiberBundleCore.mem_localTriv_source is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Set.hasMem.{max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (i : ι) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Set.instMembershipSet.{max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) p (LocalEquiv.source.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u3, u2, u1} ι B F _inst_1 _inst_2 Z i)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_source (p : Z.TotalSpace) :
p ∈ (Z.localTriv i).source ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_source FiberBundleCore.mem_localTriv_source
+/- warning: fiber_bundle_core.mem_local_triv_at_source -> FiberBundleCore.mem_localTrivAt_source is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) p (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Sigma.fst.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)))
+but is expected to have type
+ forall {ι : Type.{u3}} {B : Type.{u2}} {F : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (Z : FiberBundleCore.{u3, u2, u1} ι B _inst_1 F _inst_2) (p : FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (b : B), Iff (Membership.mem.{max u2 u1, max u2 u1} (FiberBundleCore.TotalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Set.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z))) (Set.instMembershipSet.{max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z))) p (LocalEquiv.source.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u1} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u1, max u2 u1} (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u1} B F) (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u2, u1} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z b))))) (Membership.mem.{u2, u2} B (Set.{u2} B) (Set.instMembershipSet.{u2} B) (Sigma.fst.{u2, u1} B (fun (x : B) => FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z x) p) (Trivialization.baseSet.{u2, u1, max u2 u1} B F (Bundle.TotalSpace.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u3, u2, u1} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u1} B (FiberBundleCore.Fiber.{u3, u2, u1} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u3, u2, u1} ι B F _inst_1 _inst_2 Z b)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_sourceₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
p ∈ (Z.localTrivAt b).source ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
+/- warning: fiber_bundle_core.mem_source_at -> FiberBundleCore.mem_source_at is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B) (a : F), Membership.Mem.{max u2 u3, max u2 u3} (Sigma.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x)) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Set.hasMem.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z))) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) b a) (LocalEquiv.source.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B) (a : F), Membership.mem.{max u3 u2, max u3 u2} (Sigma.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x)) (Set.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z))) (Set.instMembershipSet.{max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z))) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) b a) (LocalEquiv.source.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_atₓ'. -/
@[simp, mfld_simps]
theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source :=
by
@@ -690,24 +878,48 @@ theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source
exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
+/- warning: fiber_bundle_core.mem_local_triv_target -> FiberBundleCore.mem_localTriv_target is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTriv_target (p : B × F) :
p ∈ (Z.localTriv i).target ↔ p.1 ∈ (Z.localTriv i).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_target FiberBundleCore.mem_localTriv_target
+/- warning: fiber_bundle_core.mem_local_triv_at_target -> FiberBundleCore.mem_localTrivAt_target is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (p : Prod.{u2, u3} B F) (b : B), Iff (Membership.Mem.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (Set.{max u2 u3} (Prod.{u2, u3} B F)) (Set.hasMem.{max u2 u3} (Prod.{u2, u3} B F)) p (LocalEquiv.target.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (LocalHomeomorph.toLocalEquiv.{max u2 u3, max u2 u3} (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))))) (Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) (Prod.fst.{u2, u3} B F p) (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b)))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (p : Prod.{u3, u2} B F) (b : B), Iff (Membership.mem.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instMembershipSet.{max u3 u2} (Prod.{u3, u2} B F)) p (LocalEquiv.target.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (LocalHomeomorph.toLocalEquiv.{max u3 u2, max u3 u2} (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))))) (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) (Prod.fst.{u3, u2} B F p) (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_targetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_target (p : B × F) (b : B) :
p ∈ (Z.localTrivAt b).target ↔ p.1 ∈ (Z.localTrivAt b).baseSet :=
Trivialization.mem_target _
#align fiber_bundle_core.mem_local_triv_at_target FiberBundleCore.mem_localTrivAt_target
+/- warning: fiber_bundle_core.local_triv_symm_apply -> FiberBundleCore.localTriv_symm_apply is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u2, u3} B F), Eq.{max (succ u2) (succ u3)} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (coeFn.{succ (max u2 u3), succ (max u2 u3)} (LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (fun (_x : LocalHomeomorph.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) => (Prod.{u2, u3} B F) -> (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalHomeomorph.hasCoeToFun.{max u2 u3, max u2 u3} (Prod.{u2, u3} B F) (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (LocalHomeomorph.symm.{max u2 u3, max u2 u3} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.{u2, u3} B F) (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Prod.topologicalSpace.{u2, u3} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u2, u3, max u2 u3} B F (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u2, u3} ι B F _inst_1 _inst_2 Z i))) p) (Sigma.mk.{u2, u3} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z x) (Prod.fst.{u2, u3} B F p) (FiberBundleCore.coordChange.{u1, u2, u3} ι B _inst_1 F _inst_2 Z i (FiberBundleCore.indexAt.{u1, u2, u3} ι B _inst_1 F _inst_2 Z (Prod.fst.{u2, u3} B F p)) (Prod.fst.{u2, u3} B F p) (Prod.snd.{u2, u3} B F p)))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (i : ι) (p : Prod.{u3, u2} B F), Eq.{max (succ u3) (succ u2)} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalHomeomorph.toFun'.{max u3 u2, max u3 u2} (Prod.{u3, u2} B F) (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (LocalHomeomorph.symm.{max u3 u2, max u3 u2} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Prod.{u3, u2} B F) (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Trivialization.toLocalHomeomorph.{u3, u2, max u3 u2} B F (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (FiberBundleCore.localTriv.{u1, u3, u2} ι B F _inst_1 _inst_2 Z i))) p) (Sigma.mk.{u3, u2} B (fun (x : B) => FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z x) (Prod.fst.{u3, u2} B F p) (FiberBundleCore.coordChange.{u1, u3, u2} ι B _inst_1 F _inst_2 Z i (FiberBundleCore.indexAt.{u1, u3, u2} ι B _inst_1 F _inst_2 Z (Prod.fst.{u3, u2} B F p)) (Prod.fst.{u3, u2} B F p) (Prod.snd.{u3, u2} B F p)))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_applyₓ'. -/
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
(Z.localTriv i).toLocalHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_apply
+/- warning: fiber_bundle_core.mem_local_triv_at_base_set -> FiberBundleCore.mem_localTrivAt_baseSet is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2) (b : B), Membership.Mem.{u2, u2} B (Set.{u2} B) (Set.hasMem.{u2} B) b (Trivialization.baseSet.{u2, u3, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u2, u3} B (FiberBundleCore.Fiber.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u2, u3} ι B F _inst_1 _inst_2 Z b))
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2) (b : B), Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b (Trivialization.baseSet.{u3, u2, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) _inst_1 _inst_2 (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) (Bundle.TotalSpace.proj.{u3, u2} B (FiberBundleCore.Fiber.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)) (FiberBundleCore.localTrivAt.{u1, u3, u2} ι B F _inst_1 _inst_2 Z b))
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSetₓ'. -/
@[simp, mfld_simps]
theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet :=
by
@@ -715,6 +927,7 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet :=
exact Z.mem_base_set_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
+#print FiberBundleCore.continuous_totalSpaceMk /-
/-- The inclusion of a fiber into the total space is a continuous map. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
@@ -745,8 +958,10 @@ theorem continuous_totalSpaceMk (b : B) :
preimage_empty, empty_inter]
exact isOpen_empty
#align fiber_bundle_core.continuous_total_space_mk FiberBundleCore.continuous_totalSpaceMk
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FiberBundleCore.fiberBundle /-
/-- A fiber bundle constructed from core is indeed a fiber bundle. -/
instance fiberBundle : FiberBundle F Z.Fiber
where
@@ -773,12 +988,25 @@ instance fiberBundle : FiberBundle F Z.Fiber
mem_baseSet_trivializationAt := Z.mem_baseSet_at
trivialization_mem_atlas b := ⟨Z.indexAt b, rfl⟩
#align fiber_bundle_core.fiber_bundle FiberBundleCore.fiberBundle
+-/
+/- warning: fiber_bundle_core.continuous_proj -> FiberBundleCore.continuous_proj is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2), Continuous.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2), Continuous.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is continuous -/
theorem continuous_proj : Continuous Z.proj :=
continuous_proj F Z.Fiber
#align fiber_bundle_core.continuous_proj FiberBundleCore.continuous_proj
+/- warning: fiber_bundle_core.is_open_map_proj -> FiberBundleCore.isOpenMap_proj is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {B : Type.{u2}} {F : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u3} F] (Z : FiberBundleCore.{u1, u2, u3} ι B _inst_1 F _inst_2), IsOpenMap.{max u2 u3, u2} (FiberBundleCore.TotalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u2, u3} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u2, u3} ι B F _inst_1 _inst_2 Z)
+but is expected to have type
+ forall {ι : Type.{u1}} {B : Type.{u3}} {F : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (Z : FiberBundleCore.{u1, u3, u2} ι B _inst_1 F _inst_2), IsOpenMap.{max u3 u2, u3} (FiberBundleCore.TotalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) B (FiberBundleCore.toTopologicalSpace.{u1, u3, u2} ι B F _inst_1 _inst_2 Z) _inst_1 (FiberBundleCore.proj.{u1, u3, u2} ι B F _inst_1 _inst_2 Z)
+Case conversion may be inaccurate. Consider using '#align fiber_bundle_core.is_open_map_proj FiberBundleCore.isOpenMap_projₓ'. -/
/-- The projection on the base of a fiber bundle created from core is an open map -/
theorem isOpenMap_proj : IsOpenMap Z.proj :=
isOpenMap_proj F Z.Fiber
@@ -791,6 +1019,7 @@ end FiberBundleCore
variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
+#print FiberPrebundle /-
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
@@ -806,17 +1035,26 @@ structure FiberPrebundle where
∀ (e) (_ : e ∈ pretrivialization_atlas) (e') (_ : e' ∈ pretrivialization_atlas),
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
#align fiber_prebundle FiberPrebundle
+-/
namespace FiberPrebundle
variable {F E} (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
+#print FiberPrebundle.totalSpaceTopology /-
/-- Topology on the total space that will make the prebundle into a bundle. -/
def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
⨆ (e : Pretrivialization F (π E)) (he : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm Subtype.topologicalSpace
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
+-/
+/- warning: fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas -> FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) {e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)}, (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) e (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_1 _inst_2 a)) -> (ContinuousOn.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e))) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) {e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)}, (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) e (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_1 _inst_2 a)) -> (ContinuousOn.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_1 _inst_2 a) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e))) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlasₓ'. -/
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target :=
by
@@ -826,6 +1064,12 @@ theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializ
exact le_supᵢ₂ e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
+/- warning: fiber_prebundle.is_open_source -> FiberPrebundle.isOpen_source is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)), IsOpen.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e))
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)), IsOpen.{max u3 u1} (Bundle.TotalSpace.{u3, u1} B E) (FiberPrebundle.totalSpaceTopology.{u3, u2, u1} B F E _inst_1 _inst_2 a) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_sourceₓ'. -/
theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTopology] e.source :=
by
letI := a.total_space_topology
@@ -837,6 +1081,12 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : is_open[a.totalSpaceTop
Pretrivialization.preimage_symm_proj_inter]
#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_source
+/- warning: fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter -> FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (e : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (e' : Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)), (Membership.Mem.{max u1 u2 u1 u3, max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E)) (Set.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) (Set.hasMem.{max u1 u2 u1 u3} (Pretrivialization.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u1, u2, u3} B F E _inst_1 _inst_2 a)) -> (IsOpen.{max u1 u2} (Prod.{u1, u2} B F) (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) (Inter.inter.{max u1 u2} (Set.{max u1 u2} (Prod.{u1, u2} B F)) (Set.hasInter.{max u1 u2} (Prod.{u1, u2} B F)) (LocalEquiv.target.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e')) (Set.preimage.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e'))) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) e)))))
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u2}} {E : B -> Type.{u1}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u3, u2, u1} B F E _inst_1 _inst_2) (e : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (e' : Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)), (Membership.mem.{max (max u3 u2) u1, max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E)) (Set.{max (max (max u3 u1) u2) u3} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) (Set.instMembershipSet.{max (max u3 u2) u1} (Pretrivialization.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E))) e' (FiberPrebundle.pretrivializationAtlas.{u3, u2, u1} B F E _inst_1 _inst_2 a)) -> (IsOpen.{max u3 u2} (Prod.{u3, u2} B F) (instTopologicalSpaceProd.{u3, u2} B F _inst_1 _inst_2) (Inter.inter.{max u3 u2} (Set.{max u3 u2} (Prod.{u3, u2} B F)) (Set.instInterSet.{max u3 u2} (Prod.{u3, u2} B F)) (LocalEquiv.target.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e')) (Set.preimage.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.toFun.{max u3 u2, max u3 u1} (Prod.{u3, u2} B F) (Bundle.TotalSpace.{u3, u1} B E) (LocalEquiv.symm.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e'))) (LocalEquiv.source.{max u3 u1, max u3 u2} (Bundle.TotalSpace.{u3, u1} B E) (Prod.{u3, u2} B F) (Pretrivialization.toLocalEquiv.{u3, u2, max u3 u1} B F (Bundle.TotalSpace.{u3, u1} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u1} B E) e)))))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_interₓ'. -/
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
(he' : e' ∈ a.pretrivializationAtlas) :
IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) :=
@@ -849,6 +1099,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
exact hu1.inter e'.open_target
#align fiber_prebundle.is_open_target_of_mem_pretrivialization_atlas_inter FiberPrebundle.isOpen_target_of_mem_pretrivializationAtlas_inter
+#print FiberPrebundle.trivializationOfMemPretrivializationAtlas /-
/-- Promotion from a `pretrivialization` to a `trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
@@ -876,14 +1127,27 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
exact hu1.inter (a.is_open_target_of_mem_pretrivialization_atlas_inter e e' he')
continuous_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
+-/
-theorem mem_trivialization_at_source (b : B) (x : E b) :
+/- warning: fiber_prebundle.mem_trivialization_at_source -> FiberPrebundle.mem_pretrivializationAt_source is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B) (x : E b), Membership.Mem.{max u1 u3, max u1 u3} (Bundle.TotalSpace.{u1, u3} B (fun (b : B) => E b)) (Set.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Set.hasMem.{max u1 u3} (Bundle.TotalSpace.{u1, u3} B E)) (Bundle.totalSpaceMk.{u1, u3} B (fun (b : B) => E b) b x) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b)))
+but is expected to have type
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B) (x : E b), Membership.mem.{max u3 u2, max u2 u3} (Bundle.TotalSpace.{u2, u3} B E) (Set.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Set.instMembershipSet.{max u2 u3} (Bundle.TotalSpace.{u2, u3} B E)) (Bundle.totalSpaceMk.{u2, u3} B E b x) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_1 _inst_2 a b)))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_sourceₓ'. -/
+theorem mem_pretrivializationAt_source (b : B) (x : E b) :
totalSpaceMk b x ∈ (a.pretrivializationAt b).source :=
by
simp only [(a.pretrivialization_at b).source_eq, mem_preimage, total_space.proj]
exact a.mem_base_pretrivialization_at b
-#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_trivialization_at_source
-
+#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_source
+
+/- warning: fiber_prebundle.total_space_mk_preimage_source -> FiberPrebundle.totalSpaceMk_preimage_source is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (Bundle.totalSpaceMk.{u1, u3} B E b) (LocalEquiv.source.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b)))) (Set.univ.{u3} (E b))
+but is expected to have type
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Eq.{succ u3} (Set.{u3} (E b)) (Set.preimage.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (Bundle.totalSpaceMk.{u2, u3} B E b) (LocalEquiv.source.{max u2 u3, max u2 u1} (Bundle.TotalSpace.{u2, u3} B E) (Prod.{u2, u1} B F) (Pretrivialization.toLocalEquiv.{u2, u1, max u2 u3} B F (Bundle.TotalSpace.{u2, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u2, u3} B E) (FiberPrebundle.pretrivializationAt.{u2, u1, u3} B F E _inst_1 _inst_2 a b)))) (Set.univ.{u3} (E b))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_sourceₓ'. -/
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
totalSpaceMk b ⁻¹' (a.pretrivializationAt b).source = univ :=
@@ -895,11 +1159,19 @@ theorem totalSpaceMk_preimage_source (b : B) :
exact a.mem_base_pretrivialization_at b
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
+#print FiberPrebundle.fiberTopology /-
/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
def fiberTopology (b : B) : TopologicalSpace (E b) :=
TopologicalSpace.induced (totalSpaceMk b) a.totalSpaceTopology
#align fiber_prebundle.fiber_topology FiberPrebundle.fiberTopology
+-/
+/- warning: fiber_prebundle.inducing_total_space_mk -> FiberPrebundle.inducing_totalSpaceMk is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Inducing.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
+but is expected to have type
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Inducing.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMkₓ'. -/
@[continuity]
theorem inducing_totalSpaceMk (b : B) :
@Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) :=
@@ -909,6 +1181,12 @@ theorem inducing_totalSpaceMk (b : B) :
exact ⟨rfl⟩
#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMk
+/- warning: fiber_prebundle.continuous_total_space_mk -> FiberPrebundle.continuous_totalSpaceMk is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) (b : B), Continuous.{u3, max u1 u3} (E b) (Bundle.TotalSpace.{u1, u3} B E) (FiberPrebundle.fiberTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u1, u3} B E b)
+but is expected to have type
+ forall {B : Type.{u2}} {F : Type.{u1}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u2} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u2, u1, u3} B F E _inst_1 _inst_2) (b : B), Continuous.{u3, max u2 u3} (E b) (Bundle.TotalSpace.{u2, u3} B E) (FiberPrebundle.fiberTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a b) (FiberPrebundle.totalSpaceTopology.{u2, u1, u3} B F E _inst_1 _inst_2 a) (Bundle.totalSpaceMk.{u2, u3} B E b)
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMkₓ'. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
@Continuous _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) :=
@@ -917,6 +1195,7 @@ theorem continuous_totalSpaceMk (b : B) :
exact (a.inducing_total_space_mk b).Continuous
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
+#print FiberPrebundle.toFiberBundle /-
/-- Make a `fiber_bundle` from a `fiber_prebundle`. Concretely this means
that, given a `fiber_prebundle` structure for a sigma-type `E` -- which consists of a
number of "pretrivializations" identifying parts of `E` with product spaces `U × F` -- one
@@ -935,7 +1214,14 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
mem_baseSet_trivializationAt := a.mem_base_pretrivializationAt
trivialization_mem_atlas x := ⟨_, a.pretrivialization_mem_atlas x, rfl⟩
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
+-/
+/- warning: fiber_prebundle.continuous_proj -> FiberPrebundle.continuous_proj is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2), Continuous.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) _inst_1 (Bundle.TotalSpace.proj.{u1, u3} B E)
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_1 _inst_2), Continuous.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_1 _inst_2 a) _inst_1 (Bundle.TotalSpace.proj.{u3, u2} B E)
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_projₓ'. -/
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
by
letI := a.total_space_topology
@@ -944,6 +1230,12 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) :=
exact continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
+/- warning: fiber_prebundle.continuous_on_of_comp_right -> FiberPrebundle.continuousOn_of_comp_right is a dubious translation:
+lean 3 declaration is
+ forall {B : Type.{u1}} {F : Type.{u2}} {E : B -> Type.{u3}} [_inst_1 : TopologicalSpace.{u1} B] [_inst_2 : TopologicalSpace.{u2} F] (a : FiberPrebundle.{u1, u2, u3} B F E _inst_1 _inst_2) {X : Type.{u4}} [_inst_3 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u1, u3} B E) -> X} {s : Set.{u1} B}, (IsOpen.{u1} B _inst_1 s) -> (forall (b : B), (Membership.Mem.{u1, u1} B (Set.{u1} B) (Set.hasMem.{u1} B) b s) -> (ContinuousOn.{max u1 u2, u4} (Prod.{u1, u2} B F) X (Prod.topologicalSpace.{u1, u2} B F _inst_1 _inst_2) _inst_3 (Function.comp.{succ (max u1 u2), max (succ u1) (succ u3), succ u4} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E) X f (coeFn.{max (succ (max u1 u2)) (succ (max u1 u3)), max (succ (max u1 u2)) (succ (max u1 u3))} (LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (fun (_x : LocalEquiv.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) => (Prod.{u1, u2} B F) -> (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.hasCoeToFun.{max u1 u2, max u1 u3} (Prod.{u1, u2} B F) (Bundle.TotalSpace.{u1, u3} B E)) (LocalEquiv.symm.{max u1 u3, max u1 u2} (Bundle.TotalSpace.{u1, u3} B E) (Prod.{u1, u2} B F) (Pretrivialization.toLocalEquiv.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b))))) (Set.prod.{u1, u2} B F (Inter.inter.{u1} (Set.{u1} B) (Set.hasInter.{u1} B) s (Pretrivialization.baseSet.{u1, u2, max u1 u3} B F (Bundle.TotalSpace.{u1, u3} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u1, u3} B E) (FiberPrebundle.pretrivializationAt.{u1, u2, u3} B F E _inst_1 _inst_2 a b))) (Set.univ.{u2} F)))) -> (ContinuousOn.{max u1 u3, u4} (Bundle.TotalSpace.{u1, u3} B E) X (FiberPrebundle.totalSpaceTopology.{u1, u2, u3} B F E _inst_1 _inst_2 a) _inst_3 f (Set.preimage.{max u1 u3, u1} (Bundle.TotalSpace.{u1, u3} B E) B (Bundle.TotalSpace.proj.{u1, u3} B E) s))
+but is expected to have type
+ forall {B : Type.{u3}} {F : Type.{u1}} {E : B -> Type.{u2}} [_inst_1 : TopologicalSpace.{u3} B] [_inst_2 : TopologicalSpace.{u1} F] (a : FiberPrebundle.{u3, u1, u2} B F E _inst_1 _inst_2) {X : Type.{u4}} [_inst_3 : TopologicalSpace.{u4} X] {f : (Bundle.TotalSpace.{u3, u2} B E) -> X} {s : Set.{u3} B}, (IsOpen.{u3} B _inst_1 s) -> (forall (b : B), (Membership.mem.{u3, u3} B (Set.{u3} B) (Set.instMembershipSet.{u3} B) b s) -> (ContinuousOn.{max u3 u1, u4} (Prod.{u3, u1} B F) X (instTopologicalSpaceProd.{u3, u1} B F _inst_1 _inst_2) _inst_3 (Function.comp.{succ (max u3 u1), max (succ u3) (succ u2), succ u4} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) X f (LocalEquiv.toFun.{max u3 u1, max u3 u2} (Prod.{u3, u1} B F) (Bundle.TotalSpace.{u3, u2} B E) (LocalEquiv.symm.{max u3 u2, max u3 u1} (Bundle.TotalSpace.{u3, u2} B E) (Prod.{u3, u1} B F) (Pretrivialization.toLocalEquiv.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_1 _inst_2 a b))))) (Set.prod.{u3, u1} B F (Inter.inter.{u3} (Set.{u3} B) (Set.instInterSet.{u3} B) s (Pretrivialization.baseSet.{u3, u1, max u3 u2} B F (Bundle.TotalSpace.{u3, u2} B E) _inst_1 _inst_2 (Bundle.TotalSpace.proj.{u3, u2} B E) (FiberPrebundle.pretrivializationAt.{u3, u1, u2} B F E _inst_1 _inst_2 a b))) (Set.univ.{u1} F)))) -> (ContinuousOn.{max u3 u2, u4} (Bundle.TotalSpace.{u3, u2} B E) X (FiberPrebundle.totalSpaceTopology.{u3, u1, u2} B F E _inst_1 _inst_2 a) _inst_3 f (Set.preimage.{max u3 u2, u3} (Bundle.TotalSpace.{u3, u2} B E) B (Bundle.TotalSpace.proj.{u3, u2} B E) s))
+Case conversion may be inaccurate. Consider using '#align fiber_prebundle.continuous_on_of_comp_right FiberPrebundle.continuousOn_of_comp_rightₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- For a fiber bundle `E` over `B` constructed using the `fiber_prebundle` mechanism,
continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit bcfa726826abd57587355b4b5b7e78ad6527b7e4
+! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -85,24 +85,24 @@ typeclass containing data)?
In their initial mathlib implementations, both fiber and vector bundles were defined
propositionally. For vector bundles, this turns out to be mathematically wrong: in infinite
dimension, the transition function between two trivializations is not automatically continuous as a
-map from the base `B` to the endomorphisms `F →L[R] F` of the fibre (considered with the
+map from the base `B` to the endomorphisms `F →L[R] F` of the fiber (considered with the
operator-norm topology), and so the definition needs to be modified by restricting consideration to
a family of trivializations (constituting the data) which are all mutually-compatible in this sense.
The PRs #13052 and #13175 implemented this change.
There is still the choice about whether to hold this data at the level of fiber bundles or of vector
bundles. As of PR #17505, the data is all held in `fiber_bundle`, with `vector_bundle` a
-(propositional) mixin stating fibrewise-linearity.
+(propositional) mixin stating fiberwise-linearity.
This allows bundles to carry instances of typeclasses in which the scalar field, `R`, does not
-appear as a parameter. Notably, we would like a vector bundle over `R` with fibre `F` over base `B`
+appear as a parameter. Notably, we would like a vector bundle over `R` with fiber `F` over base `B`
to be a `charted_space (B × F)`, with the trivializations providing the charts. This would be a
dangerous instance for typeclass inference, because `R` does not appear as a parameter in
`charted_space (B × F)`. But if the data of the trivializations is held in `fiber_bundle`, then a
-fibre bundle with fibre `F` over base `B` can be a `charted_space (B × F)`, and this is safe for
+fiber bundle with fiber `F` over base `B` can be a `charted_space (B × F)`, and this is safe for
typeclass inference.
-We expect that this choice of definition will also streamline constructions of fibre bundles with
+We expect that this choice of definition will also streamline constructions of fiber bundles with
similar underlying structure (e.g., the same bundle being both a real and complex vector bundle).
### Core construction
@@ -210,7 +210,7 @@ variable {F E}
/-- Given a type `E` equipped with a fiber bundle structure, this is a `Prop` typeclass
for trivializations of `E`, expressing that a trivialization is in the designated atlas for the
bundle. This is needed because lemmas about the linearity of trivializations or the continuity (as
-functions to `F →L[R] F`, where `F` is the model fibre) of the transition functions are only
+functions to `F →L[R] F`, where `F` is the model fiber) of the transition functions are only
expected to hold for trivializations in the designated atlas. -/
@[mk_iff]
class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π E)) : Prop where
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -791,7 +791,7 @@ end FiberBundleCore
variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (e e' «expr ∈ » pretrivialization_atlas) -/
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the local equivalences
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -393,7 +393,7 @@ Trivialization changes from `i` to `j` are given by continuous maps `coordChange
`baseSet i ∩ baseSet j` to the set of homeomorphisms of `F`, but we express them as maps
`B → F → F` and require continuity on `(baseSet i ∩ baseSet j) × F` to avoid the topology on the
space of continuous maps on `F`. -/
--- Porting note: was @[nolint has_nonempty_instance]
+-- Porting note(#5171): was @[nolint has_nonempty_instance]
structure FiberBundleCore (ι : Type*) (B : Type*) [TopologicalSpace B] (F : Type*)
[TopologicalSpace F] where
baseSet : ι → Set B
@@ -413,7 +413,7 @@ namespace FiberBundleCore
variable [TopologicalSpace B] [TopologicalSpace F] (Z : FiberBundleCore ι B F)
/-- The index set of a fiber bundle core, as a convenience function for dot notation -/
-@[nolint unusedArguments] -- Porting note: was has_nonempty_instance
+@[nolint unusedArguments] -- Porting note(#5171): was has_nonempty_instance
def Index (_Z : FiberBundleCore ι B F) := ι
#align fiber_bundle_core.index FiberBundleCore.Index
@@ -424,7 +424,7 @@ def Base (_Z : FiberBundleCore ι B F) := B
/-- The fiber of a fiber bundle core, as a convenience function for dot notation and
typeclass inference -/
-@[nolint unusedArguments] -- Porting note: was has_nonempty_instance
+@[nolint unusedArguments] -- Porting note(#5171): was has_nonempty_instance
def Fiber (_ : FiberBundleCore ι B F) (_x : B) := F
#align fiber_bundle_core.fiber FiberBundleCore.Fiber
@@ -762,7 +762,7 @@ variable (F) (E : B → Type*) [TopologicalSpace B] [TopologicalSpace F]
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the partial equivalences
are also partial homeomorphisms and hence local trivializations. -/
--- Porting note (#11215): TODO: was @[nolint has_nonempty_instance]
+-- Porting note (#5171): was @[nolint has_nonempty_instance]
structure FiberPrebundle where
pretrivializationAtlas : Set (Pretrivialization F (π F E))
pretrivializationAt : B → Pretrivialization F (π F E)
This splits up the file Mathlib/Topology/Order/Basic.lean
(currently > 2000 lines) into several smaller files.
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
-/
import Mathlib.Topology.FiberBundle.Trivialization
+import Mathlib.Topology.Order.LeftRightNhds
#align_import topology.fiber_bundle.basic from "leanprover-community/mathlib"@"e473c3198bb41f68560cab68a0529c854b618833"
@@ -711,7 +711,7 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
exact Z.mem_baseSet_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
--- Porting note: was @[simp, mfld_simps], now `simp` can prove it
+-- Porting note (#10618): was @[simp, mfld_simps], now `simp` can prove it
theorem mk_mem_localTrivAt_source : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
simp only [mfld_simps]
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_localTrivAt_source
@@ -761,7 +761,7 @@ variable (F) (E : B → Type*) [TopologicalSpace B] [TopologicalSpace F]
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the partial equivalences
are also partial homeomorphisms and hence local trivializations. -/
--- Porting note: todo: was @[nolint has_nonempty_instance]
+-- Porting note (#11215): TODO: was @[nolint has_nonempty_instance]
structure FiberPrebundle where
pretrivializationAtlas : Set (Pretrivialization F (π F E))
pretrivializationAt : B → Pretrivialization F (π F E)
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -282,7 +282,7 @@ theorem mem_trivializationAt_proj_source {x : TotalSpace F E} :
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
--- porting note: removed `@[simp, mfld_simps]` because `simp` could already prove this
+-- Porting note: removed `@[simp, mfld_simps]` because `simp` could already prove this
theorem trivializationAt_proj_fst {x : TotalSpace F E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
@@ -392,7 +392,7 @@ Trivialization changes from `i` to `j` are given by continuous maps `coordChange
`baseSet i ∩ baseSet j` to the set of homeomorphisms of `F`, but we express them as maps
`B → F → F` and require continuity on `(baseSet i ∩ baseSet j) × F` to avoid the topology on the
space of continuous maps on `F`. -/
--- porting note: was @[nolint has_nonempty_instance]
+-- Porting note: was @[nolint has_nonempty_instance]
structure FiberBundleCore (ι : Type*) (B : Type*) [TopologicalSpace B] (F : Type*)
[TopologicalSpace F] where
baseSet : ι → Set B
@@ -412,7 +412,7 @@ namespace FiberBundleCore
variable [TopologicalSpace B] [TopologicalSpace F] (Z : FiberBundleCore ι B F)
/-- The index set of a fiber bundle core, as a convenience function for dot notation -/
-@[nolint unusedArguments] -- porting note: was has_nonempty_instance
+@[nolint unusedArguments] -- Porting note: was has_nonempty_instance
def Index (_Z : FiberBundleCore ι B F) := ι
#align fiber_bundle_core.index FiberBundleCore.Index
@@ -423,7 +423,7 @@ def Base (_Z : FiberBundleCore ι B F) := B
/-- The fiber of a fiber bundle core, as a convenience function for dot notation and
typeclass inference -/
-@[nolint unusedArguments] -- porting note: was has_nonempty_instance
+@[nolint unusedArguments] -- Porting note: was has_nonempty_instance
def Fiber (_ : FiberBundleCore ι B F) (_x : B) := F
#align fiber_bundle_core.fiber FiberBundleCore.Fiber
@@ -711,7 +711,7 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
exact Z.mem_baseSet_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
--- porting note: was @[simp, mfld_simps], now `simp` can prove it
+-- Porting note: was @[simp, mfld_simps], now `simp` can prove it
theorem mk_mem_localTrivAt_source : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
simp only [mfld_simps]
#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_localTrivAt_source
@@ -761,7 +761,7 @@ variable (F) (E : B → Type*) [TopologicalSpace B] [TopologicalSpace F]
equivalences but there is not yet a topology on the total space. The total space is hence given a
topology in such a way that there is a fiber bundle structure for which the partial equivalences
are also partial homeomorphisms and hence local trivializations. -/
--- porting note: todo: was @[nolint has_nonempty_instance]
+-- Porting note: todo: was @[nolint has_nonempty_instance]
structure FiberPrebundle where
pretrivializationAtlas : Set (Pretrivialization F (π F E))
pretrivializationAt : B → Pretrivialization F (π F E)
@@ -591,7 +591,7 @@ def localTriv (i : ι) : Trivialization F Z.proj where
exact (continuousOn_open_iff (Z.trivChange i j).open_source).1
(Z.trivChange i j).continuousOn _ s_open
convert this using 1
- dsimp [PartialEquiv.trans_source]
+ dsimp [f, PartialEquiv.trans_source]
rw [← preimage_comp, inter_assoc]
toPartialEquiv := Z.localTrivAsPartialEquiv i
#align fiber_bundle_core.local_triv FiberBundleCore.localTriv
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -347,7 +347,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
`proj` over `[a, d]`. Then we can glue `ead` and `ec` into a trivialization over `[a, c]`. -/
obtain ⟨d, ⟨hdab, ead, had⟩, hd⟩ : ∃ d ∈ s, d ∈ Ioc c' c := hsc.exists_between hc'.2
refine' ⟨ead.piecewiseLe ec d (had ⟨hdab.1, le_rfl⟩) (hc'e hd), subset_ite.2 _⟩
- refine' ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
+ exact ⟨fun x hx => had ⟨hx.1.1, hx.2⟩, fun x hx => hc'e ⟨hd.1.trans (not_le.1 hx.2), hx.1.2⟩⟩
/- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
@@ -216,7 +216,7 @@ for trivializations of `E`, expressing that a trivialization is in the designate
bundle. This is needed because lemmas about the linearity of trivializations or the continuity (as
functions to `F →L[R] F`, where `F` is the model fiber) of the transition functions are only
expected to hold for trivializations in the designated atlas. -/
-@[mk_iff memTrivializationAtlas_iff]
+@[mk_iff]
class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π F E)) : Prop where
out : e ∈ trivializationAtlas F E
#align mem_trivialization_atlas MemTrivializationAtlas
@@ -39,7 +39,7 @@ an implementation of this construction: starting from an object of type
fiber bundle and projection.
Similarly we implement the object `FiberPrebundle` which allows to define a topological
-fiber bundle from trivializations given as local equivalences with minimum additional properties.
+fiber bundle from trivializations given as partial equivalences with minimum additional properties.
## Main definitions
@@ -64,7 +64,7 @@ Let `Z : FiberBundleCore ι B F`. Then we define
open set in `B`.
* `FiberPrebundle F E` : structure registering a cover of prebundle trivializations
- and requiring that the relative transition maps are local homeomorphisms.
+ and requiring that the relative transition maps are partial homeomorphisms.
* `FiberPrebundle.totalSpaceTopology a` : natural topology of the total space, making
the prebundle into a bundle.
@@ -481,7 +481,7 @@ theorem mem_trivChange_source (i j : ι) (p : B × F) :
between `proj ⁻¹ (baseSet i)` and `baseSet i × F`. As the fiber above `x` is `F` but read in the
chart with index `index_at x`, the trivialization in the fiber above x is by definition the
coordinate change from i to `index_at x`, so it depends on `x`.
-The local trivialization will ultimately be a local homeomorphism. For now, we only introduce the
+The local trivialization will ultimately be a partial homeomorphism. For now, we only introduce the
partial equivalence version, denoted with a prime.
In further developments, avoid this auxiliary version, and use `Z.local_triv` instead. -/
def localTrivAsPartialEquiv (i : ι) : PartialEquiv Z.TotalSpace (B × F) where
@@ -759,8 +759,8 @@ variable (F) (E : B → Type*) [TopologicalSpace B] [TopologicalSpace F]
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
-topology in such a way that there is a fiber bundle structure for which the local equivalences
-are also local homeomorphism and hence local trivializations. -/
+topology in such a way that there is a fiber bundle structure for which the partial equivalences
+are also partial homeomorphisms and hence local trivializations. -/
-- porting note: todo: was @[nolint has_nonempty_instance]
structure FiberPrebundle where
pretrivializationAtlas : Set (Pretrivialization F (π F E))
cases'
(#9171)
I literally went through and regex'd some uses of cases'
, replacing them with rcases
; this is meant to be a low effort PR as I hope that tools can do this in the future.
rcases
is an easier replacement than cases
, though with better tools we could in future do a second pass converting simple rcases
added here (and existing ones) to cases
.
@@ -333,7 +333,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
have hsc : IsLUB s c := isLUB_csSup sne sbd
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
obtain ⟨-, ec : Trivialization F (π F E), hec : Icc a c ⊆ ec.baseSet⟩ : c ∈ s := by
- cases' hc.1.eq_or_lt with heq hlt
+ rcases hc.1.eq_or_lt with heq | hlt
· rwa [← heq]
refine ⟨hc, ?_⟩
/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
@@ -351,7 +351,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
/- So, `c ∈ s`. Let `ec` be a trivialization of `proj` over `[a, c]`. If `c = b`, then we are
done. Otherwise we show that `proj` can be trivialized over a larger interval `[a, d]`,
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
- cases' hc.2.eq_or_lt with heq hlt
+ rcases hc.2.eq_or_lt with heq | hlt
· exact ⟨ec, heq ▸ hec⟩
rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
· exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
rsuffices
porting notes (#9014)
Updates proofs that had been doing rsuffices
manually.
@@ -353,9 +353,8 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
cases' hc.2.eq_or_lt with heq hlt
· exact ⟨ec, heq ▸ hec⟩
- suffices : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
- · rcases this with ⟨d, hdcb, hd⟩ -- porting note: todo: use `rsuffices`
- exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
+ rsuffices ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
+ · exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
`d ∈ (c, b]`. -/
obtain ⟨d, hdcb, hd⟩ : ∃ d ∈ Ioc c b, Ico c d ⊆ ec.baseSet :=
The current name is misleading: there's no open set involved; it's just an equivalence between subsets of domain and target. zulip discussion
PEquiv
is similarly named: this is fine, as they're different designs for the same concept.
Co-authored-by: Michael Rothgang <rothgami@math.hu-berlin.de>
@@ -483,10 +483,9 @@ between `proj ⁻¹ (baseSet i)` and `baseSet i × F`. As the fiber above `x` is
chart with index `index_at x`, the trivialization in the fiber above x is by definition the
coordinate change from i to `index_at x`, so it depends on `x`.
The local trivialization will ultimately be a local homeomorphism. For now, we only introduce the
-local equiv version, denoted with a prime. In further developments, avoid this auxiliary version,
-and use `Z.local_triv` instead.
--/
-def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F) where
+partial equivalence version, denoted with a prime.
+In further developments, avoid this auxiliary version, and use `Z.local_triv` instead. -/
+def localTrivAsPartialEquiv (i : ι) : PartialEquiv Z.TotalSpace (B × F) where
source := Z.proj ⁻¹' Z.baseSet i
target := Z.baseSet i ×ˢ univ
invFun p := ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩
@@ -506,58 +505,58 @@ def localTrivAsLocalEquiv (i : ι) : LocalEquiv Z.TotalSpace (B × F) where
dsimp only
rw [Z.coordChange_comp, Z.coordChange_self]
exacts [hx, ⟨⟨hx, Z.mem_baseSet_at _⟩, hx⟩]
-#align fiber_bundle_core.local_triv_as_local_equiv FiberBundleCore.localTrivAsLocalEquiv
+#align fiber_bundle_core.local_triv_as_local_equiv FiberBundleCore.localTrivAsPartialEquiv
variable (i : ι)
-theorem mem_localTrivAsLocalEquiv_source (p : Z.TotalSpace) :
- p ∈ (Z.localTrivAsLocalEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
+theorem mem_localTrivAsPartialEquiv_source (p : Z.TotalSpace) :
+ p ∈ (Z.localTrivAsPartialEquiv i).source ↔ p.1 ∈ Z.baseSet i :=
Iff.rfl
-#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsLocalEquiv_source
+#align fiber_bundle_core.mem_local_triv_as_local_equiv_source FiberBundleCore.mem_localTrivAsPartialEquiv_source
-theorem mem_localTrivAsLocalEquiv_target (p : B × F) :
- p ∈ (Z.localTrivAsLocalEquiv i).target ↔ p.1 ∈ Z.baseSet i := by
+theorem mem_localTrivAsPartialEquiv_target (p : B × F) :
+ p ∈ (Z.localTrivAsPartialEquiv i).target ↔ p.1 ∈ Z.baseSet i := by
erw [mem_prod]
simp only [and_true_iff, mem_univ]
-#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsLocalEquiv_target
+#align fiber_bundle_core.mem_local_triv_as_local_equiv_target FiberBundleCore.mem_localTrivAsPartialEquiv_target
-theorem localTrivAsLocalEquiv_apply (p : Z.TotalSpace) :
- (Z.localTrivAsLocalEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
+theorem localTrivAsPartialEquiv_apply (p : Z.TotalSpace) :
+ (Z.localTrivAsPartialEquiv i) p = ⟨p.1, Z.coordChange (Z.indexAt p.1) i p.1 p.2⟩ :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsLocalEquiv_apply
+#align fiber_bundle_core.local_triv_as_local_equiv_apply FiberBundleCore.localTrivAsPartialEquiv_apply
/-- The composition of two local trivializations is the trivialization change Z.triv_change i j. -/
-theorem localTrivAsLocalEquiv_trans (i j : ι) :
- (Z.localTrivAsLocalEquiv i).symm.trans (Z.localTrivAsLocalEquiv j) ≈
- (Z.trivChange i j).toLocalEquiv := by
+theorem localTrivAsPartialEquiv_trans (i j : ι) :
+ (Z.localTrivAsPartialEquiv i).symm.trans (Z.localTrivAsPartialEquiv j) ≈
+ (Z.trivChange i j).toPartialEquiv := by
constructor
· ext x
- simp only [mem_localTrivAsLocalEquiv_target, mfld_simps]
+ simp only [mem_localTrivAsPartialEquiv_target, mfld_simps]
rfl
· rintro ⟨x, v⟩ hx
- simp only [trivChange, localTrivAsLocalEquiv, LocalEquiv.symm, true_and_iff,
- Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, LocalEquiv.trans_source, mem_inter_iff,
+ simp only [trivChange, localTrivAsPartialEquiv, PartialEquiv.symm, true_and_iff,
+ Prod.mk.inj_iff, prod_mk_mem_set_prod_eq, PartialEquiv.trans_source, mem_inter_iff,
and_true_iff, mem_preimage, proj, mem_univ, eq_self_iff_true, (· ∘ ·),
- LocalEquiv.coe_trans, TotalSpace.proj] at hx ⊢
+ PartialEquiv.coe_trans, TotalSpace.proj] at hx ⊢
simp only [Z.coordChange_comp, hx, mem_inter_iff, and_self_iff, mem_baseSet_at]
-#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsLocalEquiv_trans
+#align fiber_bundle_core.local_triv_as_local_equiv_trans FiberBundleCore.localTrivAsPartialEquiv_trans
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace F Z.Fiber) :=
TopologicalSpace.generateFrom <| ⋃ (i : ι) (s : Set (B × F)) (_ : IsOpen s),
- {(Z.localTrivAsLocalEquiv i).source ∩ Z.localTrivAsLocalEquiv i ⁻¹' s}
+ {(Z.localTrivAsPartialEquiv i).source ∩ Z.localTrivAsPartialEquiv i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
variable (b : B) (a : F)
-theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source := by
+theorem open_source' (i : ι) : IsOpen (Z.localTrivAsPartialEquiv i).source := by
apply TopologicalSpace.GenerateOpen.basic
simp only [exists_prop, mem_iUnion, mem_singleton_iff]
refine ⟨i, Z.baseSet i ×ˢ univ, (Z.isOpen_baseSet i).prod isOpen_univ, ?_⟩
ext p
- simp only [localTrivAsLocalEquiv_apply, prod_mk_mem_set_prod_eq, mem_inter_iff, and_self_iff,
- mem_localTrivAsLocalEquiv_source, and_true, mem_univ, mem_preimage]
+ simp only [localTrivAsPartialEquiv_apply, prod_mk_mem_set_prod_eq, mem_inter_iff, and_self_iff,
+ mem_localTrivAsPartialEquiv_source, and_true, mem_univ, mem_preimage]
#align fiber_bundle_core.open_source' FiberBundleCore.open_source'
/-- Extended version of the local trivialization of a fiber bundle constructed from core,
@@ -582,20 +581,20 @@ def localTriv (i : ι) : Trivialization F Z.proj where
refine continuousOn_isOpen_of_generateFrom fun t ht ↦ ?_
simp only [exists_prop, mem_iUnion, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ : ∃ j s, IsOpen s ∧
- t = (localTrivAsLocalEquiv Z j).source ∩ localTrivAsLocalEquiv Z j ⁻¹' s := ht
+ t = (localTrivAsPartialEquiv Z j).source ∩ localTrivAsPartialEquiv Z j ⁻¹' s := ht
rw [ts]
- simp only [LocalEquiv.right_inv, preimage_inter, LocalEquiv.left_inv]
- let e := Z.localTrivAsLocalEquiv i
- let e' := Z.localTrivAsLocalEquiv j
+ simp only [PartialEquiv.right_inv, preimage_inter, PartialEquiv.left_inv]
+ let e := Z.localTrivAsPartialEquiv i
+ let e' := Z.localTrivAsPartialEquiv j
let f := e.symm.trans e'
have : IsOpen (f.source ∩ f ⁻¹' s) := by
- rw [LocalEquiv.EqOnSource.source_inter_preimage_eq (Z.localTrivAsLocalEquiv_trans i j)]
+ rw [PartialEquiv.EqOnSource.source_inter_preimage_eq (Z.localTrivAsPartialEquiv_trans i j)]
exact (continuousOn_open_iff (Z.trivChange i j).open_source).1
(Z.trivChange i j).continuousOn _ s_open
convert this using 1
- dsimp [LocalEquiv.trans_source]
+ dsimp [PartialEquiv.trans_source]
rw [← preimage_comp, inter_assoc]
- toLocalEquiv := Z.localTrivAsLocalEquiv i
+ toPartialEquiv := Z.localTrivAsPartialEquiv i
#align fiber_bundle_core.local_triv FiberBundleCore.localTriv
/-- Preferred local trivialization of a fiber bundle constructed from core, at a given point, as
@@ -633,27 +632,27 @@ theorem continuous_const_section (v : F)
#align fiber_bundle_core.continuous_const_section FiberBundleCore.continuous_const_section
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_coe : ⇑(Z.localTrivAsLocalEquiv i) = Z.localTriv i :=
+theorem localTrivAsPartialEquiv_coe : ⇑(Z.localTrivAsPartialEquiv i) = Z.localTriv i :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsLocalEquiv_coe
+#align fiber_bundle_core.local_triv_as_local_equiv_coe FiberBundleCore.localTrivAsPartialEquiv_coe
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_source :
- (Z.localTrivAsLocalEquiv i).source = (Z.localTriv i).source :=
+theorem localTrivAsPartialEquiv_source :
+ (Z.localTrivAsPartialEquiv i).source = (Z.localTriv i).source :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsLocalEquiv_source
+#align fiber_bundle_core.local_triv_as_local_equiv_source FiberBundleCore.localTrivAsPartialEquiv_source
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_target :
- (Z.localTrivAsLocalEquiv i).target = (Z.localTriv i).target :=
+theorem localTrivAsPartialEquiv_target :
+ (Z.localTrivAsPartialEquiv i).target = (Z.localTriv i).target :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsLocalEquiv_target
+#align fiber_bundle_core.local_triv_as_local_equiv_target FiberBundleCore.localTrivAsPartialEquiv_target
@[simp, mfld_simps]
-theorem localTrivAsLocalEquiv_symm :
- (Z.localTrivAsLocalEquiv i).symm = (Z.localTriv i).toLocalEquiv.symm :=
+theorem localTrivAsPartialEquiv_symm :
+ (Z.localTrivAsPartialEquiv i).symm = (Z.localTriv i).toPartialEquiv.symm :=
rfl
-#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsLocalEquiv_symm
+#align fiber_bundle_core.local_triv_as_local_equiv_symm FiberBundleCore.localTrivAsPartialEquiv_symm
@[simp, mfld_simps]
theorem baseSet_at : Z.baseSet i = (Z.localTriv i).baseSet :=
@@ -770,7 +769,7 @@ structure FiberPrebundle where
mem_base_pretrivializationAt : ∀ x : B, x ∈ (pretrivializationAt x).baseSet
pretrivialization_mem_atlas : ∀ x : B, pretrivializationAt x ∈ pretrivializationAtlas
continuous_trivChange : ∀ e, e ∈ pretrivializationAtlas → ∀ e', e' ∈ pretrivializationAtlas →
- ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
+ ContinuousOn (e ∘ e'.toPartialEquiv.symm) (e'.target ∩ e'.toPartialEquiv.symm ⁻¹' e.source)
totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivializationAt b ∘ TotalSpace.mk b)
#align fiber_prebundle FiberPrebundle
@@ -786,7 +785,7 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace F
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
- @ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target := by
+ @ContinuousOn _ _ _ a.totalSpaceTopology e.toPartialEquiv.symm e.target := by
refine' fun z H U h => preimage_nhdsWithin_coinduced' H (le_def.1 (nhds_mono _) U h)
exact le_iSup₂ (α := TopologicalSpace (TotalSpace F E)) e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
@@ -802,7 +801,7 @@ theorem isOpen_source (e : Pretrivialization F (π F E)) :
theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π F E))
(he' : e' ∈ a.pretrivializationAtlas) :
- IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) := by
+ IsOpen (e'.toPartialEquiv.target ∩ e'.toPartialEquiv.symm ⁻¹' e.source) := by
letI := a.totalSpaceTopology
obtain ⟨u, hu1, hu2⟩ := continuousOn_iff'.mp (a.continuous_symm_of_mem_pretrivializationAtlas he')
e.source (a.isOpen_source e)
@@ -824,7 +823,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
obtain ⟨u, hu1, hu2⟩ := continuousOn_iff'.mp (a.continuous_trivChange _ he _ he') s hs
have hu3 := congr_arg (fun s => (fun x : e'.target => (x : B × F)) ⁻¹' s) hu2
simp only [Subtype.coe_preimage_self, preimage_inter, univ_inter] at hu3
- refine ⟨u ∩ e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source, ?_, by
+ refine ⟨u ∩ e'.toPartialEquiv.target ∩ e'.toPartialEquiv.symm ⁻¹' e.source, ?_, by
simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]; rfl⟩
rw [inter_assoc]
exact hu1.inter (a.isOpen_target_of_mem_pretrivializationAtlas_inter e e' he')
@@ -900,7 +899,7 @@ continuity of a function `TotalSpace F E → X` on an open set `s` can be checke
each point with the pretrivialization used for the construction at that point. -/
theorem continuousOn_of_comp_right {X : Type*} [TopologicalSpace X] {f : TotalSpace F E → X}
{s : Set B} (hs : IsOpen s) (hf : ∀ b ∈ s,
- ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
+ ContinuousOn (f ∘ (a.pretrivializationAt b).toPartialEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
@ContinuousOn _ _ a.totalSpaceTopology _ f (π F E ⁻¹' s) := by
letI := a.totalSpaceTopology
LocalHomeomorph
evokes a "local homeomorphism": this is not what this means.
Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph
.
A future PR will rename LocalEquiv
to PartialEquiv
.
@@ -444,7 +444,7 @@ def proj : Z.TotalSpace → B :=
#align fiber_bundle_core.proj FiberBundleCore.proj
/-- Local homeomorphism version of the trivialization change. -/
-def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F) where
+def trivChange (i j : ι) : PartialHomeomorph (B × F) (B × F) where
source := (Z.baseSet i ∩ Z.baseSet j) ×ˢ univ
target := (Z.baseSet i ∩ Z.baseSet j) ×ˢ univ
toFun p := ⟨p.1, Z.coordChange i j p.1 p.2⟩
@@ -623,7 +623,7 @@ theorem continuous_const_section (v : F)
refine continuous_iff_continuousAt.2 fun x => ?_
have A : Z.baseSet (Z.indexAt x) ∈ 𝓝 x :=
IsOpen.mem_nhds (Z.isOpen_baseSet (Z.indexAt x)) (Z.mem_baseSet_at x)
- refine ((Z.localTrivAt x).toLocalHomeomorph.continuousAt_iff_continuousAt_comp_left ?_).2 ?_
+ refine ((Z.localTrivAt x).toPartialHomeomorph.continuousAt_iff_continuousAt_comp_left ?_).2 ?_
· exact A
· apply continuousAt_id.prod
simp only [(· ∘ ·), mfld_simps, localTrivAt_snd]
@@ -703,7 +703,7 @@ theorem mem_localTrivAt_target (p : B × F) (b : B) :
@[simp, mfld_simps]
theorem localTriv_symm_apply (p : B × F) :
- (Z.localTriv i).toLocalHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
+ (Z.localTriv i).toPartialHomeomorph.symm p = ⟨p.1, Z.coordChange i (Z.indexAt p.1) p.1 p.2⟩ :=
rfl
#align fiber_bundle_core.local_triv_symm_apply FiberBundleCore.localTriv_symm_apply
@@ -848,7 +848,7 @@ theorem continuous_totalSpaceMk (b : B) :
Continuous[_, a.totalSpaceTopology] (TotalSpace.mk b) := by
letI := a.totalSpaceTopology
let e := a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas b)
- rw [e.toLocalHomeomorph.continuous_iff_continuous_comp_left
+ rw [e.toPartialHomeomorph.continuous_iff_continuous_comp_left
(a.totalSpaceMk_preimage_source b)]
exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.totalSpaceMk_inducing b).induced).1
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
They have type ContinuousOn ..., hence should be named accordingly. Suggested by @fpvandoorn in #8736.
@@ -466,8 +466,8 @@ def trivChange (i j : ι) : LocalHomeomorph (B × F) (B × F) where
· simp [hx]
open_source := ((Z.isOpen_baseSet i).inter (Z.isOpen_baseSet j)).prod isOpen_univ
open_target := ((Z.isOpen_baseSet i).inter (Z.isOpen_baseSet j)).prod isOpen_univ
- continuous_toFun := continuous_fst.continuousOn.prod (Z.continuousOn_coordChange i j)
- continuous_invFun := by
+ continuousOn_toFun := continuous_fst.continuousOn.prod (Z.continuousOn_coordChange i j)
+ continuousOn_invFun := by
simpa [inter_comm] using continuous_fst.continuousOn.prod (Z.continuousOn_coordChange j i)
#align fiber_bundle_core.triv_change FiberBundleCore.trivChange
@@ -572,13 +572,13 @@ def localTriv (i : ι) : Trivialization F Z.proj where
rfl
open_source := Z.open_source' i
open_target := (Z.isOpen_baseSet i).prod isOpen_univ
- continuous_toFun := by
+ continuousOn_toFun := by
rw [continuousOn_open_iff (Z.open_source' i)]
intro s s_open
apply TopologicalSpace.GenerateOpen.basic
simp only [exists_prop, mem_iUnion, mem_singleton_iff]
exact ⟨i, s, s_open, rfl⟩
- continuous_invFun := by
+ continuousOn_invFun := by
refine continuousOn_isOpen_of_generateFrom fun t ht ↦ ?_
simp only [exists_prop, mem_iUnion, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ : ∃ j s, IsOpen s ∧
@@ -816,7 +816,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
let _ := a.totalSpaceTopology
{ e with
open_source := a.isOpen_source e,
- continuous_toFun := by
+ continuousOn_toFun := by
refine continuousOn_iff'.mpr fun s hs => ⟨e ⁻¹' s ∩ e.source,
isOpen_iSup_iff.mpr fun e' => ?_, by rw [inter_assoc, inter_self]; rfl⟩
refine isOpen_iSup_iff.mpr fun he' => ?_
@@ -828,7 +828,7 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
simp only [preimage_inter, inter_univ, Subtype.coe_preimage_self, hu3.symm]; rfl⟩
rw [inter_assoc]
exact hu1.inter (a.isOpen_target_of_mem_pretrivializationAtlas_inter e e' he')
- continuous_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
+ continuousOn_invFun := a.continuous_symm_of_mem_pretrivializationAtlas he }
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
@@ -861,7 +861,7 @@ theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
apply Inducing.of_codRestrict (a.mem_pretrivializationAt_source b)
refine inducing_of_inducing_compose ?_ (continuousOn_iff_continuous_restrict.mp
(a.trivializationOfMemPretrivializationAtlas
- (a.pretrivialization_mem_atlas b)).continuous_toFun) h
+ (a.pretrivialization_mem_atlas b)).continuousOn_toFun) h
exact (a.continuous_totalSpaceMk b).codRestrict (a.mem_pretrivializationAt_source b)
#align fiber_prebundle.inducing_total_space_mk_of_inducing_comp FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp
Mostly, this means replacing "of_open" by "of_isOpen". A few lemmas names were misleading and are corrected differently. Zulip discussion.
@@ -579,7 +579,7 @@ def localTriv (i : ι) : Trivialization F Z.proj where
simp only [exists_prop, mem_iUnion, mem_singleton_iff]
exact ⟨i, s, s_open, rfl⟩
continuous_invFun := by
- refine continuousOn_open_of_generateFrom fun t ht ↦ ?_
+ refine continuousOn_isOpen_of_generateFrom fun t ht ↦ ?_
simp only [exists_prop, mem_iUnion, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ : ∃ j s, IsOpen s ∧
t = (localTrivAsLocalEquiv Z j).source ∩ localTrivAsLocalEquiv Z j ⁻¹' s := ht
@@ -845,7 +845,7 @@ theorem totalSpaceMk_preimage_source (b : B) :
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
- Continuous[_, a.totalSpaceTopology] (TotalSpace.mk b) := by
+ Continuous[_, a.totalSpaceTopology] (TotalSpace.mk b) := by
letI := a.totalSpaceTopology
let e := a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas b)
rw [e.toLocalHomeomorph.continuous_iff_continuous_comp_left
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -15,7 +15,7 @@ Mathematically, a (topological) fiber bundle with fiber `F` over a base `B` is a
point is a direct product.
In our formalism, a fiber bundle is by definition the type `Bundle.TotalSpace F E` where
-`E : B → Type _` is a function associating to `x : B` the fiber over `x`. This type
+`E : B → Type*` is a function associating to `x : B` the fiber over `x`. This type
`Bundle.TotalSpace F E` is a type of pairs `⟨proj : B, snd : E proj⟩`.
To have a fiber bundle structure on `Bundle.TotalSpace F E`, one should
@@ -45,7 +45,7 @@ fiber bundle from trivializations given as local equivalences with minimum addit
### Basic definitions
-* `FiberBundle F E` : Structure saying that `E : B → Type _` is a fiber bundle with fiber `F`.
+* `FiberBundle F E` : Structure saying that `E : B → Type*` is a fiber bundle with fiber `F`.
### Construction of a bundle from trivializations
@@ -164,7 +164,7 @@ Fiber bundle, topological bundle, structure group
-/
-variable {ι B F X : Type _} [TopologicalSpace X]
+variable {ι B F X : Type*} [TopologicalSpace X]
open TopologicalSpace Filter Set Bundle Topology
@@ -172,7 +172,7 @@ open TopologicalSpace Filter Set Bundle Topology
section FiberBundle
-variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
+variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type*)
[TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
@@ -394,7 +394,7 @@ Trivialization changes from `i` to `j` are given by continuous maps `coordChange
`B → F → F` and require continuity on `(baseSet i ∩ baseSet j) × F` to avoid the topology on the
space of continuous maps on `F`. -/
-- porting note: was @[nolint has_nonempty_instance]
-structure FiberBundleCore (ι : Type _) (B : Type _) [TopologicalSpace B] (F : Type _)
+structure FiberBundleCore (ι : Type*) (B : Type*) [TopologicalSpace B] (F : Type*)
[TopologicalSpace F] where
baseSet : ι → Set B
isOpen_baseSet : ∀ i, IsOpen (baseSet i)
@@ -756,7 +756,7 @@ end FiberBundleCore
/-! ### Prebundle construction for constructing fiber bundles -/
-variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
+variable (F) (E : B → Type*) [TopologicalSpace B] [TopologicalSpace F]
[∀ x, TopologicalSpace (E x)]
/-- This structure permits to define a fiber bundle when trivializations are given as local
@@ -898,7 +898,7 @@ instance {e₀} (he₀ : e₀ ∈ a.pretrivializationAtlas) :
/-- For a fiber bundle `E` over `B` constructed using the `FiberPrebundle` mechanism,
continuity of a function `TotalSpace F E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
-theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace F E → X}
+theorem continuousOn_of_comp_right {X : Type*} [TopologicalSpace X] {f : TotalSpace F E → X}
{s : Set B} (hs : IsOpen s) (hf : ∀ b ∈ s,
ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
@@ -2,14 +2,11 @@
Copyright (c) 2019 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.FiberBundle.Trivialization
+#align_import topology.fiber_bundle.basic from "leanprover-community/mathlib"@"e473c3198bb41f68560cab68a0529c854b618833"
+
/-!
# Fiber bundles
@@ -357,7 +357,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
cases' hc.2.eq_or_lt with heq hlt
· exact ⟨ec, heq ▸ hec⟩
suffices : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
- · rcases this with ⟨d, hdcb, hd⟩ -- porting note: todo: use `rsuffices`
+ · rcases this with ⟨d, hdcb, hd⟩ -- porting note: todo: use `rsuffices`
exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
`d ∈ (c, b]`. -/
Bundle.TotalSpace
(#5720)
Forward-port leanprover-community/mathlib#19221
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
+! leanprover-community/mathlib commit e473c3198bb41f68560cab68a0529c854b618833
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,17 +17,15 @@ Mathematically, a (topological) fiber bundle with fiber `F` over a base `B` is a
`B` for which the fibers are all homeomorphic to `F`, such that the local situation around each
point is a direct product.
-In our formalism, a fiber bundle is by definition the type
-`Bundle.TotalSpace E` where `E : B → Type*` is a function associating to
-`x : B` the fiber over `x`. This type `Bundle.TotalSpace E` is just a type synonym for
-`Σ (x : B), E x`, with the interest that one can put another topology than on `Σ (x : B), E x`
-which has the disjoint union topology.
+In our formalism, a fiber bundle is by definition the type `Bundle.TotalSpace F E` where
+`E : B → Type _` is a function associating to `x : B` the fiber over `x`. This type
+`Bundle.TotalSpace F E` is a type of pairs `⟨proj : B, snd : E proj⟩`.
-To have a fiber bundle structure on `Bundle.TotalSpace E`, one should
+To have a fiber bundle structure on `Bundle.TotalSpace F E`, one should
additionally have the following data:
* `F` should be a topological space;
-* There should be a topology on `Bundle.TotalSpace E`, for which the projection to `B` is
+* There should be a topology on `Bundle.TotalSpace F E`, for which the projection to `B` is
a fiber bundle with fiber `F` (in particular, each fiber `E x` is homeomorphic to `F`);
* For each `x`, the fiber `E x` should be a topological space, and the injection
from `E x` to `Bundle.TotalSpace F E` should be an embedding;
@@ -54,19 +52,18 @@ fiber bundle from trivializations given as local equivalences with minimum addit
### Construction of a bundle from trivializations
-* `Bundle.TotalSpace E` is a type synonym for `Σ (x : B), E x`, that we can endow with a suitable
- topology.
+* `Bundle.TotalSpace F E` is the type of pairs `(proj : B, snd : E proj)`. We can use the extra
+ argument `F` to construct topology on the total space.
* `FiberBundleCore ι B F` : structure registering how changes of coordinates act
on the fiber `F` above open subsets of `B`, where local trivializations are indexed by `ι`.
Let `Z : FiberBundleCore ι B F`. Then we define
* `Z.Fiber x` : the fiber above `x`, homeomorphic to `F` (and defeq to `F` as a type).
-* `Z.TotalSpace` : the total space of `Z`, defined as a `Type` as `Σ (b : B), F`, but with a
- twisted topology coming from the fiber bundle structure. It is (reducibly) the same as
- `Bundle.TotalSpace Z.Fiber`.
+* `Z.TotalSpace` : the total space of `Z`, defined as `Bundle.TotalSpace F Z.Fiber` with a custom
+ topology.
* `Z.proj` : projection from `Z.TotalSpace` to `B`. It is continuous.
-* `Z.localTriv i`: for `i : ι`, bundle trivialization above the set `Z.baseSet i`, which is an
+* `Z.localTriv i` : for `i : ι`, bundle trivialization above the set `Z.baseSet i`, which is an
open set in `B`.
* `FiberPrebundle F E` : structure registering a cover of prebundle trivializations
@@ -155,8 +152,8 @@ choose for each `x` one specific trivialization around it. We include this choic
of the `FiberBundleCore`, as it makes some constructions more
functorial and it is a nice way to say that the trivializations cover the whole space `B`.
-With this definition, the type of the fiber bundle space constructed from the core data is just
-`Σ (b : B), F `, but the topology is not the product one, in general.
+With this definition, the type of the fiber bundle space constructed from the core data is
+`Bundle.TotalSpace F (fun b : B ↦ F)`, but the topology is not the product one, in general.
We also take the indexing type (indexing all the trivializations) as a parameter to the fiber bundle
core: it could always be taken as a subtype of all the maps from open subsets of `B` to continuous
@@ -174,23 +171,20 @@ variable {ι B F X : Type _} [TopologicalSpace X]
open TopologicalSpace Filter Set Bundle Topology
-attribute [mfld_simps]
- totalSpaceMk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul TotalSpace.mk_cast
-
/-! ### General definition of fiber bundles -/
section FiberBundle
variable (F) [TopologicalSpace B] [TopologicalSpace F] (E : B → Type _)
- [TopologicalSpace (TotalSpace E)] [∀ b, TopologicalSpace (E b)]
+ [TopologicalSpace (TotalSpace F E)] [∀ b, TopologicalSpace (E b)]
/-- A (topological) fiber bundle with fiber `F` over a base `B` is a space projecting on `B`
for which the fibers are all homeomorphic to `F`, such that the local situation around each point
is a direct product. -/
class FiberBundle where
- totalSpaceMk_inducing' : ∀ b : B, Inducing (@totalSpaceMk B E b)
- trivializationAtlas' : Set (Trivialization F (π E))
- trivializationAt' : B → Trivialization F (π E)
+ totalSpaceMk_inducing' : ∀ b : B, Inducing (@TotalSpace.mk B F E b)
+ trivializationAtlas' : Set (Trivialization F (π F E))
+ trivializationAt' : B → Trivialization F (π F E)
mem_baseSet_trivializationAt' : ∀ b : B, b ∈ (trivializationAt' b).baseSet
trivialization_mem_atlas' : ∀ b : B, trivializationAt' b ∈ trivializationAtlas'
#align fiber_bundle FiberBundle
@@ -199,13 +193,13 @@ namespace FiberBundle
variable [FiberBundle F E] (b : B)
-theorem totalSpaceMk_inducing : Inducing (@totalSpaceMk B E b) := totalSpaceMk_inducing' F b
+theorem totalSpaceMk_inducing : Inducing (@TotalSpace.mk B F E b) := totalSpaceMk_inducing' b
/-- Atlas of a fiber bundle. -/
-abbrev trivializationAtlas : Set (Trivialization F (π E)) := trivializationAtlas'
+abbrev trivializationAtlas : Set (Trivialization F (π F E)) := trivializationAtlas'
/-- Trivialization of a fiber bundle at a point. -/
-abbrev trivializationAt : Trivialization F (π E) := trivializationAt' b
+abbrev trivializationAt : Trivialization F (π F E) := trivializationAt' b
theorem mem_baseSet_trivializationAt : b ∈ (trivializationAt F E b).baseSet :=
mem_baseSet_trivializationAt' b
@@ -226,7 +220,7 @@ bundle. This is needed because lemmas about the linearity of trivializations or
functions to `F →L[R] F`, where `F` is the model fiber) of the transition functions are only
expected to hold for trivializations in the designated atlas. -/
@[mk_iff memTrivializationAtlas_iff]
-class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π E)) : Prop where
+class MemTrivializationAtlas [FiberBundle F E] (e : Trivialization F (π F E)) : Prop where
out : e ∈ trivializationAtlas F E
#align mem_trivialization_atlas MemTrivializationAtlas
@@ -238,7 +232,7 @@ namespace FiberBundle
variable (F)
variable [FiberBundle F E]
-theorem map_proj_nhds (x : TotalSpace E) : map (π E) (𝓝 x) = 𝓝 x.proj :=
+theorem map_proj_nhds (x : TotalSpace F E) : map (π F E) (𝓝 x) = 𝓝 x.proj :=
(trivializationAt F E x.proj).map_proj_nhds <|
(trivializationAt F E x.proj).mem_source.2 <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.map_proj_nhds FiberBundle.map_proj_nhds
@@ -247,18 +241,18 @@ variable (E)
/-- The projection from a fiber bundle to its base is continuous. -/
@[continuity]
-theorem continuous_proj : Continuous (π E) :=
+theorem continuous_proj : Continuous (π F E) :=
continuous_iff_continuousAt.2 fun x => (map_proj_nhds F x).le
#align fiber_bundle.continuous_proj FiberBundle.continuous_proj
/-- The projection from a fiber bundle to its base is an open map. -/
-theorem isOpenMap_proj : IsOpenMap (π E) :=
+theorem isOpenMap_proj : IsOpenMap (π F E) :=
IsOpenMap.of_nhds_le fun x => (map_proj_nhds F x).ge
#align fiber_bundle.is_open_map_proj FiberBundle.isOpenMap_proj
/-- The projection from a fiber bundle with a nonempty fiber to its base is a surjective
map. -/
-theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
+theorem surjective_proj [Nonempty F] : Function.Surjective (π F E) := fun b =>
let ⟨p, _, hpb⟩ :=
(trivializationAt F E b).proj_surjOn_baseSet (mem_baseSet_trivializationAt F E b)
⟨p, hpb⟩
@@ -266,32 +260,33 @@ theorem surjective_proj [Nonempty F] : Function.Surjective (π E) := fun b =>
/-- The projection from a fiber bundle with a nonempty fiber to its base is a quotient
map. -/
-theorem quotientMap_proj [Nonempty F] : QuotientMap (π E) :=
+theorem quotientMap_proj [Nonempty F] : QuotientMap (π F E) :=
(isOpenMap_proj F E).to_quotientMap (continuous_proj F E) (surjective_proj F E)
#align fiber_bundle.quotient_map_proj FiberBundle.quotientMap_proj
-theorem continuous_totalSpaceMk (x : B) : Continuous (@totalSpaceMk B E x) :=
+theorem continuous_totalSpaceMk (x : B) : Continuous (@TotalSpace.mk B F E x) :=
(totalSpaceMk_inducing F E x).continuous
#align fiber_bundle.continuous_total_space_mk FiberBundle.continuous_totalSpaceMk
-theorem totalSpaceMk_embedding (x : B) : Embedding (@totalSpaceMk B E x) :=
- ⟨totalSpaceMk_inducing F E x, sigma_mk_injective⟩
+theorem totalSpaceMk_embedding (x : B) : Embedding (@TotalSpace.mk B F E x) :=
+ ⟨totalSpaceMk_inducing F E x, TotalSpace.mk_injective x⟩
-theorem totalSpaceMk_closedEmbedding [T1Space B] (x : B) : ClosedEmbedding (@totalSpaceMk B E x) :=
+theorem totalSpaceMk_closedEmbedding [T1Space B] (x : B) :
+ ClosedEmbedding (@TotalSpace.mk B F E x) :=
⟨totalSpaceMk_embedding F E x, by
- rw [range_sigmaMk]
+ rw [TotalSpace.range_mk]
exact isClosed_singleton.preimage <| continuous_proj F E⟩
variable {E F}
@[simp, mfld_simps]
-theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
+theorem mem_trivializationAt_proj_source {x : TotalSpace F E} :
x ∈ (trivializationAt F E x.proj).source :=
(Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
-- porting note: removed `@[simp, mfld_simps]` because `simp` could already prove this
-theorem trivializationAt_proj_fst {x : TotalSpace E} :
+theorem trivializationAt_proj_fst {x : TotalSpace F E} :
((trivializationAt F E x.proj) x).1 = x.proj :=
Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fst
@@ -301,7 +296,7 @@ variable (F)
open Trivialization
/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
-theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
+theorem continuousWithinAt_totalSpace (f : X → TotalSpace F E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
ContinuousWithinAt (fun x => (f x).proj) s x₀ ∧
ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ :=
@@ -309,7 +304,7 @@ theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀
#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
-theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
+theorem continuousAt_totalSpace (f : X → TotalSpace F E) {x₀ : X} :
ContinuousAt f x₀ ↔
ContinuousAt (fun x => (f x).proj) x₀ ∧
ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
@@ -324,15 +319,15 @@ variable (F E)
then it is trivial over any closed interval. -/
theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinearOrder B]
[OrderTopology B] [FiberBundle F E] (a b : B) :
- ∃ e : Trivialization F (π E), Icc a b ⊆ e.baseSet := by
- obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π E), a ∈ ea.baseSet :=
+ ∃ e : Trivialization F (π F E), Icc a b ⊆ e.baseSet := by
+ obtain ⟨ea, hea⟩ : ∃ ea : Trivialization F (π F E), a ∈ ea.baseSet :=
⟨trivializationAt F E a, mem_baseSet_trivializationAt F E a⟩
-- If `a < b`, then `[a, b] = ∅`, and the statement is trivial
cases' lt_or_le b a with hab hab
· exact ⟨ea, by simp [*]⟩
/- Let `s` be the set of points `x ∈ [a, b]` such that `E` is trivializable over `[a, x]`.
We need to show that `b ∈ s`. Let `c = Sup s`. We will show that `c ∈ s` and `c = b`. -/
- set s : Set B := { x ∈ Icc a b | ∃ e : Trivialization F (π E), Icc a x ⊆ e.baseSet }
+ set s : Set B := { x ∈ Icc a b | ∃ e : Trivialization F (π F E), Icc a x ⊆ e.baseSet }
have ha : a ∈ s := ⟨left_mem_Icc.2 hab, ea, by simp [hea]⟩
have sne : s.Nonempty := ⟨a, ha⟩
have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
@@ -340,13 +335,13 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
set c := sSup s
have hsc : IsLUB s c := isLUB_csSup sne sbd
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
- obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.baseSet⟩ : c ∈ s := by
+ obtain ⟨-, ec : Trivialization F (π F E), hec : Icc a c ⊆ ec.baseSet⟩ : c ∈ s := by
cases' hc.1.eq_or_lt with heq hlt
· rwa [← heq]
refine ⟨hc, ?_⟩
/- In order to show that `c ∈ s`, consider a trivialization `ec` of `proj` over a neighborhood
of `c`. Its base set includes `(c', c]` for some `c' ∈ [a, c)`. -/
- obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π E), c ∈ ec.baseSet :=
+ obtain ⟨ec, hc⟩ : ∃ ec : Trivialization F (π F E), c ∈ ec.baseSet :=
⟨trivializationAt F E c, mem_baseSet_trivializationAt F E c⟩
obtain ⟨c', hc', hc'e⟩ : ∃ c' ∈ Ico a c, Ioc c' c ⊆ ec.baseSet :=
(mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset hlt).1
@@ -361,7 +356,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
`d ∈ (c, b]`, hence `c` is not an upper bound of `s`. -/
cases' hc.2.eq_or_lt with heq hlt
· exact ⟨ec, heq ▸ hec⟩
- suffices : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π E), Icc a d ⊆ e.baseSet
+ suffices : ∃ d ∈ Ioc c b, ∃ e : Trivialization F (π F E), Icc a d ⊆ e.baseSet
· rcases this with ⟨d, hdcb, hd⟩ -- porting note: todo: use `rsuffices`
exact ((hsc.1 ⟨⟨hc.1.trans hdcb.1.le, hdcb.2⟩, hd⟩).not_lt hdcb.1).elim
/- Since the base set of `ec` is open, it includes `[c, d)` (hence, `[a, d)`) for some
@@ -374,7 +369,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
· /- If `(c, d) = ∅`, then let `ed` be a trivialization of `proj` over a neighborhood of `d`.
Then the disjoint union of `ec` restricted to `(-∞, d)` and `ed` restricted to `(c, ∞)` is
a trivialization over `[a, d]`. -/
- obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π E), d ∈ ed.baseSet :=
+ obtain ⟨ed, hed⟩ : ∃ ed : Trivialization F (π F E), d ∈ ed.baseSet :=
⟨trivializationAt F E d, mem_baseSet_trivializationAt F E d⟩
refine' ⟨d, hdcb,
(ec.restrOpen (Iio d) isOpen_Iio).disjointUnion (ed.restrOpen (Ioi c) isOpen_Ioi)
@@ -440,10 +435,9 @@ instance topologicalSpaceFiber (x : B) : TopologicalSpace (Z.Fiber x) := ‹_›
#align fiber_bundle_core.topological_space_fiber FiberBundleCore.topologicalSpaceFiber
/-- The total space of the fiber bundle, as a convenience function for dot notation.
-It is by definition equal to `Bundle.TotalSpace Z.Fiber`, a.k.a. `Σ x, Z.Fiber x` but with a
-different name for typeclass inference. -/
+It is by definition equal to `Bundle.TotalSpace F Z.Fiber`. -/
@[reducible]
-def TotalSpace := Bundle.TotalSpace Z.Fiber
+def TotalSpace := Bundle.TotalSpace F Z.Fiber
#align fiber_bundle_core.total_space FiberBundleCore.TotalSpace
/-- The projection from the total space of a fiber bundle core, on its base. -/
@@ -553,7 +547,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
-instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
+instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace F Z.Fiber) :=
TopologicalSpace.generateFrom <| ⋃ (i : ι) (s : Set (B × F)) (_ : IsOpen s),
{(Z.localTrivAsLocalEquiv i).source ∩ Z.localTrivAsLocalEquiv i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
@@ -609,7 +603,7 @@ def localTriv (i : ι) : Trivialization F Z.proj where
/-- Preferred local trivialization of a fiber bundle constructed from core, at a given point, as
a bundle trivialization -/
-def localTrivAt (b : B) : Trivialization F (π Z.Fiber) :=
+def localTrivAt (b : B) : Trivialization F (π F Z.Fiber) :=
Z.localTriv (Z.indexAt b)
#align fiber_bundle_core.local_triv_at FiberBundleCore.localTrivAt
@@ -698,12 +692,6 @@ theorem mem_localTrivAt_source (p : Z.TotalSpace) (b : B) :
Iff.rfl
#align fiber_bundle_core.mem_local_triv_at_source FiberBundleCore.mem_localTrivAt_source
-@[simp, mfld_simps]
-theorem mem_source_at : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
- rw [localTrivAt, mem_localTriv_source]
- exact Z.mem_baseSet_at b
-#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_source_at
-
@[simp, mfld_simps]
theorem mem_localTriv_target (p : B × F) :
p ∈ (Z.localTriv i).target ↔ p.1 ∈ (Z.localTriv i).baseSet :=
@@ -728,16 +716,21 @@ theorem mem_localTrivAt_baseSet (b : B) : b ∈ (Z.localTrivAt b).baseSet := by
exact Z.mem_baseSet_at b
#align fiber_bundle_core.mem_local_triv_at_base_set FiberBundleCore.mem_localTrivAt_baseSet
+-- porting note: was @[simp, mfld_simps], now `simp` can prove it
+theorem mk_mem_localTrivAt_source : (⟨b, a⟩ : Z.TotalSpace) ∈ (Z.localTrivAt b).source := by
+ simp only [mfld_simps]
+#align fiber_bundle_core.mem_source_at FiberBundleCore.mem_localTrivAt_source
+
/-- A fiber bundle constructed from core is indeed a fiber bundle. -/
instance fiberBundle : FiberBundle F Z.Fiber where
totalSpaceMk_inducing' b := inducing_iff_nhds.2 fun x ↦ by
- rw [(Z.localTrivAt b).nhds_eq_comap_inf_principal (mem_source_at _ _ _), comap_inf,
+ rw [(Z.localTrivAt b).nhds_eq_comap_inf_principal (mk_mem_localTrivAt_source _ _ _), comap_inf,
comap_principal, comap_comap]
- simp only [(· ∘ ·), totalSpaceMk, localTrivAt_apply_mk, Trivialization.coe_coe,
+ simp only [(· ∘ ·), localTrivAt_apply_mk, Trivialization.coe_coe,
← (embedding_prod_mk b).nhds_eq_comap]
convert_to 𝓝 x = 𝓝 x ⊓ 𝓟 univ
· congr
- exact eq_univ_of_forall (mem_source_at Z _)
+ exact eq_univ_of_forall (mk_mem_localTrivAt_source Z _)
· rw [principal_univ, inf_top_eq]
trivializationAtlas' := Set.range Z.localTriv
trivializationAt' := Z.localTrivAt
@@ -748,7 +741,7 @@ instance fiberBundle : FiberBundle F Z.Fiber where
/-- The inclusion of a fiber into the total space is a continuous map. -/
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
- Continuous (totalSpaceMk b : Z.Fiber b → Bundle.TotalSpace Z.Fiber) :=
+ Continuous (TotalSpace.mk b : Z.Fiber b → Bundle.TotalSpace F Z.Fiber) :=
FiberBundle.continuous_totalSpaceMk F Z.Fiber b
#align fiber_bundle_core.continuous_total_space_mk FiberBundleCore.continuous_totalSpaceMk
@@ -775,33 +768,34 @@ topology in such a way that there is a fiber bundle structure for which the loca
are also local homeomorphism and hence local trivializations. -/
-- porting note: todo: was @[nolint has_nonempty_instance]
structure FiberPrebundle where
- pretrivializationAtlas : Set (Pretrivialization F (π E))
- pretrivializationAt : B → Pretrivialization F (π E)
+ pretrivializationAtlas : Set (Pretrivialization F (π F E))
+ pretrivializationAt : B → Pretrivialization F (π F E)
mem_base_pretrivializationAt : ∀ x : B, x ∈ (pretrivializationAt x).baseSet
pretrivialization_mem_atlas : ∀ x : B, pretrivializationAt x ∈ pretrivializationAtlas
continuous_trivChange : ∀ e, e ∈ pretrivializationAtlas → ∀ e', e' ∈ pretrivializationAtlas →
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
- totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivializationAt b ∘ totalSpaceMk b)
+ totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivializationAt b ∘ TotalSpace.mk b)
#align fiber_prebundle FiberPrebundle
namespace FiberPrebundle
variable {F E}
-variable (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
+variable (a : FiberPrebundle F E) {e : Pretrivialization F (π F E)}
/-- Topology on the total space that will make the prebundle into a bundle. -/
-def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
- ⨆ (e : Pretrivialization F (π E)) (_ : e ∈ a.pretrivializationAtlas),
+def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace F E) :=
+ ⨆ (e : Pretrivialization F (π F E)) (_ : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm instTopologicalSpaceSubtype
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target := by
refine' fun z H U h => preimage_nhdsWithin_coinduced' H (le_def.1 (nhds_mono _) U h)
- exact le_iSup₂ (α := TopologicalSpace (TotalSpace E)) e he
+ exact le_iSup₂ (α := TopologicalSpace (TotalSpace F E)) e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
-theorem isOpen_source (e : Pretrivialization F (π E)) : IsOpen[a.totalSpaceTopology] e.source := by
+theorem isOpen_source (e : Pretrivialization F (π F E)) :
+ IsOpen[a.totalSpaceTopology] e.source := by
refine isOpen_iSup_iff.mpr fun e' => isOpen_iSup_iff.mpr fun _ => ?_
refine' isOpen_coinduced.mpr (isOpen_induced_iff.mpr ⟨e.target, e.open_target, _⟩)
ext ⟨x, hx⟩
@@ -809,7 +803,7 @@ theorem isOpen_source (e : Pretrivialization F (π E)) : IsOpen[a.totalSpaceTopo
e'.proj_symm_apply hx]
#align fiber_prebundle.is_open_source FiberPrebundle.isOpen_source
-theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π E))
+theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivialization F (π F E))
(he' : e' ∈ a.pretrivializationAtlas) :
IsOpen (e'.toLocalEquiv.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source) := by
letI := a.totalSpaceTopology
@@ -821,7 +815,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
/-- Promotion from a `Pretrivialization` to a `Trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
- @Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
+ @Trivialization B F _ _ _ a.totalSpaceTopology (π F E) :=
let _ := a.totalSpaceTopology
{ e with
open_source := a.isOpen_source e,
@@ -841,20 +835,20 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
#align fiber_prebundle.trivialization_of_mem_pretrivialization_atlas FiberPrebundle.trivializationOfMemPretrivializationAtlas
theorem mem_pretrivializationAt_source (b : B) (x : E b) :
- totalSpaceMk b x ∈ (a.pretrivializationAt b).source := by
+ ⟨b, x⟩ ∈ (a.pretrivializationAt b).source := by
simp only [(a.pretrivializationAt b).source_eq, mem_preimage, TotalSpace.proj]
exact a.mem_base_pretrivializationAt b
#align fiber_prebundle.mem_trivialization_at_source FiberPrebundle.mem_pretrivializationAt_source
@[simp]
theorem totalSpaceMk_preimage_source (b : B) :
- totalSpaceMk b ⁻¹' (a.pretrivializationAt b).source = univ :=
+ TotalSpace.mk b ⁻¹' (a.pretrivializationAt b).source = univ :=
eq_univ_of_forall (a.mem_pretrivializationAt_source b)
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
- Continuous[_, a.totalSpaceTopology] (totalSpaceMk b) := by
+ Continuous[_, a.totalSpaceTopology] (TotalSpace.mk b) := by
letI := a.totalSpaceTopology
let e := a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas b)
rw [e.toLocalHomeomorph.continuous_iff_continuous_comp_left
@@ -863,8 +857,8 @@ theorem continuous_totalSpaceMk (b : B) :
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
- (h : Inducing (a.pretrivializationAt b ∘ totalSpaceMk b)) :
- @Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) := by
+ (h : Inducing (a.pretrivializationAt b ∘ TotalSpace.mk b)) :
+ @Inducing _ _ _ a.totalSpaceTopology (TotalSpace.mk b) := by
letI := a.totalSpaceTopology
rw [← restrict_comp_codRestrict (a.mem_pretrivializationAt_source b)] at h
apply Inducing.of_codRestrict (a.mem_pretrivializationAt_source b)
@@ -893,7 +887,7 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _ :=
trivialization_mem_atlas' := fun x ↦ ⟨_, a.pretrivialization_mem_atlas x, rfl⟩ }
#align fiber_prebundle.to_fiber_bundle FiberPrebundle.toFiberBundle
-theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) := by
+theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π F E) := by
letI := a.totalSpaceTopology
letI := a.toFiberBundle
exact FiberBundle.continuous_proj F E
@@ -905,16 +899,16 @@ instance {e₀} (he₀ : e₀ ∈ a.pretrivializationAtlas) :
letI := a.totalSpaceTopology; letI := a.toFiberBundle; ⟨e₀, he₀, rfl⟩
/-- For a fiber bundle `E` over `B` constructed using the `FiberPrebundle` mechanism,
-continuity of a function `TotalSpace E → X` on an open set `s` can be checked by precomposing at
+continuity of a function `TotalSpace F E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
-theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace E → X}
+theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace F E → X}
{s : Set B} (hs : IsOpen s) (hf : ∀ b ∈ s,
ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
- @ContinuousOn _ _ a.totalSpaceTopology _ f (π E ⁻¹' s) := by
+ @ContinuousOn _ _ a.totalSpaceTopology _ f (π F E ⁻¹' s) := by
letI := a.totalSpaceTopology
intro z hz
- let e : Trivialization F (π E) :=
+ let e : Trivialization F (π F E) :=
a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas z.proj)
refine' (e.continuousAt_of_comp_right _
((hf z.proj hz).continuousAt (IsOpen.mem_nhds _ _))).continuousWithinAt
Trivialization.tendsto_nhds_iff
(#5489)
This lemma generalizes FiberBundle.continuousWithinAt_totalSpace
.
Also add a version with equality of filters.
@@ -304,28 +304,16 @@ open Trivialization
theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
ContinuousWithinAt f s x₀ ↔
ContinuousWithinAt (fun x => (f x).proj) s x₀ ∧
- ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ := by
- refine' (and_iff_right_iff_imp.2 fun hf => _).symm.trans (and_congr_right fun hf => _)
- · refine' (continuous_proj F E).continuousWithinAt.comp hf (mapsTo_image f s)
- have h1 : (fun x => (f x).proj) ⁻¹' (trivializationAt F E (f x₀).proj).baseSet ∈ 𝓝[s] x₀ :=
- hf.preimage_mem_nhdsWithin ((open_baseSet _).mem_nhds (mem_baseSet_trivializationAt F E _))
- have h2 : ContinuousWithinAt (fun x => (trivializationAt F E (f x₀).proj (f x)).1) s x₀ := by
- refine'
- hf.congr_of_eventuallyEq (eventually_of_mem h1 fun x hx => _) trivializationAt_proj_fst
- simp_rw [coe_fst' _ hx]
- rw [(trivializationAt F E (f x₀).proj).continuousWithinAt_iff_continuousWithinAt_comp_left]
- · simp_rw [continuousWithinAt_prod_iff, Function.comp, Trivialization.coe_coe, h2, true_and_iff]
- · apply mem_trivializationAt_proj_source
- · rwa [source_eq, preimage_preimage]
+ ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ :=
+ (trivializationAt F E (f x₀).proj).tendsto_nhds_iff mem_trivializationAt_proj_source
#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
ContinuousAt f x₀ ↔
ContinuousAt (fun x => (f x).proj) x₀ ∧
- ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ := by
- simp_rw [← continuousWithinAt_univ]
- exact continuousWithinAt_totalSpace F f
+ ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ :=
+ (trivializationAt F E (f x₀).proj).tendsto_nhds_iff mem_trivializationAt_proj_source
#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpace
end FiberBundle
@@ -923,7 +923,7 @@ theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalS
{s : Set B} (hs : IsOpen s) (hf : ∀ b ∈ s,
ContinuousOn (f ∘ (a.pretrivializationAt b).toLocalEquiv.symm)
((s ∩ (a.pretrivializationAt b).baseSet) ×ˢ (Set.univ : Set F))) :
- @ContinuousOn _ _ a.totalSpaceTopology _ f ((π E) ⁻¹' s) := by
+ @ContinuousOn _ _ a.totalSpaceTopology _ f (π E ⁻¹' s) := by
letI := a.totalSpaceTopology
intro z hz
let e : Trivialization F (π E) :=
@@ -911,6 +911,11 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) := by
exact FiberBundle.continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
+instance {e₀} (he₀ : e₀ ∈ a.pretrivializationAtlas) :
+ (letI := a.totalSpaceTopology; letI := a.toFiberBundle;
+ MemTrivializationAtlas (a.trivializationOfMemPretrivializationAtlas he₀)) :=
+ letI := a.totalSpaceTopology; letI := a.toFiberBundle; ⟨e₀, he₀, rfl⟩
+
/-- For a fiber bundle `E` over `B` constructed using the `FiberPrebundle` mechanism,
continuity of a function `TotalSpace E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -396,7 +396,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
· /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
`[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
rw [disjoint_left] at he
- push_neg at he
+ push_neg at he
rcases he with ⟨d', hdd' : d' < d, hd'c⟩
exact ⟨d', ⟨hd'c, hdd'.le.trans hdcb.2⟩, ec, (Icc_subset_Ico_right hdd').trans had⟩
#align fiber_bundle.exists_trivialization_Icc_subset FiberBundle.exists_trivialization_Icc_subset
@@ -392,7 +392,7 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
(ec.restrOpen (Iio d) isOpen_Iio).disjointUnion (ed.restrOpen (Ioi c) isOpen_Ioi)
(he.mono (inter_subset_right _ _) (inter_subset_right _ _)), fun x hx => _⟩
rcases hx.2.eq_or_lt with (rfl | hxd)
- exacts[Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
+ exacts [Or.inr ⟨hed, hdcb.1⟩, Or.inl ⟨had ⟨hx.1, hxd⟩, hxd⟩]
· /- If `(c, d)` is nonempty, then take `d' ∈ (c, d)`. Since the base set of `ec` includes
`[a, d)`, it includes `[a, d'] ⊆ [a, d)` as well. -/
rw [disjoint_left] at he
@@ -566,7 +566,7 @@ theorem localTrivAsLocalEquiv_trans (i j : ι) :
/-- Topological structure on the total space of a fiber bundle created from core, designed so
that all the local trivialization are continuous. -/
instance toTopologicalSpace : TopologicalSpace (Bundle.TotalSpace Z.Fiber) :=
- TopologicalSpace.generateFrom <| ⋃ (i : ι) (s : Set (B × F)) (_s_open : IsOpen s),
+ TopologicalSpace.generateFrom <| ⋃ (i : ι) (s : Set (B × F)) (_ : IsOpen s),
{(Z.localTrivAsLocalEquiv i).source ∩ Z.localTrivAsLocalEquiv i ⁻¹' s}
#align fiber_bundle_core.to_topological_space FiberBundleCore.toTopologicalSpace
@@ -803,7 +803,7 @@ variable (a : FiberPrebundle F E) {e : Pretrivialization F (π E)}
/-- Topology on the total space that will make the prebundle into a bundle. -/
def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E) :=
- ⨆ (e : Pretrivialization F (π E)) (_he : e ∈ a.pretrivializationAtlas),
+ ⨆ (e : Pretrivialization F (π E)) (_ : e ∈ a.pretrivializationAtlas),
coinduced e.setSymm instTopologicalSpaceSubtype
#align fiber_prebundle.total_space_topology FiberPrebundle.totalSpaceTopology
Forward-port leanprover-community/mathlib#19107
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit 0187644979f2d3e10a06e916a869c994facd9a87
+! leanprover-community/mathlib commit f7ebde7ee0d1505dfccac8644ae12371aa3c1c9f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -779,6 +779,7 @@ end FiberBundleCore
/-! ### Prebundle construction for constructing fiber bundles -/
variable (F) (E : B → Type _) [TopologicalSpace B] [TopologicalSpace F]
+ [∀ x, TopologicalSpace (E x)]
/-- This structure permits to define a fiber bundle when trivializations are given as local
equivalences but there is not yet a topology on the total space. The total space is hence given a
@@ -792,6 +793,7 @@ structure FiberPrebundle where
pretrivialization_mem_atlas : ∀ x : B, pretrivializationAt x ∈ pretrivializationAtlas
continuous_trivChange : ∀ e, e ∈ pretrivializationAtlas → ∀ e', e' ∈ pretrivializationAtlas →
ContinuousOn (e ∘ e'.toLocalEquiv.symm) (e'.target ∩ e'.toLocalEquiv.symm ⁻¹' e.source)
+ totalSpaceMk_inducing : ∀ b : B, Inducing (pretrivializationAt b ∘ totalSpaceMk b)
#align fiber_prebundle FiberPrebundle
namespace FiberPrebundle
@@ -862,35 +864,38 @@ theorem totalSpaceMk_preimage_source (b : B) :
eq_univ_of_forall (a.mem_pretrivializationAt_source b)
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
-/-- Topology on the fibers `E b` induced by the map `E b → E.TotalSpace`. -/
-def fiberTopology (b : B) : TopologicalSpace (E b) :=
- TopologicalSpace.induced (totalSpaceMk b) a.totalSpaceTopology
-#align fiber_prebundle.fiber_topology FiberPrebundle.fiberTopology
-
-@[continuity]
-theorem inducing_totalSpaceMk (b : B) :
- @Inducing _ _ (a.fiberTopology b) a.totalSpaceTopology (totalSpaceMk b) := by
- letI := a.totalSpaceTopology
- letI := a.fiberTopology b
- exact ⟨rfl⟩
-#align fiber_prebundle.inducing_total_space_mk FiberPrebundle.inducing_totalSpaceMk
-
@[continuity]
theorem continuous_totalSpaceMk (b : B) :
- Continuous[a.fiberTopology b, a.totalSpaceTopology] (totalSpaceMk b) := by
- letI := a.totalSpaceTopology; letI := a.fiberTopology b
- exact (a.inducing_totalSpaceMk b).continuous
+ Continuous[_, a.totalSpaceTopology] (totalSpaceMk b) := by
+ letI := a.totalSpaceTopology
+ let e := a.trivializationOfMemPretrivializationAtlas (a.pretrivialization_mem_atlas b)
+ rw [e.toLocalHomeomorph.continuous_iff_continuous_comp_left
+ (a.totalSpaceMk_preimage_source b)]
+ exact continuous_iff_le_induced.mpr (le_antisymm_iff.mp (a.totalSpaceMk_inducing b).induced).1
#align fiber_prebundle.continuous_total_space_mk FiberPrebundle.continuous_totalSpaceMk
+theorem inducing_totalSpaceMk_of_inducing_comp (b : B)
+ (h : Inducing (a.pretrivializationAt b ∘ totalSpaceMk b)) :
+ @Inducing _ _ _ a.totalSpaceTopology (totalSpaceMk b) := by
+ letI := a.totalSpaceTopology
+ rw [← restrict_comp_codRestrict (a.mem_pretrivializationAt_source b)] at h
+ apply Inducing.of_codRestrict (a.mem_pretrivializationAt_source b)
+ refine inducing_of_inducing_compose ?_ (continuousOn_iff_continuous_restrict.mp
+ (a.trivializationOfMemPretrivializationAtlas
+ (a.pretrivialization_mem_atlas b)).continuous_toFun) h
+ exact (a.continuous_totalSpaceMk b).codRestrict (a.mem_pretrivializationAt_source b)
+#align fiber_prebundle.inducing_total_space_mk_of_inducing_comp FiberPrebundle.inducing_totalSpaceMk_of_inducing_comp
+
/-- Make a `FiberBundle` from a `FiberPrebundle`. Concretely this means
that, given a `FiberPrebundle` structure for a sigma-type `E` -- which consists of a
number of "pretrivializations" identifying parts of `E` with product spaces `U × F` -- one
establishes that for the topology constructed on the sigma-type using
`FiberPrebundle.totalSpaceTopology`, these "pretrivializations" are actually
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
-def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology :=
- let _ := a.totalSpaceTopology; let _ := a.fiberTopology
- { totalSpaceMk_inducing' := a.inducing_totalSpaceMk,
+def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology _ :=
+ let _ := a.totalSpaceTopology
+ { totalSpaceMk_inducing' := fun b ↦ a.inducing_totalSpaceMk_of_inducing_comp b
+ (a.totalSpaceMk_inducing b)
trivializationAtlas' :=
{ e | ∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
e = a.trivializationOfMemPretrivializationAtlas he₀ },
@@ -902,7 +907,6 @@ def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology
theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) := by
letI := a.totalSpaceTopology
- letI := a.fiberTopology
letI := a.toFiberBundle
exact FiberBundle.continuous_proj F E
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -349,8 +349,8 @@ theorem FiberBundle.exists_trivialization_Icc_subset [ConditionallyCompleteLinea
have sne : s.Nonempty := ⟨a, ha⟩
have hsb : b ∈ upperBounds s := fun x hx => hx.1.2
have sbd : BddAbove s := ⟨b, hsb⟩
- set c := supₛ s
- have hsc : IsLUB s c := isLUB_csupₛ sne sbd
+ set c := sSup s
+ have hsc : IsLUB s c := isLUB_csSup sne sbd
have hc : c ∈ Icc a b := ⟨hsc.1 ha, hsc.2 hsb⟩
obtain ⟨-, ec : Trivialization F (π E), hec : Icc a c ⊆ ec.baseSet⟩ : c ∈ s := by
cases' hc.1.eq_or_lt with heq hlt
@@ -574,7 +574,7 @@ variable (b : B) (a : F)
theorem open_source' (i : ι) : IsOpen (Z.localTrivAsLocalEquiv i).source := by
apply TopologicalSpace.GenerateOpen.basic
- simp only [exists_prop, mem_unionᵢ, mem_singleton_iff]
+ simp only [exists_prop, mem_iUnion, mem_singleton_iff]
refine ⟨i, Z.baseSet i ×ˢ univ, (Z.isOpen_baseSet i).prod isOpen_univ, ?_⟩
ext p
simp only [localTrivAsLocalEquiv_apply, prod_mk_mem_set_prod_eq, mem_inter_iff, and_self_iff,
@@ -597,11 +597,11 @@ def localTriv (i : ι) : Trivialization F Z.proj where
rw [continuousOn_open_iff (Z.open_source' i)]
intro s s_open
apply TopologicalSpace.GenerateOpen.basic
- simp only [exists_prop, mem_unionᵢ, mem_singleton_iff]
+ simp only [exists_prop, mem_iUnion, mem_singleton_iff]
exact ⟨i, s, s_open, rfl⟩
continuous_invFun := by
refine continuousOn_open_of_generateFrom fun t ht ↦ ?_
- simp only [exists_prop, mem_unionᵢ, mem_singleton_iff] at ht
+ simp only [exists_prop, mem_iUnion, mem_singleton_iff] at ht
obtain ⟨j, s, s_open, ts⟩ : ∃ j s, IsOpen s ∧
t = (localTrivAsLocalEquiv Z j).source ∩ localTrivAsLocalEquiv Z j ⁻¹' s := ht
rw [ts]
@@ -808,11 +808,11 @@ def totalSpaceTopology (a : FiberPrebundle F E) : TopologicalSpace (TotalSpace E
theorem continuous_symm_of_mem_pretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@ContinuousOn _ _ _ a.totalSpaceTopology e.toLocalEquiv.symm e.target := by
refine' fun z H U h => preimage_nhdsWithin_coinduced' H (le_def.1 (nhds_mono _) U h)
- exact le_supᵢ₂ (α := TopologicalSpace (TotalSpace E)) e he
+ exact le_iSup₂ (α := TopologicalSpace (TotalSpace E)) e he
#align fiber_prebundle.continuous_symm_of_mem_pretrivialization_atlas FiberPrebundle.continuous_symm_of_mem_pretrivializationAtlas
theorem isOpen_source (e : Pretrivialization F (π E)) : IsOpen[a.totalSpaceTopology] e.source := by
- refine isOpen_supᵢ_iff.mpr fun e' => isOpen_supᵢ_iff.mpr fun _ => ?_
+ refine isOpen_iSup_iff.mpr fun e' => isOpen_iSup_iff.mpr fun _ => ?_
refine' isOpen_coinduced.mpr (isOpen_induced_iff.mpr ⟨e.target, e.open_target, _⟩)
ext ⟨x, hx⟩
simp only [mem_preimage, Pretrivialization.setSymm, restrict, e.mem_target, e.mem_source,
@@ -837,8 +837,8 @@ def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtl
open_source := a.isOpen_source e,
continuous_toFun := by
refine continuousOn_iff'.mpr fun s hs => ⟨e ⁻¹' s ∩ e.source,
- isOpen_supᵢ_iff.mpr fun e' => ?_, by rw [inter_assoc, inter_self]; rfl⟩
- refine isOpen_supᵢ_iff.mpr fun he' => ?_
+ isOpen_iSup_iff.mpr fun e' => ?_, by rw [inter_assoc, inter_self]; rfl⟩
+ refine isOpen_iSup_iff.mpr fun he' => ?_
rw [isOpen_coinduced, isOpen_induced_iff]
obtain ⟨u, hu1, hu2⟩ := continuousOn_iff'.mp (a.continuous_trivChange _ he _ he') s hs
have hu3 := congr_arg (fun s => (fun x : e'.target => (x : B × F)) ⁻¹' s) hu2
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel, Floris van Doorn, Heather Macbeth
! This file was ported from Lean 3 source module topology.fiber_bundle.basic
-! leanprover-community/mathlib commit be2c24f56783935652cefffb4bfca7e4b25d167e
+! leanprover-community/mathlib commit 0187644979f2d3e10a06e916a869c994facd9a87
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -170,12 +170,12 @@ Fiber bundle, topological bundle, structure group
-/
-variable {ι : Type _} {B : Type _} {F : Type _}
+variable {ι B F X : Type _} [TopologicalSpace X]
open TopologicalSpace Filter Set Bundle Topology
attribute [mfld_simps]
- TotalSpace.proj totalSpaceMk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul TotalSpace.mk_cast
+ totalSpaceMk coe_fst coe_snd coe_snd_map_apply coe_snd_map_smul TotalSpace.mk_cast
/-! ### General definition of fiber bundles -/
@@ -282,6 +282,52 @@ theorem totalSpaceMk_closedEmbedding [T1Space B] (x : B) : ClosedEmbedding (@tot
rw [range_sigmaMk]
exact isClosed_singleton.preimage <| continuous_proj F E⟩
+variable {E F}
+
+@[simp, mfld_simps]
+theorem mem_trivializationAt_proj_source {x : TotalSpace E} :
+ x ∈ (trivializationAt F E x.proj).source :=
+ (Trivialization.mem_source _).mpr <| mem_baseSet_trivializationAt F E x.proj
+#align fiber_bundle.mem_trivialization_at_proj_source FiberBundle.mem_trivializationAt_proj_source
+
+-- porting note: removed `@[simp, mfld_simps]` because `simp` could already prove this
+theorem trivializationAt_proj_fst {x : TotalSpace E} :
+ ((trivializationAt F E x.proj) x).1 = x.proj :=
+ Trivialization.coe_fst' _ <| mem_baseSet_trivializationAt F E x.proj
+#align fiber_bundle.trivialization_at_proj_fst FiberBundle.trivializationAt_proj_fst
+
+variable (F)
+
+open Trivialization
+
+/-- Characterization of continuous functions (at a point, within a set) into a fiber bundle. -/
+theorem continuousWithinAt_totalSpace (f : X → TotalSpace E) {s : Set X} {x₀ : X} :
+ ContinuousWithinAt f s x₀ ↔
+ ContinuousWithinAt (fun x => (f x).proj) s x₀ ∧
+ ContinuousWithinAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) s x₀ := by
+ refine' (and_iff_right_iff_imp.2 fun hf => _).symm.trans (and_congr_right fun hf => _)
+ · refine' (continuous_proj F E).continuousWithinAt.comp hf (mapsTo_image f s)
+ have h1 : (fun x => (f x).proj) ⁻¹' (trivializationAt F E (f x₀).proj).baseSet ∈ 𝓝[s] x₀ :=
+ hf.preimage_mem_nhdsWithin ((open_baseSet _).mem_nhds (mem_baseSet_trivializationAt F E _))
+ have h2 : ContinuousWithinAt (fun x => (trivializationAt F E (f x₀).proj (f x)).1) s x₀ := by
+ refine'
+ hf.congr_of_eventuallyEq (eventually_of_mem h1 fun x hx => _) trivializationAt_proj_fst
+ simp_rw [coe_fst' _ hx]
+ rw [(trivializationAt F E (f x₀).proj).continuousWithinAt_iff_continuousWithinAt_comp_left]
+ · simp_rw [continuousWithinAt_prod_iff, Function.comp, Trivialization.coe_coe, h2, true_and_iff]
+ · apply mem_trivializationAt_proj_source
+ · rwa [source_eq, preimage_preimage]
+#align fiber_bundle.continuous_within_at_total_space FiberBundle.continuousWithinAt_totalSpace
+
+/-- Characterization of continuous functions (at a point) into a fiber bundle. -/
+theorem continuousAt_totalSpace (f : X → TotalSpace E) {x₀ : X} :
+ ContinuousAt f x₀ ↔
+ ContinuousAt (fun x => (f x).proj) x₀ ∧
+ ContinuousAt (fun x => ((trivializationAt F E (f x₀).proj) (f x)).2) x₀ := by
+ simp_rw [← continuousWithinAt_univ]
+ exact continuousWithinAt_totalSpace F f
+#align fiber_bundle.continuous_at_total_space FiberBundle.continuousAt_totalSpace
+
end FiberBundle
variable (F E)
@@ -50,7 +50,7 @@ fiber bundle from trivializations given as local equivalences with minimum addit
### Basic definitions
-* `FiberBundle F E` : Structure saying that `E : B → Type*` is a fiber bundle with fiber `F`.
+* `FiberBundle F E` : Structure saying that `E : B → Type _` is a fiber bundle with fiber `F`.
### Construction of a bundle from trivializations
@@ -91,15 +91,15 @@ a family of trivializations (constituting the data) which are all mutually-compa
The PRs #13052 and #13175 implemented this change.
There is still the choice about whether to hold this data at the level of fiber bundles or of vector
-bundles. As of PR #17505, the data is all held in `FiberBundle`, with `vector_bundle` a
+bundles. As of PR #17505, the data is all held in `FiberBundle`, with `VectorBundle` a
(propositional) mixin stating fiberwise-linearity.
This allows bundles to carry instances of typeclasses in which the scalar field, `R`, does not
appear as a parameter. Notably, we would like a vector bundle over `R` with fiber `F` over base `B`
-to be a `charted_space (B × F)`, with the trivializations providing the charts. This would be a
+to be a `ChartedSpace (B × F)`, with the trivializations providing the charts. This would be a
dangerous instance for typeclass inference, because `R` does not appear as a parameter in
-`charted_space (B × F)`. But if the data of the trivializations is held in `FiberBundle`, then a
-fiber bundle with fiber `F` over base `B` can be a `charted_space (B × F)`, and this is safe for
+`ChartedSpace (B × F)`. But if the data of the trivializations is held in `FiberBundle`, then a
+fiber bundle with fiber `F` over base `B` can be a `ChartedSpace (B × F)`, and this is safe for
typeclass inference.
We expect that this choice of definition will also streamline constructions of fiber bundles with
@@ -135,7 +135,7 @@ This has several practical advantages:
* without any work, one gets a topological space structure on the fiber. And if `F` has more
structure it is inherited for free by the fiber.
* In the case of the tangent bundle of manifolds, this implies that on vector spaces the derivative
-(from `F` to `F`) and the manifold derivative (from `tangent_space I x` to `tangent_space I' (f x)`)
+(from `F` to `F`) and the manifold derivative (from `TangentSpace I x` to `TangentSpace I' (f x)`)
are equal.
A drawback is that some silly constructions will typecheck: in the case of the tangent bundle, one
@@ -145,8 +145,8 @@ lose the identification of the tangent space to `F` with `F`. There is however a
this situation: even if Lean can not check that two basepoints are defeq, it will accept the fact
that the tangent spaces are the same. For instance, if two maps `f` and `g` are locally inverse to
each other, one can express that the composition of their derivatives is the identity of
-`tangent_space I x`. One could fear issues as this composition goes from `tangent_space I x` to
-`tangent_space I (g (f x))` (which should be the same, but should not be obvious to Lean
+`TangentSpace I x`. One could fear issues as this composition goes from `TangentSpace I x` to
+`TangentSpace I (g (f x))` (which should be the same, but should not be obvious to Lean
as it does not know that `g (f x) = x`). As these types are the same to Lean (equal to `F`), there
are in fact no dependent type difficulties here!
@@ -363,7 +363,7 @@ end FiberBundle
space `B`. Note that "bundle" is used in its mathematical sense. This is the (computer science)
bundled version, i.e., all the relevant data is contained in the following structure. A family of
local trivializations is indexed by a type `ι`, on open subsets `baseSet i` for each `i : ι`.
-Trivialization changes from `i` to `j` are given by continuous maps `coord_change i j` from
+Trivialization changes from `i` to `j` are given by continuous maps `coordChange i j` from
`baseSet i ∩ baseSet j` to the set of homeomorphisms of `F`, but we express them as maps
`B → F → F` and require continuity on `(baseSet i ∩ baseSet j) × F` to avoid the topology on the
space of continuous maps on `F`. -/
@@ -786,7 +786,7 @@ theorem isOpen_target_of_mem_pretrivializationAtlas_inter (e e' : Pretrivializat
/-- Promotion from a `Pretrivialization` to a `Trivialization`. -/
def trivializationOfMemPretrivializationAtlas (he : e ∈ a.pretrivializationAtlas) :
@Trivialization B F _ _ _ a.totalSpaceTopology (π E) :=
- let _ := a.totalSpaceTopology;
+ let _ := a.totalSpaceTopology
{ e with
open_source := a.isOpen_source e,
continuous_toFun := by
@@ -816,7 +816,7 @@ theorem totalSpaceMk_preimage_source (b : B) :
eq_univ_of_forall (a.mem_pretrivializationAt_source b)
#align fiber_prebundle.total_space_mk_preimage_source FiberPrebundle.totalSpaceMk_preimage_source
-/-- Topology on the fibers `E b` induced by the map `E b → E.total_space`. -/
+/-- Topology on the fibers `E b` induced by the map `E b → E.TotalSpace`. -/
def fiberTopology (b : B) : TopologicalSpace (E b) :=
TopologicalSpace.induced (totalSpaceMk b) a.totalSpaceTopology
#align fiber_prebundle.fiber_topology FiberPrebundle.fiberTopology
@@ -843,7 +843,7 @@ establishes that for the topology constructed on the sigma-type using
`FiberPrebundle.totalSpaceTopology`, these "pretrivializations" are actually
"trivializations" (i.e., homeomorphisms with respect to the constructed topology). -/
def toFiberBundle : @FiberBundle B F _ _ E a.totalSpaceTopology a.fiberTopology :=
- let _ := a.totalSpaceTopology; let _ := a.fiberTopology;
+ let _ := a.totalSpaceTopology; let _ := a.fiberTopology
{ totalSpaceMk_inducing' := a.inducing_totalSpaceMk,
trivializationAtlas' :=
{ e | ∃ (e₀ : _) (he₀ : e₀ ∈ a.pretrivializationAtlas),
@@ -862,7 +862,7 @@ theorem continuous_proj : @Continuous _ _ a.totalSpaceTopology _ (π E) := by
#align fiber_prebundle.continuous_proj FiberPrebundle.continuous_proj
/-- For a fiber bundle `E` over `B` constructed using the `FiberPrebundle` mechanism,
-continuity of a function `total_space E → X` on an open set `s` can be checked by precomposing at
+continuity of a function `TotalSpace E → X` on an open set `s` can be checked by precomposing at
each point with the pretrivialization used for the construction at that point. -/
theorem continuousOn_of_comp_right {X : Type _} [TopologicalSpace X] {f : TotalSpace E → X}
{s : Set B} (hs : IsOpen s) (hf : ∀ b ∈ s,
The unported dependencies are