Skip to content

feat(Analysis/Calculus/ImplicitFunction): define implicitFunctionOfBivariate#30077

Open
agjftucker wants to merge 55 commits intoleanprover-community:masterfrom
agjftucker:implicitFunOfBivariate
Open

feat(Analysis/Calculus/ImplicitFunction): define implicitFunctionOfBivariate#30077
agjftucker wants to merge 55 commits intoleanprover-community:masterfrom
agjftucker:implicitFunOfBivariate

Conversation

@agjftucker
Copy link
Copy Markdown
Collaborator

@agjftucker agjftucker commented Sep 29, 2025

Two specializations of the implicit function theorem, one applying to an uncurried bivariate function and one applying to a curried bivariate function.


This PR is a synthesis of material from others which failed to make progress. But there seems always to have been a different reason for it, so I'm afraid I keep trying where maybe I shouldn't.

#26985 reviewed by j-loreaux and later on by winstonyin.
#16743 and #26300 reviewed by sgouezel.
Zulip chat with Yury Kudryashov.

There are certain changes agreed upon in those PRs, e.g. to existing names, that are doubtless good but that I have excised from this PR to avoid distraction.

Open in Gitpod

…o f₁, fy to f₂, p₀ to x, p to y, x to u etc.
@github-actions
Copy link
Copy Markdown

github-actions bot commented Sep 29, 2025

PR summary d194281a48

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Analysis.Calculus.FDeriv.Partial (new file) 1856
Mathlib.Analysis.Calculus.ImplicitFunction.Bivariate (new file) 2125

Declarations diff

+ eventually_apply_eq_iff_implicitFunctionOfBivariate
+ eventually_apply_implicitFunctionOfBivariate
+ hasStrictFDerivAt_implicitFunctionOfBivariate
+ hasStrictFDerivAt_uncurry_coprod
+ implicitFunctionOfBivariate
+ implicitFunctionOfBivariate_def
+ isLittleO_sub_sub_fderiv
+ tendsto_implicitFunctionOfBivariate

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).

@github-actions github-actions bot added the t-analysis Analysis (normed *, calculus) label Sep 29, 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 Sep 29, 2025
@agjftucker agjftucker requested a review from sgouezel September 29, 2025 19:27
@j-loreaux
Copy link
Copy Markdown
Contributor

@agjftucker it's very confusing when you have several open PRs covering the overlapping material. Please try to refrain from that unless you are going to close one of the PRs.

I have just reviewed #26985 which I think is ready other than some minor naming issues. Let's get that across the line and then you can get the additional material in this PR merged. Therefore, I will make this PR depend on that one.

@j-loreaux j-loreaux added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Mar 17, 2026
@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 20, 2026
@mathlib-dependent-issues
Copy link
Copy Markdown

@j-loreaux j-loreaux added the awaiting-author A reviewer has asked the author a question or requested changes. label Mar 20, 2026
@j-loreaux
Copy link
Copy Markdown
Contributor

please merge master to reduce the diff, and then we'll go from there.

@mathlib-merge-conflicts
Copy link
Copy Markdown

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

@mathlib-merge-conflicts mathlib-merge-conflicts 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 Mar 20, 2026
@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 Mar 21, 2026
@github-actions github-actions bot added the file-removed A Lean module was (re)moved without a `deprecated_module` annotation label Mar 21, 2026
@agjftucker agjftucker removed the awaiting-author A reviewer has asked the author a question or requested changes. label Mar 21, 2026
@agjftucker
Copy link
Copy Markdown
Collaborator Author

please merge master to reduce the diff, and then we'll go from there.

Thanks for working with these PRs! I'm happy to get a little something into Mathlib before AGI makes my puny human contribution irrelevant :)

Copy link
Copy Markdown
Contributor

@j-loreaux j-loreaux left a comment

Choose a reason for hiding this comment

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

Thanks! Maybe Yury will tell us if we can find this key result elsewhere in the library.

Comment on lines +50 to +57
/-- If bivariate `f : E₁ → E₂ → F` has partial derivatives `f₁` and `f₂` in a neighbourhood of
`u : E₁ × E₂` and if they are continuous there then the uncurried function `↿f` is strictly
differentiable at `u` with its derivative mapping `z` to `f₁ u.1 u.2 z.1 + f₂ u.1 u.2 z.2`. -/
public theorem hasStrictFDerivAt_uncurry_coprod
[IsRCLikeNormedField 𝕜] {u : E₁ × E₂} {f : E₁ → E₂ → F} {f₁ : E₁ → E₂ → E₁ →L[𝕜] F}
{f₂ : E₁ → E₂ → E₂ →L[𝕜] F} (df₁ : ∀ᶠ v in 𝓝 u, HasFDerivAt (f · v.2) (↿f₁ v) v.1)
(df₂ : ∀ᶠ v in 𝓝 u, HasFDerivAt (f v.1 ·) (↿f₂ v) v.2) (cf₁ : ContinuousAt ↿f₁ u)
(cf₂ : ContinuousAt ↿f₂ u) : HasStrictFDerivAt ↿f ((↿f₁ u).coprod (↿f₂ u)) u := by
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.

I seem to recall @urkud proving this (or something related) semi-recently, but I can't seem to find it. Am I wrong Yury?

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.

I would revert all the changes in this file. At best they are just noise.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Well winstonyin asked me to move ImplicitContDiff.lean to the new folder. Then I altered some comments to be more uniform across the folder (all on lines I already had to touch in #26985). But I’m happy to do just the first, or neither!

Comment on lines +26 to +34
theorem isLittleO_sub_sub_fderiv
{α 𝕜 E F : Type*} [NontriviallyNormedField 𝕜] [IsRCLikeNormedField 𝕜] [NormedAddCommGroup E]
[NormedSpace ℝ E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F]
{u : E} {v w : α → E} {l : Filter α} (hv : Tendsto v l (𝓝 u)) (hw : Tendsto w l (𝓝 u))
(s : Set E := Set.univ) (seg : ∀ᶠ χ in l, [w χ -[ℝ] v χ] ⊆ s := by simp)
{f : α → E → F} {f' : α → E → E →L[𝕜] F}
(df' : ∀ᶠ p in l ×ˢ 𝓝[s] u, HasFDerivWithinAt (f p.1) (f' p.1 p.2) s p.2)
{φ : E →L[𝕜] F} (cf' : Tendsto ↿f' (l ×ˢ 𝓝[s] u) (𝓝 φ)) :
(fun χ => f χ (v χ) - f χ (w χ) - φ (v χ - w χ)) =o[l] (fun χ => v χ - w χ) := by
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.

This lemma should have a docstring. I realize it's private, but that's no reason to make things obscure.

@j-loreaux j-loreaux added the awaiting-author A reviewer has asked the author a question or requested changes. label Mar 24, 2026
@github-actions github-actions bot removed the file-removed A Lean module was (re)moved without a `deprecated_module` annotation label Apr 1, 2026
@agjftucker
Copy link
Copy Markdown
Collaborator Author

Thanks! Maybe Yury will tell us if we can find this key result elsewhere in the library.

Sorry for the delay and thanks. I looked through one or two of Yury's current PRs but I haven't found this

@agjftucker agjftucker removed the awaiting-author A reviewer has asked the author a question or requested changes. label Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-analysis Analysis (normed *, calculus)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants