Skip to content

feat: immersions are smooth#28796

Open
grunweg wants to merge 47 commits intoleanprover-community:masterfrom
grunweg:immersions-cn
Open

feat: immersions are smooth#28796
grunweg wants to merge 47 commits intoleanprover-community:masterfrom
grunweg:immersions-cn

Conversation

@grunweg
Copy link
Copy Markdown
Contributor

@grunweg grunweg commented Aug 23, 2025

The conventional textbook definition demands that an immersion be smooth.
When asking for the immersion to have local slice charts (as we do), this implies smoothness automatically.


Open in Gitpod

@grunweg grunweg added the WIP Work in progress label Aug 23, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Aug 23, 2025

PR summary 0401a17286

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.Geometry.Manifold.Immersion 2230 2239 +9 (+0.40%)
Mathlib.Geometry.Manifold.SmoothEmbedding 2234 2241 +7 (+0.31%)
Import changes for all files
Files Import difference
Mathlib.Geometry.Manifold.SmoothEmbedding 7
Mathlib.Geometry.Manifold.Immersion 9

Declarations diff

++ contMDiffAt
++ contMDiffOn
++ continuousAt
++ continuousOn
++ mapsto_domChart_source_codChart_source
+++ contMDiff

You can run this locally as follows
## summary with just the declaration names:
./scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@grunweg grunweg force-pushed the immersions-cn branch 2 times, most recently from abc479f to b35944e Compare August 23, 2025 22:00
@grunweg grunweg changed the title feat: smooth immersions are smooth feat: immersions are smooth Aug 23, 2025
@grunweg grunweg added the t-differential-geometry Manifolds etc label Aug 23, 2025
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Aug 23, 2025
@mathlib4-merge-conflict-bot mathlib4-merge-conflict-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Sep 8, 2025
@mathlib4-merge-conflict-bot
Copy link
Copy Markdown
Collaborator

This pull request has conflicts, please merge master and resolve them.

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Oct 1, 2025
@mathlib4-merge-conflict-bot mathlib4-merge-conflict-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Nov 19, 2025
@mathlib4-merge-conflict-bot
Copy link
Copy Markdown
Collaborator

This pull request has conflicts, please merge master and resolve them.

@chrisflav
Copy link
Copy Markdown
Member

Note that you have to merge master for the linting stage.

theorem continuousAt (h : IsImmersionAtOfComplement F I J n f x) : ContinuousAt f x :=
h.continuousOn.continuousAt (h.domChart.open_source.mem_nhds (mem_domChart_source h))

variable [IsManifold I n M] [IsManifold I' n M'] [IsManifold J n N]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that really needed? If a map is an immersion, then in some charts in the C^n maximal atlas it is well behaved. By definition, the changes of coordinates wrt these charts are C^n, so no need to add more assumptions, right?

Same thing elsewhere in the PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my book, IsManifold says exactly "the changes of coordinates are well-behaved". The hypothesis on I' is not necessary; let me remove it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. What I'm saying is that here it's not needed because what you need is already implied by the assumption IsImmersionAt.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not convinced. I presume you're thinking of the following argument.

  • IsImmersionAt implies that f read in some charts (h.domChart.extend I and h.codChart.extend J) is smooth --- let's call it f'
  • if both extended charts are smooth, thus also g := (h.codChart.extend J).symm ∘ f' ∘ (h.domChart.extend I) is smooth
  • locally, f = g, so we are done

Steps 1 and 3 work (and Lean agrees). The issue is in the second step: why would e.g. h.domChart.extend I be smooth? The key lemmas ("at atlas member is C^n" contMDiffOn_of_mem_maximalAtlas resp. the inverse version contMDiffOn_symm_of_mem_maximalAtlas) use the manifold structure...

do you see something I don't see, which is how to get around this?

Copy link
Copy Markdown
Contributor Author

@grunweg grunweg Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ContMDiffOn/ContMDiffAt are defined w.r.t. the extended charts at that point --- but being an immersion only gives you some chart in the maximal atlas. To me, requiring some compatibility condition makes sense.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the definition of IsImmersionAt (or, unfolding everything, in LocalPresentationAt), there is the condition that the chart you get is in IsManifold.maximalAtlas I n M. This tells you that the composition of this chart with (the inverse of) any of the reference charts gives a C^n map (at least locally around the point you're looking at). By composition, you get that the composition of any two of the reference charts is also C^n there. I don't see what more you could need.

@sgouezel sgouezel added awaiting-author A reviewer has asked the author a question or requested changes. and removed maintainer-merge A reviewer has approved the changed; awaiting maintainer approval. labels Jan 15, 2026
@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 15, 2026

-awaiting-author

@github-actions github-actions bot removed the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2026
@sgouezel sgouezel added the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2026
@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Jan 15, 2026

-awaiting-author

@github-actions github-actions bot removed the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2026
@sgouezel sgouezel added the awaiting-author A reviewer has asked the author a question or requested changes. label Jan 15, 2026
@mathlib4-merge-conflict-bot mathlib4-merge-conflict-bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Jan 18, 2026
@mathlib4-merge-conflict-bot
Copy link
Copy Markdown
Collaborator

This pull request has conflicts, please merge master and resolve them.

grunweg added a commit to grunweg/mathlib4 that referenced this pull request Mar 18, 2026
grunweg added a commit to grunweg/mathlib4 that referenced this pull request Mar 18, 2026
Cherry-picked form leanprover-community#28796, and used to prove immersions are smooth.
@grunweg
Copy link
Copy Markdown
Contributor Author

grunweg commented Mar 18, 2026

Status update: I have started to work on the generalisation mentioned above. I'm certain it will work, but there is a bunch of missing API I'll have to fill in first. In the mean-time, the preliminary lemmas have incurred a merge conflict --- I have split out #36816 with just them.

@grunweg grunweg added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Mar 18, 2026
mathlib-bors bot pushed a commit that referenced this pull request Mar 19, 2026
Cherry-picked from #28796: it might not get used in the eventual PR there, but this lemma seems useful independently.
(In any case, I would like to use these lemmas now, and there is no reason to wait until I have filled in the missing API for #28796.)
@mathlib-dependent-issues mathlib-dependent-issues bot removed the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Mar 19, 2026
@grunweg grunweg removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 19, 2026
justus-springer pushed a commit to justus-springer/mathlib4 that referenced this pull request Mar 28, 2026
…er-community#36816)

Cherry-picked from leanprover-community#28796: it might not get used in the eventual PR there, but this lemma seems useful independently.
(In any case, I would like to use these lemmas now, and there is no reason to wait until I have filled in the missing API for leanprover-community#28796.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes. t-differential-geometry Manifolds etc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants