Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Naturality of integral curves #9341

Open
wants to merge 137 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
4e53e96
doc
winstonyin Nov 13, 2023
f14b378
compiles
winstonyin Nov 17, 2023
22b4f1f
indent
winstonyin Nov 17, 2023
0747174
import, indent
winstonyin Nov 17, 2023
23d691f
docstring
winstonyin Nov 17, 2023
e8e7338
Mathlib.lean
winstonyin Nov 17, 2023
ccc8f77
lake manifest
winstonyin Nov 17, 2023
42341d1
Merge remote-tracking branch 'origin/master' into integral_curve
winstonyin Nov 17, 2023
720ec35
removed temporary notation
winstonyin Nov 18, 2023
25f1065
integralCurveAt, change PicardLindelof statement order
winstonyin Nov 18, 2023
d4139b6
compiles
winstonyin Nov 18, 2023
4b57dfe
Sketch a section on interior and boundary of manifolds.
grunweg Nov 18, 2023
e9d3546
More progress. Tweaks, polish and fleshing out some sorries.
grunweg Nov 19, 2023
cbd22f4
One more lemma.
grunweg Nov 19, 2023
0dbf3b0
One lemma was in mathlib. :-)
grunweg Nov 19, 2023
a978f02
Fix the build; mild clean-ups.
grunweg Nov 19, 2023
1f6dbaa
Small simplifications.
grunweg Nov 19, 2023
9c58652
has -> is, docstring, shift/stretch lemmas
winstonyin Nov 20, 2023
6b55cbc
detailed proof steps
winstonyin Nov 20, 2023
0ada08e
open Set
winstonyin Nov 20, 2023
063822d
`IsIntegralCurveAt` in preamble
winstonyin Nov 20, 2023
fb4196f
IsIntegralCurveAt.comp_add
winstonyin Nov 20, 2023
6f665ad
translation, scale, and reverse lemmas
winstonyin Nov 21, 2023
b59c82f
iff lemmas
winstonyin Nov 21, 2023
3c2e424
Small polish. Note that smoothness is not required;
grunweg Nov 21, 2023
c95243e
The boundary is closed: entails showing that interior and boundary ar…
grunweg Nov 21, 2023
933cc59
Almost-proof that boundary has empty interior: need to adjust definit…
grunweg Nov 21, 2023
2041d30
Correct the definition of boundary:
grunweg Nov 21, 2023
f1fda32
Fix and complete proof that the boundary has empty interior.
grunweg Nov 21, 2023
6a4e39c
Small clean-ups:
grunweg Nov 21, 2023
88bea4c
Clean up lemmas about boundary.
grunweg Nov 21, 2023
73e203f
Small golfs.
grunweg Nov 21, 2023
90090b2
Fix rebase, make it build and fix a docstring typo.
grunweg Nov 21, 2023
338ab9f
Fix casing for real: IsInteriorPoint is correct.
grunweg Nov 21, 2023
378088c
Name lemma in snake_case.
grunweg Nov 21, 2023
efe0880
naming
winstonyin Nov 22, 2023
d35e843
move lemma, style
winstonyin Nov 22, 2023
dce81a6
Define topological manifolds and use them for defining interior and b…
grunweg Nov 21, 2023
79fcb13
Alternative, more minimal fix.
grunweg Nov 21, 2023
e1a9363
sketch boundary argument
grunweg Nov 21, 2023
f38f823
MAYBE this tweak makes the proof easier.
grunweg Nov 21, 2023
07d1dbc
Cleanup, one easy sorry.
grunweg Nov 21, 2023
c331ee2
Another easy sorry.
grunweg Nov 21, 2023
191a5c1
Move a helper upfront; eliminating another sorry.
grunweg Nov 21, 2023
66b1943
Starting at scifi lemma: might be science *fiction* actually...
grunweg Nov 21, 2023
7840b91
Small golfs.
grunweg Nov 22, 2023
61fd70e
Extract lemmas used in the proof so far.
grunweg Nov 22, 2023
5869bd5
Fill sorry in description of boundary.
grunweg Nov 22, 2023
058bb70
Extract one more useful lemma; tiny golf.
grunweg Nov 22, 2023
7e1542d
Simplify: use chart source instead of extChart.source.
grunweg Nov 22, 2023
219f85c
Fill in one more helper sorry.
grunweg Nov 22, 2023
b97611e
Move helpers to better namespace; show a MapsTo version;
grunweg Nov 22, 2023
ef4c232
Reduce interior independence statement to a local lemma.
grunweg Nov 22, 2023
184a062
Give up: remove WIP claim that boundary as empty interior.
grunweg Nov 22, 2023
c634f1a
Rename and golf mapsTo results for extended local homeos.
grunweg Nov 22, 2023
dd9e73f
Small golfs and clean-ups.
grunweg Nov 22, 2023
3d820be
Move complete (and now unused) helper results to their files:
grunweg Nov 22, 2023
2c69553
compiles
winstonyin Nov 22, 2023
7c6bccf
new lemmas and slight golfing
winstonyin Nov 23, 2023
e74b860
Essentials are complete.
grunweg Nov 25, 2023
f8e3340
Clean up; document TODOs/next steps; move all helpers to their proper…
grunweg Nov 25, 2023
4febc74
Remove helper lemmas not needed here.
grunweg Nov 25, 2023
c1f3395
Pare down interior/boundary file to the necesssary basics; sorry-free.
grunweg Nov 25, 2023
25ff469
Merge branch 'MR-manifolds-boundary' into integral_curve
grunweg Nov 25, 2023
1459dfb
Simplify.
grunweg Nov 25, 2023
094ca88
compiles
winstonyin Nov 26, 2023
ca11211
Merge branch 'integral_curve' of https://github.com/leanprover-commun…
winstonyin Nov 26, 2023
7754760
range_mem_nhds_isInteriorPoint
winstonyin Nov 26, 2023
6033099
namespace
winstonyin Nov 26, 2023
429fd8b
Merge remote-tracking branch 'origin/MR-manifolds-boundary' into inte…
winstonyin Nov 26, 2023
d1a8296
hI as separate lemma
winstonyin Nov 26, 2023
7f7a49d
actually compiles
winstonyin Nov 26, 2023
ab30700
minor
winstonyin Nov 26, 2023
98ff512
Prefer refine over refine' in new code, per zulip.
grunweg Nov 27, 2023
00f4e77
Use mfld_simps to make proofs more readable.
grunweg Nov 27, 2023
e86759d
Small golf, use mfld_simps more.
grunweg Nov 27, 2023
85fbe5d
hasFDerivWithinAt_tangentCoordChange
winstonyin Nov 27, 2023
d924890
some golf
winstonyin Nov 28, 2023
4cf8097
shorten comment
winstonyin Nov 28, 2023
e8bfdb0
shorten
winstonyin Nov 28, 2023
de44a9c
move tangentCoordChange
winstonyin Nov 28, 2023
a792394
minor spacing
winstonyin Nov 28, 2023
4cc6c69
isIntegralCurveAt_const
winstonyin Nov 28, 2023
b4ba5a0
remove todo
winstonyin Nov 28, 2023
f14affa
use implicit lambdas
winstonyin Nov 28, 2023
0a3d359
Fix style.
grunweg Nov 29, 2023
fa1b5f3
Remove superfluous helper lemma.
grunweg Nov 29, 2023
9e9ee92
docstring, rename theorem
winstonyin Nov 30, 2023
75c2b52
rename
winstonyin Nov 30, 2023
f019e9b
remove `x₀` from `IsIntegralCurveAt`
winstonyin Nov 30, 2023
30c333f
end with exact
winstonyin Nov 30, 2023
e140c43
`IsIntegralCurveOn`, `IsIntegralCurve`
winstonyin Nov 30, 2023
b810d2a
docstring
winstonyin Nov 30, 2023
9f5b559
IsIntegralCurveAt.isIntegralCurveOn
winstonyin Nov 30, 2023
0445938
`comp_add` lemmas
winstonyin Nov 30, 2023
3b7cca0
refactored `IsIntegralCurveXX`
winstonyin Nov 30, 2023
082574b
unused arg
winstonyin Nov 30, 2023
fbb74c9
Merge remote-tracking branch 'origin/master' into integral_curve
winstonyin Dec 8, 2023
a9d4cae
space
winstonyin Dec 8, 2023
6d4af73
Small things: sectioning; re-use variables.
grunweg Dec 8, 2023
ffa3c4b
Tinygolf.
grunweg Dec 8, 2023
7dde305
Line breaks.
grunweg Dec 8, 2023
ccd1830
style
winstonyin Dec 13, 2023
122546d
spacing
winstonyin Dec 13, 2023
2c4d77d
restate existence theorem using filters
winstonyin Dec 14, 2023
5f7bb14
define `IsIntegralCurveAt` using `Eventually`
winstonyin Dec 14, 2023
29170c6
Merge remote-tracking branch 'origin/master' into integral_curve
winstonyin Dec 14, 2023
6341072
PartialEquiv
winstonyin Dec 14, 2023
8e54212
PartialEquiv
winstonyin Dec 14, 2023
4efc1ad
PartialEquiv
winstonyin Dec 14, 2023
7b804f9
Replace => by \mapsto, per the style guide.
grunweg Dec 14, 2023
22d5ceb
Small golfs.
grunweg Dec 14, 2023
e784d93
Update Mathlib/Geometry/Manifold/IntegralCurve.lean
winstonyin Dec 17, 2023
47e137d
Update Mathlib/Geometry/Manifold/IntegralCurve.lean
winstonyin Dec 17, 2023
2e0b9bf
Update Mathlib/Geometry/Manifold/IntegralCurve.lean
winstonyin Dec 18, 2023
26be30a
remove newlines
winstonyin Dec 18, 2023
90755c3
Merge remote-tracking branch 'origin/master' into integral_curve
winstonyin Dec 19, 2023
5aab426
fix
winstonyin Dec 19, 2023
6804bd0
forward direction
winstonyin Dec 29, 2023
749ea8c
IsIntegralCurveAt.hasMFDerivAt
winstonyin Dec 29, 2023
c062bc8
Merge branch 'integral_curve' into integral_curve_naturality
winstonyin Dec 29, 2023
2b97a3e
converse
winstonyin Dec 29, 2023
9381758
comp_smulRight
winstonyin Dec 29, 2023
40dc18b
using new lemma
winstonyin Dec 29, 2023
538c22a
mark simp
winstonyin Dec 29, 2023
9e6dc86
naming
winstonyin Dec 29, 2023
78800db
simp can prove this
winstonyin Dec 30, 2023
ca88b9d
Merge remote-tracking branch 'origin/master' into integral_curve
winstonyin Jan 5, 2024
1997cb9
Merge branch 'integral_curve' into integral_curve_naturality
winstonyin Jan 5, 2024
c74e830
BoundarylessManifold
winstonyin Jan 5, 2024
15194c2
Merge branch 'integral_curve' into integral_curve_naturality
winstonyin Jan 5, 2024
846fa99
Merge remote-tracking branch 'origin/master' into integral_curve_natu…
winstonyin Jan 9, 2024
69a2c47
fix
winstonyin Jan 9, 2024
fceb0ee
minor
winstonyin Jan 9, 2024
2a51584
Merge remote-tracking branch 'origin/master' into integral_curve_natu…
winstonyin Jan 15, 2024
830ad3a
Merge remote-tracking branch 'origin/master' into integral_curve_natu…
winstonyin Aug 27, 2024
1355af3
CompleteSpace E
winstonyin Aug 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions Mathlib/Geometry/Manifold/IntegralCurve.lean
Original file line number Diff line number Diff line change
Expand Up @@ -533,3 +533,42 @@ lemma IsIntegralCurve.periodic_xor_injective [BoundarylessManifold I M]
exact hγ.periodic_of_eq hv heq

end ExistUnique

section Naturality
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can you add a doc-string to this section, and - more importantly, mention this result in the high-level docstring?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes of course! If we're going to introduce f-relatedness and so on, which will be in a different file, this section should probably also go in a different file.


variable
{E' : Type*} [NormedAddCommGroup E'] [NormedSpace ℝ E']
{H' : Type*} [TopologicalSpace H'] {I' : ModelWithCorners ℝ E' H'}
{M' : Type*} [TopologicalSpace M'] [ChartedSpace H' M'] [SmoothManifoldWithCorners I' M']
{v' : (x : M') → TangentSpace I' x}

/-- Let `v` and `v'` be vector fields on `M` and `M'`, respectively, and let `f : M → M'` be a
differentiable map. If `v` and `v'` are `f`-related, then `f` maps integral curves of `v` to
integral curves of `v'`. -/
lemma IsIntegralCurveAt.of_mdifferentiable_related (h : IsIntegralCurveAt γ v t₀)
{f : M → M'} (hf : MDifferentiable I I' f) (hv : ∀ x : M, v' (f x) = mfderiv I I' f x (v x)) :
IsIntegralCurveAt (f ∘ γ) v' t₀ := by
apply h.mono
intros t ht
apply (HasMFDerivAt.comp t (hf (γ t)).hasMFDerivAt ht).congr_mfderiv
rw [Function.comp_apply, hv, ContinuousLinearMap.comp_smulRight]

/-- Let `v` and `v'` be vector fields on `M` and `M'`, respectively, and let `f : M → M'` be a
differentiable map. If `f` maps integral curves of `v` to integral curves of `v'`, then `v` and
`v'` are `f`-related. -/
lemma mdifferentiable_related_of_isIntegralCurveAt [BoundarylessManifold I M] [CompleteSpace E]
(hv : ContMDiff I I.tangent 1 (fun x ↦ (⟨x, v x⟩ : TangentBundle I M)))
{f : M → M'} (hf : MDifferentiable I I' f)
(h : ∀ (γ : ℝ → M) (t₀ : ℝ), IsIntegralCurveAt γ v t₀ → IsIntegralCurveAt (f ∘ γ) v' t₀)
(x : M) : v' (f x) = mfderiv I I' f x (v x) := by
obtain ⟨γ, h0, hγ⟩ : ∃ γ : ℝ → M, γ 0 = x ∧ IsIntegralCurveAt γ v 0 :=
exists_isIntegralCurveAt_of_contMDiffAt_boundaryless 0 hv.contMDiffAt
have hγ' := (h γ 0 hγ).hasMFDerivAt
have hγ := hγ.hasMFDerivAt
rw [Function.comp_apply, h0] at hγ'
rw [h0] at hγ
have := hasMFDerivAt_unique hγ' <| (hf (γ 0)).hasMFDerivAt.comp 0 hγ
rw [ContinuousLinearMap.comp_smulRight, ContinuousLinearMap.smulRight_one_eq_iff, h0] at this
exact this

end Naturality
6 changes: 6 additions & 0 deletions Mathlib/Topology/Algebra/Module/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1065,6 +1065,12 @@ theorem smulRight_one_eq_iff {f f' : M₂} :
smulRight (1 : R₁ →L[R₁] R₁) f = smulRight (1 : R₁ →L[R₁] R₁) f' ↔ f = f' := by
simp only [ContinuousLinearMap.ext_ring_iff, smulRight_apply, one_apply, one_smul]

@[simp]
theorem comp_smulRight [ContinuousSMul R₁ M₁] {f : M₁ →L[R₁] M₂} {x : M₁} :
f.comp (smulRight (1 : R₁ →L[R₁] R₁) x) = smulRight (1 : R₁ →L[R₁] R₁) (f x) := by
ext
simp only [coe_comp', comp_apply, smulRight_apply, one_apply, one_smul]

theorem smulRight_comp [ContinuousMul R₁] {x : M₂} {c : R₁} :
(smulRight (1 : R₁ →L[R₁] R₁) x).comp (smulRight (1 : R₁ →L[R₁] R₁) c) =
smulRight (1 : R₁ →L[R₁] R₁) (c • x) := by
Expand Down
Loading