Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

[Merged by Bors] - feat(geometry/manifold/cont_mdiff): local structomorphisms of cont_diff_groupoid#17291

Closed
hrmacbeth wants to merge 7 commits intomasterfrom
local-structomorph-cont-diff
Closed

[Merged by Bors] - feat(geometry/manifold/cont_mdiff): local structomorphisms of cont_diff_groupoid#17291
hrmacbeth wants to merge 7 commits intomasterfrom
local-structomorph-cont-diff

Conversation

@hrmacbeth
Copy link
Copy Markdown
Member

Let M and M' be smooth manifolds with the same model-with-corners, I. Then f : M → M' is a local structomorphism for I, if and only if it is manifold-smooth on the domain of definition in both directions.


Open in Gitpod

@hrmacbeth hrmacbeth added awaiting-review The author would like community review of the PR awaiting-CI The author would like to see what CI has to say before doing more work. t-differential-geometry Manifolds, etc. labels Nov 1, 2022
@github-actions github-actions bot removed the awaiting-CI The author would like to see what CI has to say before doing more work. label Nov 1, 2022
Copy link
Copy Markdown
Member

@fpvandoorn fpvandoorn left a comment

Choose a reason for hiding this comment

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

I'll look through the long proof later, to see if I see any simplifications.

omit Is

/-- An element of `cont_diff_groupoid ⊤ I` is smooth for any `n`. -/
lemma cont_mdiff_on_of_mem_cont_diff_groupoid
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This can be simpler with cont_mdiff_on_of_mem_maximal_atlas and we might also not need the new lemmas in local_invariant_properties.lean

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Doesn't it amount to the same thing, though? Currently, the argument is:

  1. cont_mdiff is a local invariant property
  2. a criterion for elements of the groupoid to necessarily have a given local invariant property, which is proved by
    (i) an element of the groupoid is in the maximal atlas
    (ii) a criterion for elements of the maximal atlas to necessarily have a given local invariant property

And you're proposing changing it to

  1. an element of the groupoid is in the maximal atlas
  2. elements of the maximal atlas are cont_mdiff, which is proved by
    (i) cont_mdiff is a local invariant property
    (ii) a criterion for elements of the maximal atlas to necessarily have a given local invariant property

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The argument is basically the same, but cont_mdiff_on_of_mem_maximal_atlas $ structure_groupoid.mem_maximal_atlas_of_mem_groupoid _ h is shorter than your current proof and doesn't use the lemmas in local_invariant_properties.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I've cleaned up my proof, which was indeed a bit unwieldy (there was an unnecessary detour via the infinite-smoothness fact to get the n-times-smoothness fact). Now the two styles of proof should indeed be the same length, and given that, I have an aesthetic preference for the approach in which a cont_mdiff lemma is deduced directly from a corresponding local_invariant_prop lemma. Do you mind?

Copy link
Copy Markdown
Member

@fpvandoorn fpvandoorn left a comment

Choose a reason for hiding this comment

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

The two suggestions cut down the compilation time of the proof by half (~17s -> ~9s on my laptop).

Further, I'm wondering if you can prove smooth_on I I f.symm f.target by a symmetry argument. That proof might be longer in total than the current proof, but I was thinking of something like the following sketch:

lemma is_local_structomorph_within_at_symm {G : structure_groupoid H} [closed_under_restriction G]
  {f : local_homeomorph H H} {s : set H} {x : H}
  (hx : x ∈ f.source) (hf : G.is_local_structomorph_within_at f s x) :
  G.is_local_structomorph_within_at f.symm (f '' (f.source ∩ s)) (f x) :=
begin
  rintro ⟨y, hy, hys⟩,
  obtain rfl : y = x := f.inj_on hy.1 hx hys,
  obtain ⟨e, heg, hfe, hxe⟩ := hf hy.2,
  refine ⟨e.symm.restr (f.target ∩ f.symm ⁻¹' e.source), 
    closed_under_restriction' (G.symm heg) sorry, _, _⟩,
  { rintro _ ⟨⟨z, ⟨hzf, hzs⟩, rfl⟩, hz⟩, 
    have h2z : z ∈ e.source, 
    { sorry },
    rw [f.left_inv hzf, e.symm.restr_apply, hfe ⟨hzs, h2z⟩, e.left_inv h2z] },
  { rw [e.symm.restr_source], sorry }
end

lemma lift_prop_on_symm {G : structure_groupoid H} 
  {f : local_homeomorph H H} {s : set H} {x : H} {P : (H → H) → set H → H → Prop}
  (hP : G.local_invariant_prop G P)
  (symm : ∀ ⦃s x⦄ ⦃f : local_homeomorph H H⦄, x ∈ f.source → P f s x → P f.symm (f '' (f.source ∩ s)) x)
  (hx : x ∈ f.source) (hf : lift_prop_on P f f.source) :
  lift_prop_on P f.symm f.target :=
begin
  intros x hx,
  refine ⟨f.symm.continuous_on x hx, _⟩,
  sorry
end

Lastly, unrelated to this PR, I noticed that closed_under_restriction has a superfluous is_open s assumption (note that e.restr s is defined as the restriction on interior s)

@fpvandoorn fpvandoorn added awaiting-author A reviewer has asked the author a question or requested changes and removed awaiting-review The author would like community review of the PR labels Nov 5, 2022
Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@hrmacbeth
Copy link
Copy Markdown
Member Author

There are two local-invariant-props around: cont_diff_within_at and local_structomorph_within_at. Which one did you have in mind for use with your suggested lemma

lemma lift_prop_on_symm {G : structure_groupoid H} 
  {f : local_homeomorph H H} {P : (H → H) → set H → H → Prop}
  (hP : G.local_invariant_prop G P)
  (symm : ∀ ⦃s x⦄ ⦃f : local_homeomorph H H⦄, x ∈ f.source → P f s x → P f.symm (f '' (f.source ∩ s)) x)
  (hf : lift_prop_on P f f.source) :
  lift_prop_on P f.symm f.target :=

? I'm assuming cont_diff_within_at (because smoothness of f.symm comes up in the lemma statement and local-structomorphism-ness of f.symm does not). But if that's what you mean, I don't think this lemma would work -- the inverse of a homeomorphism whose forward-function is smooth is not necessarily smooth itself.

@hrmacbeth hrmacbeth added awaiting-review The author would like community review of the PR and removed awaiting-author A reviewer has asked the author a question or requested changes labels Nov 15, 2022
@fpvandoorn
Copy link
Copy Markdown
Member

fpvandoorn commented Nov 17, 2022

I think you can prove lift_prop_on (cont_diff_groupoid ⊤ I).is_local_structomorph_within_at f f.source -> lift_prop_on (cont_diff_groupoid ⊤ I).is_local_structomorph_within_at f.symm f.target. I'm quite sure that that is true, and you can probably generalize this further. And then you can use it to get the second part of the forward case "for free". Something like this:

lemma is_local_structomorph_on_cont_diff_groupoid_iff_aux {f : local_homeomorph M M'}
  (hf : lift_prop_on (cont_diff_groupoid ⊤ I).is_local_structomorph_within_at f f.source) :
  smooth_on I I f f.source :=
sorry -- you already proved this

/-- Let `M` and `M'` be smooth manifolds with the same model-with-corners, `I`.  Then `f : M → M'`
is a local structomorphism for `I`, if and only if it is manifold-smooth on the domain of definition
in both directions. -/
lemma is_local_structomorph_on_cont_diff_groupoid_iff (f : local_homeomorph M M') :
  lift_prop_on (cont_diff_groupoid ⊤ I).is_local_structomorph_within_at f f.source
  ↔ smooth_on I I f f.source ∧ smooth_on I I f.symm f.target :=
begin
  split,
  { intros h,
    refine ⟨is_local_structomorph_on_cont_diff_groupoid_iff_aux h, 
      is_local_structomorph_on_cont_diff_groupoid_iff_aux _⟩,
    intros X hX,
    let x := f.symm X,
    have hx : x ∈ f.source := f.symm.maps_to hX,
    let c := chart_at H x,
    let c' := chart_at H X,
    obtain ⟨-, hxf⟩ := h x hx,
    refine ⟨(f.symm.continuous_at hX).continuous_within_at, λ h2x, _⟩,
    obtain ⟨e, he, he', hex⟩ : ∃ e : local_homeomorph H H, e ∈ cont_diff_groupoid ⊤ I ∧
      eq_on (c' ∘ f ∘ c.symm) e (c.symm ⁻¹' f.source ∩ e.source) ∧ c x ∈ e.source,
    { have : c' = chart_at H (f x) := by simp only [f.right_inv hX],
      rw this,
      exact hxf (by simp only [hx] with mfld_simps) },
    have hX' : c' X = e (c (f.symm X)),
    { rw ← he',
      { dsimp only [function.comp],
        have hfX : f.symm X ∈ c.source := by simp only [hX] with mfld_simps,
        rw [c.left_inv hfX, f.right_inv hX] },
      simp only [hX, hex] with mfld_simps, exact hx },    
    refine ⟨e.symm, structure_groupoid.symm _ he, _, _⟩, -- maybe e.symm needs to be restricted further
    { sorry }, -- roughly H₂ in your proof
    rw [hX'], exact e.maps_to hex, },
 [...]

@sgouezel sgouezel added awaiting-author A reviewer has asked the author a question or requested changes and removed awaiting-review The author would like community review of the PR labels Nov 21, 2022
@fpvandoorn fpvandoorn added awaiting-review The author would like community review of the PR awaiting-CI The author would like to see what CI has to say before doing more work. and removed awaiting-author A reviewer has asked the author a question or requested changes labels Feb 23, 2023
@github-actions github-actions bot removed the awaiting-CI The author would like to see what CI has to say before doing more work. label Feb 23, 2023
@sgouezel
Copy link
Copy Markdown
Collaborator

bors r+
Thanks!

@github-actions github-actions bot added the ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) label Feb 24, 2023
@github-actions github-actions bot removed the awaiting-review The author would like community review of the PR label Feb 24, 2023
bors bot pushed a commit that referenced this pull request Feb 24, 2023
…iff_groupoid` (#17291)

Let `M` and `M'` be smooth manifolds with the same model-with-corners, `I`.  Then `f : M → M'` is a local structomorphism for `I`, if and only if it is manifold-smooth on the domain of definition in both directions.



Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@bors
Copy link
Copy Markdown

bors bot commented Feb 24, 2023

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(geometry/manifold/cont_mdiff): local structomorphisms of cont_diff_groupoid [Merged by Bors] - feat(geometry/manifold/cont_mdiff): local structomorphisms of cont_diff_groupoid Feb 24, 2023
@bors bors bot closed this Feb 24, 2023
@bors bors bot deleted the local-structomorph-cont-diff branch February 24, 2023 11:52
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) t-differential-geometry Manifolds, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants