mathlib3 documentation

geometry.manifold.smooth_manifold_with_corners

Smooth manifolds (possibly with boundary or corners) #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

A smooth manifold is a manifold modelled on a normed vector space, or a subset like a half-space (to get manifolds with boundaries) for which the changes of coordinates are smooth maps. We define a model with corners as a map I : H → E embedding nicely the topological space H in the vector space E (or more precisely as a structure containing all the relevant properties). Given such a model with corners I on (E, H), we define the groupoid of local homeomorphisms of H which are smooth when read in E (for any regularity n : ℕ∞). With this groupoid at hand and the general machinery of charted spaces, we thus get the notion of C^n manifold with respect to any model with corners I on (E, H). We also introduce a specific type class for C^∞ manifolds as these are the most commonly used.

Main definitions #

As specific examples of models with corners, we define (in the file real_instances.lean)

With these definitions at hand, to invoke an n-dimensional real manifold without boundary, one could use

variables {n : ℕ} {M : Type*} [topological_space M] [charted_space (euclidean_space (fin n)) M] [smooth_manifold_with_corners (𝓡 n) M].

However, this is not the recommended way: a theorem proved using this assumption would not apply for instance to the tangent space of such a manifold, which is modelled on (euclidean_space (fin n)) × (euclidean_space (fin n)) and not on euclidean_space (fin (2 * n))! In the same way, it would not apply to product manifolds, modelled on (euclidean_space (fin n)) × (euclidean_space (fin m)). The right invocation does not focus on one specific construction, but on all constructions sharing the right properties, like

variables {E : Type*} [normed_add_comm_group E] [normed_space ℝ E] [finite_dimensional ℝ E] {I : model_with_corners ℝ E E} [I.boundaryless] {M : Type*} [topological_space M] [charted_space E M] [smooth_manifold_with_corners I M]

Here, I.boundaryless is a typeclass property ensuring that there is no boundary (this is for instance the case for model_with_corners_self, or products of these). Note that one could consider as a natural assumption to only use the trivial model with corners model_with_corners_self ℝ E, but again in product manifolds the natural model with corners will not be this one but the product one (and they are not defeq as (λp : E × F, (p.1, p.2)) is not defeq to the identity). So, it is important to use the above incantation to maximize the applicability of theorems.

Implementation notes #

We want to talk about manifolds modelled on a vector space, but also on manifolds with boundary, modelled on a half space (or even manifolds with corners). For the latter examples, we still want to define smooth functions, tangent bundles, and so on. As smooth functions are well defined on vector spaces or subsets of these, one could take for model space a subtype of a vector space. With the drawback that the whole vector space itself (which is the most basic example) is not directly a subtype of itself: the inclusion of univ : set E in set E would show up in the definition, instead of id.

A good abstraction covering both cases it to have a vector space E (with basic example the Euclidean space), a model space H (with basic example the upper half space), and an embedding of H into E (which can be the identity for H = E, or subtype.val for manifolds with corners). We say that the pair (E, H) with their embedding is a model with corners, and we encompass all the relevant properties (in particular the fact that the image of H in E should have unique differentials) in the definition of model_with_corners.

We concentrate on C^∞ manifolds: all the definitions work equally well for C^n manifolds, but later on it is a pain to carry all over the smoothness parameter, especially when one wants to deal with C^k functions as there would be additional conditions k ≤ n everywhere. Since one deals almost all the time with C^∞ (or analytic) manifolds, this seems to be a reasonable choice that one could revisit later if needed. C^k manifolds are still available, but they should be called using has_groupoid M (cont_diff_groupoid k I) where I is the model with corners.

I have considered using the model with corners I as a typeclass argument, possibly out_param, to get lighter notations later on, but it did not turn out right, as on E × F there are two natural model with corners, the trivial (identity) one, and the product one, and they are not defeq and one needs to indicate to Lean which one we want to use. This means that when talking on objects on manifolds one will most often need to specify the model with corners one is using. For instance, the tangent bundle will be tangent_bundle I M and the derivative will be mfderiv I I' f, instead of the more natural notations tangent_bundle 𝕜 M and mfderiv 𝕜 f (the field has to be explicit anyway, as some manifolds could be considered both as real and complex manifolds).

Models with corners. #

@[nolint, ext]
structure model_with_corners (𝕜 : Type u_1) [nontrivially_normed_field 𝕜] (E : Type u_2) [normed_add_comm_group E] [normed_space 𝕜 E] (H : Type u_3) [topological_space H] :
Type (max u_2 u_3)

A structure containing informations on the way a space H embeds in a model vector space E over the field 𝕜. This is all what is needed to define a smooth manifold with model space H, and model vector space E.

Instances for model_with_corners
theorem model_with_corners.ext_iff {𝕜 : Type u_1} {_inst_1 : nontrivially_normed_field 𝕜} {E : Type u_2} {_inst_2 : normed_add_comm_group E} {_inst_3 : normed_space 𝕜 E} {H : Type u_3} {_inst_4 : topological_space H} (x y : model_with_corners 𝕜 E H) :
theorem model_with_corners.ext {𝕜 : Type u_1} {_inst_1 : nontrivially_normed_field 𝕜} {E : Type u_2} {_inst_2 : normed_add_comm_group E} {_inst_3 : normed_space 𝕜 E} {H : Type u_3} {_inst_4 : topological_space H} (x y : model_with_corners 𝕜 E H) (h : x.to_local_equiv = y.to_local_equiv) :
x = y
@[protected, instance]
Equations
@[protected]
def model_with_corners.symm {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) :

The inverse to a model with corners, only registered as a local equiv.

Equations
def model_with_corners.simps.apply (𝕜 : Type u_1) [nontrivially_normed_field 𝕜] (E : Type u_2) [normed_add_comm_group E] [normed_space 𝕜 E] (H : Type u_3) [topological_space H] (I : model_with_corners 𝕜 E H) :
H E

See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.

Equations
@[simp]
theorem model_with_corners.mk_coe {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (e : local_equiv H E) (a : e.source = set.univ) (b : unique_diff_on 𝕜 e.target) (c : continuous e.to_fun . "continuity'") (d : continuous e.inv_fun . "continuity'") :
@[simp]
theorem model_with_corners.mk_symm {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (e : local_equiv H E) (a : e.source = set.univ) (b : unique_diff_on 𝕜 e.target) (c : continuous e.to_fun . "continuity'") (d : continuous e.inv_fun . "continuity'") :
@[protected, continuity]
@[protected]
theorem model_with_corners.continuous_at {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {x : H} :
@[protected]
theorem model_with_corners.continuous_within_at {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {s : set H} {x : H} :
@[continuity]
@[protected]
@[protected, simp]
theorem model_with_corners.left_inv {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) (x : H) :
(I.symm) (I x) = x
@[simp]
theorem model_with_corners.symm_comp_self {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) :
@[protected]
@[protected, simp]
theorem model_with_corners.right_inv {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {x : E} (hx : x set.range I) :
I ((I.symm) x) = x
theorem model_with_corners.preimage_image {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) (s : set H) :
I ⁻¹' (I '' s) = s
@[protected]
theorem model_with_corners.image_eq {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) (s : set H) :
@[protected]
theorem model_with_corners.map_nhds_within_eq {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) (s : set H) (x : H) :
theorem model_with_corners.image_mem_nhds_within {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {x : H} {s : set H} (hs : s nhds x) :
theorem model_with_corners.symm_map_nhds_within_image {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {x : H} {s : set H} :
@[simp]

In the trivial model with corners, the associated local equiv is the identity.

def model_with_corners.prod {𝕜 : Type u} [nontrivially_normed_field 𝕜] {E : Type v} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type w} [topological_space H] (I : model_with_corners 𝕜 E H) {E' : Type v'} [normed_add_comm_group E'] [normed_space 𝕜 E'] {H' : Type w'} [topological_space H'] (I' : model_with_corners 𝕜 E' H') :
model_with_corners 𝕜 (E × E') (model_prod H H')

Given two model_with_corners I on (E, H) and I' on (E', H'), we define the model with corners I.prod I' on (E × E', model_prod H H'). This appears in particular for the manifold structure on the tangent bundle to a manifold modelled on (E, H): it will be modelled on (E × E, H × E). See note [Manifold type tags] for explanation about model_prod H H' vs H × H'.

Equations
Instances for model_with_corners.prod
theorem model_with_corners.prod_apply {𝕜 : Type u} [nontrivially_normed_field 𝕜] {E : Type v} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type w} [topological_space H] (I : model_with_corners 𝕜 E H) {E' : Type v'} [normed_add_comm_group E'] [normed_space 𝕜 E'] {H' : Type w'} [topological_space H'] (I' : model_with_corners 𝕜 E' H') (x : model_prod H H') :
(I.prod I') x = (I x.fst, I' x.snd)
theorem model_with_corners.prod_symm_apply {𝕜 : Type u} [nontrivially_normed_field 𝕜] {E : Type v} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type w} [topological_space H] (I : model_with_corners 𝕜 E H) {E' : Type v'} [normed_add_comm_group E'] [normed_space 𝕜 E'] {H' : Type w'} [topological_space H'] (I' : model_with_corners 𝕜 E' H') (x : E × E') :
((I.prod I').symm) x = ((I.symm) x.fst, (I'.symm) x.snd)
def model_with_corners.pi {𝕜 : Type u} [nontrivially_normed_field 𝕜] {ι : Type v} [fintype ι] {E : ι Type w} [Π (i : ι), normed_add_comm_group (E i)] [Π (i : ι), normed_space 𝕜 (E i)] {H : ι Type u'} [Π (i : ι), topological_space (H i)] (I : Π (i : ι), model_with_corners 𝕜 (E i) (H i)) :
model_with_corners 𝕜 (Π (i : ι), E i) (model_pi H)

Given a finite family of model_with_corners I i on (E i, H i), we define the model with corners pi I on (Π i, E i, model_pi H). See note [Manifold type tags] for explanation about model_pi H.

Equations
@[reducible]

Special case of product model with corners, which is trivial on the second factor. This shows up as the model to tangent bundles.

Equations
@[simp]
theorem model_with_corners_prod_coe {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {E' : Type u_3} [normed_add_comm_group E'] [normed_space 𝕜 E'] {H : Type u_6} [topological_space H] {H' : Type u_7} [topological_space H'] (I : model_with_corners 𝕜 E H) (I' : model_with_corners 𝕜 E' H') :
@[simp]
theorem model_with_corners_prod_coe_symm {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {E' : Type u_3} [normed_add_comm_group E'] [normed_space 𝕜 E'] {H : Type u_6} [topological_space H] {H' : Type u_7} [topological_space H'] (I : model_with_corners 𝕜 E H) (I' : model_with_corners 𝕜 E' H') :
((I.prod I').symm) = prod.map (I.symm) (I'.symm)
@[class]
structure model_with_corners.boundaryless {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) :
Prop

Property ensuring that the model with corners I defines manifolds without boundary.

Instances of this typeclass
@[protected, instance]

The trivial model with corners has no boundary

@[protected, instance]

If two model with corners are boundaryless, their product also is

Smooth functions on models with corners #

def cont_diff_groupoid (n : ℕ∞) {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) :

Given a model with corners (E, H), we define the groupoid of C^n transformations of H as the maps that are C^n when read in E through I.

Equations
Instances for cont_diff_groupoid
theorem cont_diff_groupoid_le {m n : ℕ∞} {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) (h : m n) :

Inclusion of the groupoid of C^n local diffeos in the groupoid of C^m local diffeos when m ≤ n

The groupoid of 0-times continuously differentiable maps is just the groupoid of all local homeomorphisms

theorem of_set_mem_cont_diff_groupoid (n : ℕ∞) {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] (I : model_with_corners 𝕜 E H) {s : set H} (hs : is_open s) :

An identity local homeomorphism belongs to the C^n groupoid.

The composition of a local homeomorphism from H to M and its inverse belongs to the C^n groupoid.

theorem cont_diff_groupoid_prod {𝕜 : Type u_1} [nontrivially_normed_field 𝕜] {E : Type u_2} [normed_add_comm_group E] [normed_space 𝕜 E] {H : Type u_3} [topological_space H] {E' : Type u_5} {H' : Type u_6} [normed_add_comm_group E'] [normed_space 𝕜 E'] [topological_space H'] {I : model_with_corners 𝕜 E H} {I' : model_with_corners 𝕜 E' H'} {e : local_homeomorph H H} {e' : local_homeomorph H' H'} (he : e cont_diff_groupoid I) (he' : e' cont_diff_groupoid I') :

The product of two smooth local homeomorphisms is smooth.

@[protected, instance]

The C^n groupoid is closed under restriction.

Smooth manifolds with corners #

@[protected, instance]

For any model with corners, the model space is a smooth manifold

The maximal atlas of M for the smooth manifold with corners structure corresponding to the model with corners I.

Equations
@[protected, instance]

The product of two smooth manifolds with corners is naturally a smooth manifold with corners.

Extended charts #

In a smooth manifold with corners, the model space is the space H. However, we will also need to use extended charts taking values in the model vector space E. These extended charts are not local_homeomorph as the target is not open in E in general, but we can still register them as local_equiv.

@[simp]
def local_homeomorph.extend {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) :

Given a chart f on a manifold with corners, f.extend I is the extended chart to the model vector space.

Equations
theorem local_homeomorph.extend_coe {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) :
theorem local_homeomorph.extend_coe_symm {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) :
((f.extend I).symm) = (f.symm) (I.symm)
theorem local_homeomorph.maps_to_extend {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s : set M} (hs : s f.to_local_equiv.source) :
theorem local_homeomorph.extend_left_inv {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {x : M} (hxf : x f.to_local_equiv.source) :
((f.extend I).symm) ((f.extend I) x) = x
theorem local_homeomorph.extend_source_mem_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {x : M} (h : x f.to_local_equiv.source) :
theorem local_homeomorph.extend_source_mem_nhds_within {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s : set M} {x : M} (h : x f.to_local_equiv.source) :
theorem local_homeomorph.map_extend_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {x : M} (hy : x f.to_local_equiv.source) :
theorem local_homeomorph.continuous_at_extend_symm' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {x : E} (h : x (f.extend I).target) :
theorem local_homeomorph.is_open_extend_preimage' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s : set E} (hs : is_open s) :
theorem local_homeomorph.map_extend_nhds_within_eq_image {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s : set M} {y : M} (hy : y f.to_local_equiv.source) :
theorem local_homeomorph.map_extend_nhds_within {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s : set M} {y : M} (hy : y f.to_local_equiv.source) :
theorem local_homeomorph.extend_preimage_mem_nhds_within {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {s t : set M} {x : M} (h : x f.to_local_equiv.source) (ht : t nhds_within x s) :

Technical lemma ensuring that the preimage under an extended chart of a neighborhood of a point in the source is a neighborhood of the preimage, within a set.

theorem local_homeomorph.extend_preimage_mem_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (f : local_homeomorph M H) (I : model_with_corners 𝕜 E H) {t : set M} {x : M} (h : x f.to_local_equiv.source) (ht : t nhds x) :
((f.extend I).symm) ⁻¹' t nhds ((f.extend I) x)

Technical lemma to rewrite suitably the preimage of an intersection under an extended chart, to bring it into a convenient form to apply derivative lemmas.

We use the name extend_coord_change for (f'.extend I).symm ≫ f.extend I.

@[simp]
def ext_chart_at {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) [charted_space H M] (x : M) :

The preferred extended chart on a manifold with corners around a point x, from a neighborhood of x to the model vector space.

Equations
theorem ext_chart_at_coe {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem ext_chart_at_coe_symm {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem is_open_ext_chart_at_source {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem mem_ext_chart_source {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem ext_chart_at_to_inv {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem ext_chart_at_source_mem_nhds' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) :
theorem ext_chart_at_source_mem_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem ext_chart_at_source_mem_nhds_within' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s : set M} [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) :
theorem ext_chart_at_source_mem_nhds_within {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s : set M} [charted_space H M] :
theorem continuous_at_ext_chart_at' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) :
theorem continuous_at_ext_chart_at {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem map_ext_chart_at_nhds' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) [charted_space H M] {x y : M} (hy : y (ext_chart_at I x).source) :
theorem map_ext_chart_at_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] :
theorem ext_chart_at_target_mem_nhds_within' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {y : M} (hy : y (ext_chart_at I x).source) :
theorem continuous_at_ext_chart_at_symm'' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {y : E} (h : y (ext_chart_at I x).target) :
theorem continuous_at_ext_chart_at_symm' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) :
theorem is_open_ext_chart_at_preimage' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) [charted_space H M] {s : set E} (hs : is_open s) :
theorem map_ext_chart_at_nhds_within_eq_image' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s : set M} [charted_space H M] {y : M} (hy : y (ext_chart_at I x).source) :
theorem map_ext_chart_at_nhds_within' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s : set M} [charted_space H M] {y : M} (hy : y (ext_chart_at I x).source) :
theorem map_ext_chart_at_symm_nhds_within' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s : set M} [charted_space H M] {y : M} (hy : y (ext_chart_at I x).source) :
theorem ext_chart_at_preimage_mem_nhds_within' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s t : set M} [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) (ht : t nhds_within x' s) :

Technical lemma ensuring that the preimage under an extended chart of a neighborhood of a point in the source is a neighborhood of the preimage, within a set.

theorem ext_chart_at_preimage_mem_nhds_within {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {s t : set M} [charted_space H M] (ht : t nhds_within x s) :

Technical lemma ensuring that the preimage under an extended chart of a neighborhood of the base point is a neighborhood of the preimage, within a set.

theorem ext_chart_at_preimage_mem_nhds' {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {t : set M} [charted_space H M] {x' : M} (h : x' (ext_chart_at I x).source) (ht : t nhds x') :
theorem ext_chart_at_preimage_mem_nhds {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) (x : M) {t : set M} [charted_space H M] (ht : t nhds x) :

Technical lemma ensuring that the preimage under an extended chart of a neighborhood of a point is a neighborhood of the preimage.

Technical lemma to rewrite suitably the preimage of an intersection under an extended chart, to bring it into a convenient form to apply derivative lemmas.

We use the name ext_coord_change for (ext_chart_at I x').symm ≫ ext_chart_at I x.

@[simp]
def written_in_ext_chart_at {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} {E' : Type u_5} {M' : Type u_6} {H' : Type u_7} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) [normed_add_comm_group E'] [normed_space 𝕜 E'] [topological_space H'] [topological_space M'] (I' : model_with_corners 𝕜 E' H') [charted_space H M] [charted_space H' M'] (x : M) (f : M M') :
E E'

Conjugating a function to write it in the preferred charts around x. The manifold derivative of f will just be the derivative of this conjugated function.

Equations
theorem ext_chart_at_self_eq (𝕜 : Type u_1) {E : Type u_2} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] (I : model_with_corners 𝕜 E H) {x : H} :
theorem ext_chart_at_self_apply (𝕜 : Type u_1) {E : Type u_2} {H : Type u_4} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] (I : model_with_corners 𝕜 E H) {x y : H} :
(ext_chart_at I x) y = I y

In the case of the manifold structure on a vector space, the extended charts are just the identity.

theorem ext_chart_model_space_apply (𝕜 : Type u_1) {E : Type u_2} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] {x y : E} :
theorem ext_chart_at_prod {𝕜 : Type u_1} {E : Type u_2} {M : Type u_3} {H : Type u_4} {E' : Type u_5} {M' : Type u_6} {H' : Type u_7} [nontrivially_normed_field 𝕜] [normed_add_comm_group E] [normed_space 𝕜 E] [topological_space H] [topological_space M] (I : model_with_corners 𝕜 E H) [normed_add_comm_group E'] [normed_space 𝕜 E'] [topological_space H'] [topological_space M'] (I' : model_with_corners 𝕜 E' H') [charted_space H M] [charted_space H' M'] (x : M × M') :