Trivializations #
Main definitions #
Basic definitions #
Trivialization F p
: structure extending partial homeomorphisms, defining a local trivialization of a topological spaceZ
with projectionp
and fiberF
.Pretrivialization F proj
: trivialization as a partial equivalence, mainly used when the topology on the total space has not yet been defined.
Operations on bundles #
We provide the following operations on Trivialization
s.
Trivialization.compHomeomorph
: given a local trivializatione
of a fiber bundlep : Z → B
and a homeomorphismh : Z' ≃ₜ Z
, returns a local trivialization of the fiber bundlep ∘ h
.
Implementation notes #
Previously, in mathlib, there was a structure topological_vector_bundle.trivialization
which
extended another structure topological_fiber_bundle.trivialization
by a linearity hypothesis. As
of PR https://github.com/leanprover-community/mathlib3/pull/17359, we have changed this to a single structure
Trivialization
(no namespace), together with a mixin class Trivialization.IsLinear
.
This permits all the data of a vector bundle to be held at the level of fiber bundles, so that the
same trivializations can underlie an object's structure as (say) a vector bundle over ℂ
and as a
vector bundle over ℝ
, as well as its structure simply as a fiber bundle.
This might be a little surprising, given the general trend of the library to ever-increased bundling. But in this case the typical motivation for more bundling does not apply: there is no algebraic or order structure on the whole type of linear (say) trivializations of a bundle. Indeed, since trivializations only have meaning on their base sets (taking junk values outside), the type of linear trivializations is not even particularly well-behaved.
This structure contains the information left for a local trivialization (which is implemented
below as Trivialization F proj
) if the total space has not been given a topology, but we
have a topology on both the fiber and the base space. Through the construction
topological_fiber_prebundle F proj
it will be possible to promote a
Pretrivialization F proj
to a Trivialization F proj
.
- map_source' : ∀ ⦃x : Z⦄, x ∈ self.source → ↑self.toPartialEquiv x ∈ self.target
- map_target' : ∀ ⦃x : B × F⦄, x ∈ self.target → self.invFun x ∈ self.source
- right_inv' : ∀ ⦃x : B × F⦄, x ∈ self.target → ↑self.toPartialEquiv (self.invFun x) = x
- open_target : IsOpen self.target
- baseSet : Set B
- open_baseSet : IsOpen self.baseSet
- proj_toFun : ∀ p ∈ self.source, (↑self.toPartialEquiv p).1 = proj p
Instances For
Coercion of a pretrivialization to a function. We don't use e.toFun
in the CoeFun
instance
because it is actually e.toPartialEquiv.toFun
, so simp
will apply lemmas about
toPartialEquiv
. While we may want to switch to this behavior later, doing it mid-port will break a
lot of proofs.
Equations
- ↑e = ↑e.toPartialEquiv
Instances For
Equations
- Pretrivialization.instCoeFunForallProd = { coe := Pretrivialization.toFun' }
If the fiber is nonempty, then the projection also is.
Composition of inverse and coercion from the subtype of the target.
Equations
- e.setSymm = e.target.restrict ↑e.symm
Instances For
A fiberwise inverse to e
. This is the function F → E b
that induces a local inverse
B × F → TotalSpace F E
of e
on e.baseSet
. It is defined to be 0
outside e.baseSet
.
Instances For
A structure extending partial homeomorphisms, defining a local trivialization of a projection
proj : Z → B
with fiber F
, as a partial homeomorphism between Z
and B × F
defined between
two sets of the form proj ⁻¹' baseSet
and baseSet × F
, acting trivially on the first coordinate.
- map_source' : ∀ ⦃x : Z⦄, x ∈ self.source → ↑self.toPartialEquiv x ∈ self.target
- map_target' : ∀ ⦃x : B × F⦄, x ∈ self.target → self.invFun x ∈ self.source
- right_inv' : ∀ ⦃x : B × F⦄, x ∈ self.target → ↑self.toPartialEquiv (self.invFun x) = x
- open_source : IsOpen self.source
- open_target : IsOpen self.target
- continuousOn_toFun : ContinuousOn (↑self.toPartialEquiv) self.source
- continuousOn_invFun : ContinuousOn self.invFun self.target
- baseSet : Set B
- open_baseSet : IsOpen self.baseSet
- proj_toFun : ∀ p ∈ self.source, (↑self.toPartialHomeomorph p).1 = proj p
Instances For
Coercion of a trivialization to a function. We don't use e.toFun
in the CoeFun
instance
because it is actually e.toPartialEquiv.toFun
, so simp
will apply lemmas about
toPartialEquiv
. While we may want to switch to this behavior later, doing it mid-port will break a
lot of proofs.
Equations
- ↑e = ↑e.toPartialEquiv
Instances For
Natural identification as a Pretrivialization
.
Equations
- e.toPretrivialization = { toPartialEquiv := e.toPartialEquiv, open_target := ⋯, baseSet := e.baseSet, open_baseSet := ⋯, source_eq := ⋯, target_eq := ⋯, proj_toFun := ⋯ }
Instances For
Equations
- Trivialization.instCoeFunForallProd = { coe := Trivialization.toFun' }
Equations
- Trivialization.instCoePretrivialization = { coe := Trivialization.toPretrivialization }
The preimage of a subset of the base set is homeomorphic to the product with the fiber.
Equations
- e.preimageHomeomorph hb = (e.homeomorphOfImageSubsetSource ⋯ ⋯).trans ((Homeomorph.Set.prod s Set.univ).trans ((Homeomorph.refl ↑s).prodCongr (Homeomorph.Set.univ F)))
Instances For
Auxiliary definition to avoid looping in dsimp
with Trivialization.preimageHomeomorph_symm_apply
.
Equations
- Trivialization.preimageHomeomorph_symm_apply.aux e hb = (e.preimageHomeomorph hb).symm
Instances For
The source is homeomorphic to the product of the base set with the fiber.
Equations
- e.sourceHomeomorphBaseSetProd = (Homeomorph.setCongr ⋯).trans (e.preimageHomeomorph ⋯)
Instances For
Auxiliary definition to avoid looping in dsimp
with Trivialization.sourceHomeomorphBaseSetProd_symm_apply
.
Equations
- Trivialization.sourceHomeomorphBaseSetProd_symm_apply.aux e = e.sourceHomeomorphBaseSetProd.symm
Instances For
Each fiber of a trivialization is homeomorphic to the specified fiber.
Equations
- e.preimageSingletonHomeomorph hb = (e.preimageHomeomorph ⋯).trans (((Homeomorph.homeomorphOfUnique (↑{b}) PUnit.{1}).prodCongr (Homeomorph.refl F)).trans (Homeomorph.punitProd F))
Instances For
In the domain of a bundle trivialization, the projection is continuous
Composition of a Trivialization
and a Homeomorph
.
Equations
- e.compHomeomorph h = { toPartialHomeomorph := h.toPartialHomeomorph.trans e.toPartialHomeomorph, baseSet := e.baseSet, open_baseSet := ⋯, source_eq := ⋯, target_eq := ⋯, proj_toFun := ⋯ }
Instances For
Read off the continuity of a function f : Z → X
at z : Z
by transferring via a
trivialization of Z
containing z
.
Read off the continuity of a function f : X → Z
at x : X
by transferring via a
trivialization of Z
containing f x
.
A fiberwise inverse to e'
. The function F → E x
that induces a local inverse
B × F → TotalSpace F E
of e'
on e'.baseSet
. It is defined to be 0
outside e'.baseSet
.
Equations
- e.symm b y = e.toPretrivialization.symm b y
Instances For
If e
is a Trivialization
of proj : Z → B
with fiber F
and h
is a homeomorphism
F ≃ₜ F'
, then e.trans_fiber_homeomorph h
is the trivialization of proj
with the fiber F'
that sends p : Z
to ((e p).1, h (e p).2)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Coordinate transformation in the fiber induced by a pair of bundle trivializations. See also
Trivialization.coordChangeHomeomorph
for a version bundled as F ≃ₜ F
.
Equations
- e₁.coordChange e₂ b x = (↑e₂ (↑e₁.symm (b, x))).2
Instances For
Coordinate transformation in the fiber induced by a pair of bundle trivializations, as a homeomorphism.
Equations
- e₁.coordChangeHomeomorph e₂ h₁ h₂ = { toFun := e₁.coordChange e₂ b, invFun := e₂.coordChange e₁ b, left_inv := ⋯, right_inv := ⋯, continuous_toFun := ⋯, continuous_invFun := ⋯ }
Instances For
Restrict a Trivialization
to an open set in the base.
Equations
Instances For
Given two bundle trivializations e
, e'
of proj : Z → B
and a set s : Set B
such that
the base sets of e
and e'
intersect frontier s
on the same set and e p = e' p
whenever
proj p ∈ e.baseSet ∩ frontier s
, e.piecewise e' s Hs Heq
is the bundle trivialization over
Set.ite s e.baseSet e'.baseSet
that is equal to e
on proj ⁻¹ s
and is equal to e'
otherwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given two bundle trivializations e
, e'
of a topological fiber bundle proj : Z → B
over a linearly ordered base B
and a point a ∈ e.baseSet ∩ e'.baseSet
such that
e
equals e'
on proj ⁻¹' {a}
, e.piecewise_le_of_eq e' a He He' Heq
is the bundle
trivialization over Set.ite (Iic a) e.baseSet e'.baseSet
that is equal to e
on points p
such that proj p ≤ a
and is equal to e'
otherwise.
Instances For
Given two bundle trivializations e
, e'
of a topological fiber bundle proj : Z → B
over a
linearly ordered base B
and a point a ∈ e.baseSet ∩ e'.baseSet
, e.piecewise_le e' a He He'
is the bundle trivialization over Set.ite (Iic a) e.baseSet e'.baseSet
that is equal to e
on
points p
such that proj p ≤ a
and is equal to ((e' p).1, h (e' p).2)
otherwise, where
h = e'.coord_change_homeomorph e _ _
is the homeomorphism of the fiber such that
h (e' p).2 = (e p).2
whenever e p = a
.
Equations
- e.piecewiseLe e' a He He' = e.piecewiseLeOfEq (e'.transFiberHomeomorph (e'.coordChangeHomeomorph e He' He)) a He He' ⋯
Instances For
Given two bundle trivializations e
, e'
over disjoint sets, e.disjoint_union e' H
is the
bundle trivialization over the union of the base sets that agrees with e
and e'
over their
base sets.
Equations
- One or more equations did not get rendered due to their size.