# mathlibdocumentation

geometry.manifold.cont_mdiff

# Smooth functions between smooth manifolds #

We define `Cⁿ` functions between smooth manifolds, as functions which are `Cⁿ` in charts, and prove basic properties of these notions.

## Main definitions and statements #

Let `M` and `M'` be two smooth manifolds, with respect to model with corners `I` and `I'`. Let `f : M → M'`.

• `cont_mdiff_within_at I I' n f s x` states that the function `f` is `Cⁿ` within the set `s` around the point `x`.
• `cont_mdiff_at I I' n f x` states that the function `f` is `Cⁿ` around `x`.
• `cont_mdiff_on I I' n f s` states that the function `f` is `Cⁿ` on the set `s`
• `cont_mdiff I I' n f` states that the function `f` is `Cⁿ`.
• `cont_mdiff_on.comp` gives the invariance of the `Cⁿ` property under composition
• `cont_mdiff_on.cont_mdiff_on_tangent_map_within` states that the bundled derivative of a `Cⁿ` function in a domain is `Cᵐ` when `m + 1 ≤ n`.
• `cont_mdiff.cont_mdiff_tangent_map` states that the bundled derivative of a `Cⁿ` function is `Cᵐ` when `m + 1 ≤ n`.
• `cont_mdiff_iff_cont_diff` states that, for functions between vector spaces, manifold-smoothness is equivalent to usual smoothness.

We also give many basic properties of smooth functions between manifolds, following the API of smooth functions between vector spaces.

## Implementation details #

Many properties follow for free from the corresponding properties of functions in vector spaces, as being `Cⁿ` is a local property invariant under the smooth groupoid. We take advantage of the general machinery developed in `local_invariant_properties.lean` to get these properties automatically. For instance, the fact that being `Cⁿ` does not depend on the chart one considers is given by `lift_prop_within_at_indep_chart`.

For this to work, the definition of `cont_mdiff_within_at` and friends has to follow definitionally the setup of local invariant properties. Still, we recast the definition in terms of extended charts in `cont_mdiff_on_iff` and `cont_mdiff_iff`.

### Definition of smooth functions between manifolds #

def cont_diff_within_at_prop {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') (n : with_top ) (f : H → H') (s : set H) (x : H) :
Prop

Property in the model space of a model with corners of being `C^n` within at set at a point, when read in the model vector space. This property will be lifted to manifolds to define smooth functions between manifolds.

Equations
theorem cont_diff_within_at_local_invariant_prop {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') (n : with_top ) :
n)

Being `Cⁿ` in the model space is a local property, invariant under smooth maps. Therefore, it will lift nicely to manifolds.

theorem cont_diff_within_at_local_invariant_prop_mono {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') (n : with_top ) ⦃s : set H⦄ ⦃x : H⦄ ⦃t : set H⦄ ⦃f : H → H'⦄ (hts : t s) (h : n f s x) :
n f t x
theorem cont_diff_within_at_local_invariant_prop_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) (x : H) :
def cont_mdiff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (n : with_top ) (f : M → M') (s : set M) (x : M) :
Prop

A function is `n` times continuously differentiable within a set at a point in a manifold if it is continuous and it is `n` times continuously differentiable in this set around this point, when read in the preferred chart at this point.

Equations
• n f s x = x
def smooth_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (f : M → M') (s : set M) (x : M) :
Prop

Abbreviation for `cont_mdiff_within_at I I' ⊤ f s x`. See also documentation for `smooth`.

Equations
• I' f s x = f s x
def cont_mdiff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (n : with_top ) (f : M → M') (x : M) :
Prop

A function is `n` times continuously differentiable at a point in a manifold if it is continuous and it is `n` times continuously differentiable around this point, when read in the preferred chart at this point.

Equations
def smooth_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (f : M → M') (x : M) :
Prop

Abbreviation for `cont_mdiff_at I I' ⊤ f x`. See also documentation for `smooth`.

Equations
• I' f x = I' f x
def cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (n : with_top ) (f : M → M') (s : set M) :
Prop

A function is `n` times continuously differentiable in a set of a manifold if it is continuous and, for any pair of points, it is `n` times continuously differentiable on this set in the charts around these points.

Equations
• I' n f s = ∀ (x : M), x s n f s x
def smooth_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (f : M → M') (s : set M) :
Prop

Abbreviation for `cont_mdiff_on I I' ⊤ f s`. See also documentation for `smooth`.

Equations
• I' f s = I' f s
def cont_mdiff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (n : with_top ) (f : M → M') :
Prop

A function is `n` times continuously differentiable in a manifold if it is continuous and, for any pair of points, it is `n` times continuously differentiable in the charts around these points.

Equations
• I' n f = ∀ (x : M), I' n f x
def smooth {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} (I : H) {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} (I' : H') {M' : Type u_7} [ M'] (f : M → M') :
Prop

Abbreviation for `cont_mdiff I I' ⊤ f`. Short note to work with these abbreviations: a lemma of the form `cont_mdiff_foo.bar` will apply fine to an assumption `smooth_foo` using dot notation or normal notation. If the consequence `bar` of the lemma involves `cont_diff`, it is still better to restate the lemma replacing `cont_diff` with `smooth` both in the assumption and in the conclusion, to make it possible to use `smooth` consistently. This also applies to `smooth_at`, `smooth_on` and `smooth_within_at`.

Equations

### Basic properties of smooth functions between manifolds #

theorem cont_mdiff.smooth {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} (h : I' f) :
I' f
theorem smooth.cont_mdiff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} (h : I' f) :
I' f
theorem cont_mdiff_on.smooth_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} (h : I' f s) :
I' f s
theorem smooth_on.cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} (h : I' f s) :
I' f s
theorem cont_mdiff_at.smooth_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} (h : I' f x) :
I' f x
theorem smooth_at.cont_mdiff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} (h : I' f x) :
I' f x
theorem cont_mdiff_within_at.smooth_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} (h : f s x) :
I' f s x
theorem smooth_within_at.cont_mdiff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} (h : I' f s x) :
f s x
theorem cont_mdiff.cont_mdiff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {n : with_top } (h : I' n f) :
I' n f x
theorem smooth.smooth_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} (h : I' f) :
I' f x
theorem cont_mdiff_within_at_univ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {n : with_top } :
n f set.univ x I' n f x
theorem smooth_at_univ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} :
I' f set.univ x I' f x
theorem cont_mdiff_on_univ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } :
I' n f set.univ I' n f
theorem smooth_on_univ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} :
I' f set.univ I' f
theorem cont_mdiff_within_at_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } :
n f s x x ((ext_chart_at I' (f x)) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (s f ⁻¹' (ext_chart_at I' (f x)).source)) ( x) x)

One can reformulate smoothness within a set at a point as continuity within this set at this point, and smoothness in the corresponding extended chart.

theorem cont_mdiff_within_at_iff'' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } :
n f s x x x f) (((ext_chart_at I x).symm) ⁻¹' s ( x) x)

One can reformulate smoothness within a set at a point as continuity within this set at this point, and smoothness in the corresponding extended chart. This form states smoothness of `f` written in the `ext_chart_at`s within the set `(ext_chart_at I x).symm ⁻¹' s ∩ range I`. This set is larger than the set `(ext_chart_at I x).target ∩ (ext_chart_at I x).symm ⁻¹' (s ∩ f ⁻¹' (ext_chart_at I' (f x)).source)` used in `cont_mdiff_within_at_iff` but their germs at `ext_chart_at I x x` are equal. It may be useful to rewrite using `cont_mdiff_within_at_iff''` in the assumptions of a lemma and using `cont_mdiff_within_at_iff` in the goal.

theorem cont_mdiff_within_at_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } :
n f s x x n ((ext_chart_at I' (f x)) f) (s f ⁻¹' (ext_chart_at I' (f x)).source) x

One can reformulate smoothness within a set at a point as continuity within this set at this point, and smoothness in the corresponding extended chart in the target.

theorem smooth_within_at_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} :
I' f s x x ((ext_chart_at I' (f x)) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (s f ⁻¹' (ext_chart_at I' (f x)).source)) ( x) x)
theorem smooth_within_at_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} :
I' f s x x ((ext_chart_at I' (f x)) f) (s f ⁻¹' (ext_chart_at I' (f x)).source) x
theorem cont_mdiff_at_ext_chart_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {x : M} {n : with_top } :
n x) x
theorem cont_mdiff_within_at_iff' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {x : M} {n : with_top } {x' : M} {y : M'} (hx : x' ) (hy : f x' ) :
n f s x' x' ((ext_chart_at I' y) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (s f ⁻¹' (ext_chart_at I' y).source)) ( x) x')

One can reformulate smoothness within a set at a point as continuity within this set at this point, and smoothness in the corresponding extended chart.

theorem cont_mdiff_at_ext_chart_at' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {x : M} {n : with_top } {x' : M} (h : x' ) :
n x) x'
theorem cont_mdiff_on_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {n : with_top } :
I' n f s ∀ (x : M) (y : M'), n ((ext_chart_at I' y) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (s f ⁻¹' (ext_chart_at I' y).source))

One can reformulate smoothness on a set as continuity on this set, and smoothness in any extended chart.

theorem cont_mdiff_on_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {n : with_top } :
I' n f s ∀ (y : M'), E') n ((ext_chart_at I' y) f) (s f ⁻¹' (ext_chart_at I' y).source)

One can reformulate smoothness on a set as continuity on this set, and smoothness in any extended chart in the target.

theorem smooth_on_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} :
I' f s ∀ (x : M) (y : M'), ((ext_chart_at I' y) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (s f ⁻¹' (ext_chart_at I' y).source))
theorem smooth_on_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} :
I' f s ∀ (y : M'), E') ((ext_chart_at I' y) f) (s f ⁻¹' (ext_chart_at I' y).source)
theorem cont_mdiff_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {n : with_top } :
I' n f ∀ (x : M) (y : M'), n ((ext_chart_at I' y) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (f ⁻¹' (ext_chart_at I' y).source))

One can reformulate smoothness as continuity and smoothness in any extended chart.

theorem cont_mdiff_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {n : with_top } :
I' n f ∀ (y : M'), E') n ((ext_chart_at I' y) f) (f ⁻¹' (ext_chart_at I' y).source)

One can reformulate smoothness as continuity and smoothness in any extended chart in the target.

theorem smooth_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} :
I' f ∀ (x : M) (y : M'), ((ext_chart_at I' y) f ((ext_chart_at I x).symm)) ((ext_chart_at I x).target ((ext_chart_at I x).symm) ⁻¹' (f ⁻¹' (ext_chart_at I' y).source))
theorem smooth_iff_target {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} :
I' f ∀ (y : M'), E') ((ext_chart_at I' y) f) (f ⁻¹' (ext_chart_at I' y).source)

### Deducing smoothness from higher smoothness #

theorem cont_mdiff_within_at.of_le {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {m n : with_top } (hf : n f s x) (le : m n) :
m f s x
theorem cont_mdiff_at.of_le {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {m n : with_top } (hf : I' n f x) (le : m n) :
I' m f x
theorem cont_mdiff_on.of_le {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {m n : with_top } (hf : I' n f s) (le : m n) :
I' m f s
theorem cont_mdiff.of_le {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {m n : with_top } (hf : I' n f) (le : m n) :
I' m f

### Deducing smoothness from smoothness one step beyond #

theorem cont_mdiff_within_at.of_succ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : } (h : (n.succ) f s x) :
n f s x
theorem cont_mdiff_at.of_succ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {n : } (h : I' (n.succ) f x) :
I' n f x
theorem cont_mdiff_on.of_succ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : } (h : I' (n.succ) f s) :
I' n f s
theorem cont_mdiff.of_succ {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : } (h : I' (n.succ) f) :
I' n f

### Deducing continuity from smoothness #

theorem cont_mdiff_within_at.continuous_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } (hf : n f s x) :
x
theorem cont_mdiff_at.continuous_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {n : with_top } (hf : I' n f x) :
theorem cont_mdiff_on.continuous_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } (hf : I' n f s) :
theorem cont_mdiff.continuous {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } (hf : I' n f) :

### Deducing differentiability from smoothness #

theorem cont_mdiff_within_at.mdifferentiable_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } (hf : n f s x) (hn : 1 n) :
s x
theorem cont_mdiff_at.mdifferentiable_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} {n : with_top } (hf : I' n f x) (hn : 1 n) :
f x
theorem cont_mdiff_on.mdifferentiable_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } (hf : I' n f s) (hn : 1 n) :
f s
theorem cont_mdiff.mdifferentiable {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } (hf : I' n f) (hn : 1 n) :
I' f
theorem smooth.mdifferentiable {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} (hf : I' f) :
I' f
theorem smooth.mdifferentiable_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} (hf : I' f) :
f x
theorem smooth.mdifferentiable_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} (hf : I' f) :
s x

### `C^∞` smoothness #

theorem cont_mdiff_within_at_top {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} :
I' f s x ∀ (n : ), n f s x
theorem cont_mdiff_at_top {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {x : M} :
I' f x ∀ (n : ), I' n f x
theorem cont_mdiff_on_top {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} :
I' f s ∀ (n : ), I' n f s
theorem cont_mdiff_top {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} :
I' f ∀ (n : ), I' n f
theorem cont_mdiff_within_at_iff_nat {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } :
n f s x ∀ (m : ), m n m f s x

### Restriction to a smaller set #

theorem cont_mdiff_within_at.mono {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s t : set M} {x : M} {n : with_top } (hf : n f s x) (hts : t s) :
n f t x
theorem cont_mdiff_at.cont_mdiff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } (hf : I' n f x) :
n f s x
theorem smooth_at.smooth_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} (hf : I' f x) :
I' f s x
theorem cont_mdiff_on.mono {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s t : set M} {n : with_top } (hf : I' n f s) (hts : t s) :
I' n f t
theorem cont_mdiff.cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } (hf : I' n f) :
I' n f s
theorem smooth.smooth_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} (hf : I' f) :
I' f s
theorem cont_mdiff_within_at_inter' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s t : set M} {x : M} {n : with_top } (ht : t s) :
n f (s t) x n f s x
theorem cont_mdiff_within_at_inter {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s t : set M} {x : M} {n : with_top } (ht : t nhds x) :
n f (s t) x n f s x
theorem cont_mdiff_within_at.cont_mdiff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} {n : with_top } (h : n f s x) (ht : s nhds x) :
I' n f x
theorem smooth_within_at.smooth_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {x : M} (h : I' f s x) (ht : s nhds x) :
I' f x
theorem cont_mdiff_on_ext_chart_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {x : M} {n : with_top } :
n x)
theorem cont_mdiff_within_at_iff_cont_mdiff_on_nhds {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {x : M} {n : } :
n f s x ∃ (u : set M) (H_1 : u s)), I' n f u

A function is `C^n` within a set at a point, for `n : ℕ`, if and only if it is `C^n` on a neighborhood of this point.

theorem cont_mdiff_at_iff_cont_mdiff_on_nhds {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {x : M} {n : } :
I' n f x ∃ (u : set M) (H_1 : u nhds x), I' n f u

A function is `C^n` at a point, for `n : ℕ`, if and only if it is `C^n` on a neighborhood of this point.

### Congruence lemmas #

theorem cont_mdiff_within_at.congr {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {x : M} {n : with_top } (h : n f s x) (h₁ : ∀ (y : M), y sf₁ y = f y) (hx : f₁ x = f x) :
n f₁ s x
theorem cont_mdiff_within_at_congr {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {x : M} {n : with_top } (h₁ : ∀ (y : M), y sf₁ y = f y) (hx : f₁ x = f x) :
n f₁ s x n f s x
theorem cont_mdiff_within_at.congr_of_eventually_eq {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {x : M} {n : with_top } (h : n f s x) (h₁ : f₁ =ᶠ[ s] f) (hx : f₁ x = f x) :
n f₁ s x
theorem filter.eventually_eq.cont_mdiff_within_at_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {x : M} {n : with_top } (h₁ : f₁ =ᶠ[ s] f) (hx : f₁ x = f x) :
n f₁ s x n f s x
theorem cont_mdiff_at.congr_of_eventually_eq {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {x : M} {n : with_top } (h : I' n f x) (h₁ : f₁ =ᶠ[nhds x] f) :
I' n f₁ x
theorem filter.eventually_eq.cont_mdiff_at_iff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {x : M} {n : with_top } (h₁ : f₁ =ᶠ[nhds x] f) :
I' n f₁ x I' n f x
theorem cont_mdiff_on.congr {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {n : with_top } (h : I' n f s) (h₁ : ∀ (y : M), y sf₁ y = f y) :
I' n f₁ s
theorem cont_mdiff_on_congr {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f f₁ : M → M'} {s : set M} {n : with_top } (h₁ : ∀ (y : M), y sf₁ y = f y) :
I' n f₁ s I' n f s

### Locality #

theorem cont_mdiff_on_of_locally_cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } (h : ∀ (x : M), x s(∃ (u : set M), x u I' n f (s u))) :
I' n f s

Being `C^n` is a local property.

theorem cont_mdiff_of_locally_cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } (h : ∀ (x : M), ∃ (u : set M), x u I' n f u) :
I' n f

### Smoothness of the composition of smooth functions between manifolds #

theorem cont_mdiff_within_at.comp {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (x : M) (hg : I'' n g t (f x)) (hf : n f s x) (st : s t) :
I'' n (g f) s x

The composition of `C^n` functions within domains at points is `C^n`.

theorem cont_mdiff_on.comp {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (hg : I'' n g t) (hf : I' n f s) (st : s f ⁻¹' t) :
I'' n (g f) s

The composition of `C^n` functions on domains is `C^n`.

theorem cont_mdiff_on.comp' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (hg : I'' n g t) (hf : I' n f s) :
I'' n (g f) (s f ⁻¹' t)

The composition of `C^n` functions on domains is `C^n`.

theorem cont_mdiff.comp {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {g : M' → M''} (hg : I'' n g) (hf : I' n f) :
I'' n (g f)

The composition of `C^n` functions is `C^n`.

theorem cont_mdiff_within_at.comp' {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (x : M) (hg : I'' n g t (f x)) (hf : n f s x) :
I'' n (g f) (s f ⁻¹' t) x

The composition of `C^n` functions within domains at points is `C^n`.

theorem cont_mdiff_at.comp_cont_mdiff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {s : set M} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {g : M' → M''} (x : M) (hg : I'' n g (f x)) (hf : n f s x) :
I'' n (g f) s x

`g ∘ f` is `C^n` within `s` at `x` if `g` is `C^n` at `f x` and `f` is `C^n` within `s` at `x`.

theorem cont_mdiff_at.comp {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {g : M' → M''} (x : M) (hg : I'' n g (f x)) (hf : I' n f x) :
I'' n (g f) x

The composition of `C^n` functions at points is `C^n`.

theorem cont_mdiff.comp_cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {f : M → M'} {g : M' → M''} {s : set M} (hg : I'' n g) (hf : I' n f s) :
I'' n (g f) s
theorem smooth.comp_smooth_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {f : M → M'} {g : M' → M''} {s : set M} (hg : smooth I' I'' g) (hf : I' f s) :
I'' (g f) s
theorem cont_mdiff_on.comp_cont_mdiff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {n : with_top } {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (hg : I'' n g t) (hf : I' n f) (ht : ∀ (x : M), f x t) :
I'' n (g f)
theorem smooth_on.comp_smooth {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {f : M → M'} {E'' : Type u_14} [normed_group E''] [ E''] {H'' : Type u_15} [topological_space H''] {I'' : E'' H''} {M'' : Type u_16} [topological_space M''] [ M''] {t : set M'} {g : M' → M''} (hg : I'' g t) (hf : I' f) (ht : ∀ (x : M), f x t) :
I'' (g f)

### Atlas members are smooth #

theorem cont_mdiff_on_of_mem_maximal_atlas {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {n : with_top } {e : H} (h : e ) :

An atlas member is `C^n` for any `n`.

theorem cont_mdiff_on_symm_of_mem_maximal_atlas {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {n : with_top } {e : H} (h : e ) :

The inverse of an atlas member is `C^n` for any `n`.

theorem cont_mdiff_on_chart {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {x : M} {n : with_top } :
n
theorem cont_mdiff_on_chart_symm {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {x : M} {n : with_top } :
n x).symm)

### The identity is smooth #

theorem cont_mdiff_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {n : with_top } :
I n id
theorem smooth_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] :
I id
theorem cont_mdiff_on_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {s : set M} {n : with_top } :
n id s
theorem smooth_on_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {s : set M} :
I id s
theorem cont_mdiff_at_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {x : M} {n : with_top } :
n id x
theorem smooth_at_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {x : M} :
I id x
theorem cont_mdiff_within_at_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {s : set M} {x : M} {n : with_top } :
n id s x
theorem smooth_within_at_id {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {s : set M} {x : M} :
s x

### Constants are smooth #

theorem cont_mdiff_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {n : with_top } {c : M'} :
I' n (λ (x : M), c)
theorem cont_mdiff_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {n : with_top } [has_zero M'] :
I' n 0
theorem cont_mdiff_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {n : with_top } [has_one M'] :
I' n 1
theorem smooth_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {c : M'} :
I' (λ (x : M), c)
theorem smooth_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [has_one M'] :
I' 1
theorem smooth_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [has_zero M'] :
I' 0
theorem cont_mdiff_on_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {n : with_top } {c : M'} :
I' n (λ (x : M), c) s
theorem cont_mdiff_on_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {n : with_top } [has_zero M'] :
I' n 0 s
theorem cont_mdiff_on_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {n : with_top } [has_one M'] :
I' n 1 s
theorem smooth_on_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {c : M'} :
I' (λ (x : M), c) s
theorem smooth_on_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} [has_one M'] :
I' 1 s
theorem smooth_on_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} [has_zero M'] :
I' 0 s
theorem cont_mdiff_at_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} {n : with_top } {c : M'} :
I' n (λ (x : M), c) x
theorem cont_mdiff_at_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} {n : with_top } [has_zero M'] :
I' n 0 x
theorem cont_mdiff_at_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} {n : with_top } [has_one M'] :
I' n 1 x
theorem smooth_at_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} {c : M'} :
I' (λ (x : M), c) x
theorem smooth_at_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} [has_zero M'] :
I' 0 x
theorem smooth_at_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {x : M} [has_one M'] :
I' 1 x
theorem cont_mdiff_within_at_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} {n : with_top } {c : M'} :
n (λ (x : M), c) s x
theorem cont_mdiff_within_at_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} {n : with_top } [has_one M'] :
n 1 s x
theorem cont_mdiff_within_at_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} {n : with_top } [has_zero M'] :
n 0 s x
theorem smooth_within_at_const {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} {c : M'} :
I' (λ (x : M), c) s x
theorem smooth_within_at_zero {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} [has_zero M'] :
I' 0 s x
theorem smooth_within_at_one {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] {s : set M} {x : M} [has_one M'] :
I' 1 s x
theorem cont_mdiff_of_support {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] {F : Type u_8} [normed_group F] [ F] {n : with_top } {f : M → F} (hf : ∀ (x : M), x n f x) :
n f

### Equivalence with the basic definition for functions between vector spaces #

theorem cont_mdiff_within_at_iff_cont_diff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} {x : E} :
f s x f s x
theorem cont_mdiff_within_at.cont_diff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} {x : E} :
f s x f s x

Alias of the forward direction of cont_mdiff_within_at_iff_cont_diff_within_at`.

theorem cont_diff_within_at.cont_mdiff_within_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} {x : E} :
f s x f s x

Alias of the reverse direction of cont_mdiff_within_at_iff_cont_diff_within_at`.

theorem cont_mdiff_at_iff_cont_diff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {x : E} :
n f x n f x
theorem cont_diff_at.cont_mdiff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {x : E} :
n f x n f x

Alias of the reverse direction of cont_mdiff_at_iff_cont_diff_at`.

theorem cont_mdiff_at.cont_diff_at {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {x : E} :
n f x n f x

Alias of the forward direction of cont_mdiff_at_iff_cont_diff_at`.

theorem cont_mdiff_on_iff_cont_diff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} :
n f s n f s
theorem cont_mdiff_on.cont_diff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} :
n f s n f s

Alias of the forward direction of cont_mdiff_on_iff_cont_diff_on`.

theorem cont_diff_on.cont_mdiff_on {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} {s : set E} :
n f s n f s

Alias of the reverse direction of cont_mdiff_on_iff_cont_diff_on`.

theorem cont_mdiff_iff_cont_diff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} :
E') n f n f
theorem cont_diff.cont_mdiff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} :
n f E') n f

Alias of the reverse direction of cont_mdiff_iff_cont_diff`.

theorem cont_mdiff.cont_diff {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } {f : E → E'} :
E') n f n f

Alias of the forward direction of cont_mdiff_iff_cont_diff`.

### The tangent map of a smooth function is smooth #

theorem cont_mdiff_on.continuous_on_tangent_map_within_aux {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {n : with_top } {f : H → H'} {s : set H} (hf : I' n f s) (hn : 1 n) (hs : s) :

If a function is `C^n` with `1 ≤ n` on a domain with unique derivatives, then its bundled derivative is continuous. In this auxiliary lemma, we prove this fact when the source and target space are model spaces in models with corners. The general fact is proved in `cont_mdiff_on.continuous_on_tangent_map_within`

theorem cont_mdiff_on.cont_mdiff_on_tangent_map_within_aux {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {m n : with_top } {f : H → H'} {s : set H} (hf : I' n f s) (hmn : m + 1 n) (hs : s) :
m I' f s) ⁻¹' s)

If a function is `C^n` on a domain with unique derivatives, then its bundled derivative is `C^m` when `m+1 ≤ n`. In this auxiliary lemma, we prove this fact when the source and target space are model spaces in models with corners. The general fact is proved in `cont_mdiff_on.cont_mdiff_on_tangent_map_within`

theorem cont_mdiff_on.cont_mdiff_on_tangent_map_within {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {m n : with_top } (hf : I' n f s) (hmn : m + 1 n) (hs : s) :
m I' f s) ⁻¹' s)

If a function is `C^n` on a domain with unique derivatives, then its bundled derivative is `C^m` when `m+1 ≤ n`.

theorem cont_mdiff_on.continuous_on_tangent_map_within {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {s : set M} {n : with_top } (hf : I' n f s) (hmn : 1 n) (hs : s) :

If a function is `C^n` on a domain with unique derivatives, with `1 ≤ n`, then its bundled derivative is continuous there.

theorem cont_mdiff.cont_mdiff_tangent_map {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {m n : with_top } (hf : I' n f) (hmn : m + 1 n) :
I'.tangent m I' f)

If a function is `C^n`, then its bundled derivative is `C^m` when `m+1 ≤ n`.

theorem cont_mdiff.continuous_tangent_map {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {H' : Type u_6} {I' : H'} {M' : Type u_7} [ M'] [I's : M'] {f : M → M'} {n : with_top } (hf : I' n f) (hmn : 1 n) :

If a function is `C^n`, with `1 ≤ n`, then its bundled derivative is continuous.

### Smoothness of the projection in a basic smooth bundle #

theorem basic_smooth_vector_bundle_core.cont_mdiff_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } (Z : E') :
theorem basic_smooth_vector_bundle_core.smooth_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] (Z : E') :
theorem basic_smooth_vector_bundle_core.cont_mdiff_on_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } (Z : E')  :
theorem basic_smooth_vector_bundle_core.smooth_on_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] (Z : E')  :
s
theorem basic_smooth_vector_bundle_core.cont_mdiff_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } (Z : E')  :
theorem basic_smooth_vector_bundle_core.smooth_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] (Z : E')  :
p
theorem basic_smooth_vector_bundle_core.cont_mdiff_within_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] {n : with_top } (Z : E')  :
s p
theorem basic_smooth_vector_bundle_core.smooth_within_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] (Z : E')  :
s p
theorem basic_smooth_vector_bundle_core.smooth_const_section {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {E' : Type u_5} [normed_group E'] [ E'] (Z : E') (v : E') (h : ∀ (i j : M)) (x : M), (Z.coord_change i j ((i.val) x)) v = v) :
(I.prod E')) (show , from λ (x : M), x, v⟩)

If an element of `E'` is invariant under all coordinate changes, then one can define a corresponding section of the fiber bundle, which is smooth. This applies in particular to the zero section of a vector bundle. Another example (not yet defined) would be the identity section of the endomorphism bundle of a vector bundle.

### Smoothness of the tangent bundle projection #

theorem tangent_bundle.cont_mdiff_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {n : with_top } :
n M)
theorem tangent_bundle.smooth_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] :
I M)
theorem tangent_bundle.cont_mdiff_on_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {n : with_top } {s : set M)} :
n M) s
theorem tangent_bundle.smooth_on_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {s : set M)} :
I M) s
theorem tangent_bundle.cont_mdiff_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {n : with_top } {p : M} :
n M) p
theorem tangent_bundle.smooth_at_proj {𝕜 : Type u_1} {E : Type u_2} [normed_group E] [ E] {H : Type u_3} {I : H} {M : Type u_4} [ M] [Is : M] {p : M} :
I (