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

feat(analysis/calculus/fderiv): define has_strict_fderiv_at#2249

Merged
mergify[bot] merged 8 commits into
masterfrom
strict-fderiv
Mar 29, 2020
Merged

feat(analysis/calculus/fderiv): define has_strict_fderiv_at#2249
mergify[bot] merged 8 commits into
masterfrom
strict-fderiv

Conversation

@urkud
Copy link
Copy Markdown
Member

@urkud urkud commented Mar 26, 2020

Prove strict differentiability of all functions found in this file, cleanup.

TO CONTRIBUTORS:

Make sure you have:

If this PR is related to a discussion on Zulip, please include a link in the discussion.

For reviewers: code review check list

urkud added 3 commits March 25, 2020 19:48
* general constructions (product, chain rule) before arithmetic;
* bundled `E →L[𝕜] F` maps before unbundled
Prove strict differentiability of all functions found in this file, cleanup.
@gebner
Copy link
Copy Markdown
Member

gebner commented Mar 26, 2020

With this PR, we now have four notions of differentiability (not counting the single-variable specializations), and we don't even have has_strict_fderiv_within and has_strict_fderiv_filter yet.

Would it make sense to change has_fderiv_* to use strict differentiability instead?

@urkud
Copy link
Copy Markdown
Member Author

urkud commented Mar 26, 2020

has_strict_fderiv_at is mostly useful for the inverse function theorem, so I don't think that it makes sense to introduce _within and _filter variants. It is introduced in fderiv.lean because it is stronger than has_fderiv_at, so we can prove, e.g., prove strong differentiability of bilinear forms, then deduce has_fderiv_at instead of proving has_fderiv_at in fderiv.lean, then proving a stronger statement in inverse.lean.

There are has_fderiv_* differentiable functions that are not strictly differentiable, and I'd prefer to have theorems that don't need has_strict_fderiv_at to be stated in full generality.

@urkud
Copy link
Copy Markdown
Member Author

urkud commented Mar 26, 2020

The first commit moves code around. Important changes are in the next two commits.

@urkud urkud added the awaiting-review The author would like community review of the PR label Mar 26, 2020
Copy link
Copy Markdown
Collaborator

@sgouezel sgouezel left a comment

Choose a reason for hiding this comment

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

Looks very good to me, cleaning up existing code and adding the strict differentiability which is useful for the local inverse theorem. I agree that the main player should remain the usual differentiability, so the content of the PR is fine with me. I just have a few minor comments in the code.

One more general comment though: often, when you clean up proofs, you tend to remove calc blocks and replace them by shorter strings of rewrites or applies. I don't think we should always favor conciseness above clarity: longer but easier to read proofs are sometimes preferable...

Comment thread src/analysis/calculus/fderiv.lean Outdated
Comment thread src/analysis/calculus/fderiv.lean Outdated
Comment thread src/analysis/calculus/fderiv.lean Outdated
@urkud
Copy link
Copy Markdown
Member Author

urkud commented Mar 27, 2020

@sgouezel Which calc proof are you talking about? It's OK with me to reverse any diff hunk if you think it reduces readability.

urkud and others added 3 commits March 27, 2020 12:53
Co-Authored-By: sgouezel <sebastien.gouezel@univ-rennes1.fr>
@sgouezel
Copy link
Copy Markdown
Collaborator

I am not asking you to revert anything here, it is just a general remark to keep in the back of your mind. For instance, the proof of differentiability of bilinear maps has become harder to read, I think (but the new version is shorter and you prove a stronger result!)

@sgouezel sgouezel added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels Mar 28, 2020
@urkud
Copy link
Copy Markdown
Member Author

urkud commented Mar 28, 2020

I'll add some comments (and possibly some suffices and/or have) to this proof in inverse_function branch. I had to rewrite this proof to get a stronger result, and moved from explicit estimates to some is_O magic.

@mergify mergify Bot merged commit 5d9e7f5 into master Mar 29, 2020
@urkud urkud deleted the strict-fderiv branch March 29, 2020 08:51
butterthebuddha pushed a commit to butterthebuddha/mathlib that referenced this pull request May 15, 2020
…over-community#2249)

* Move code aroud

* general constructions (product, chain rule) before arithmetic;
* bundled `E →L[𝕜] F` maps before unbundled

* Use `maps_to` instead of `f '' _ ⊆ _`

* feat(analysis/calculus/fderiv): define `has_strict_fderiv_at`

Prove strict differentiability of all functions found in this file, cleanup.

* Update src/analysis/calculus/fderiv.lean

Co-Authored-By: sgouezel <sebastien.gouezel@univ-rennes1.fr>

* Docs, var name

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
butterthebuddha pushed a commit to butterthebuddha/mathlib that referenced this pull request May 16, 2020
…over-community#2249)

* Move code aroud

* general constructions (product, chain rule) before arithmetic;
* bundled `E →L[𝕜] F` maps before unbundled

* Use `maps_to` instead of `f '' _ ⊆ _`

* feat(analysis/calculus/fderiv): define `has_strict_fderiv_at`

Prove strict differentiability of all functions found in this file, cleanup.

* Update src/analysis/calculus/fderiv.lean

Co-Authored-By: sgouezel <sebastien.gouezel@univ-rennes1.fr>

* Docs, var name

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
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+`.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants