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

change of variables by nondecreasing/nonincreasing function #1294

Merged
merged 16 commits into from
Oct 8, 2024

Conversation

IshiguroYoshihiro
Copy link
Contributor

@IshiguroYoshihiro IshiguroYoshihiro commented Aug 13, 2024

Motivation for this change

add lemmas for integration by substitution with increasing/decreasing function.

some intermediate lemmas are admitted but proved in #1327

Checklist
  • added corresponding entries in CHANGELOG_UNRELEASED.md
  • added corresponding documentation in the headers

Reference: How to document

Reminder to reviewers

@affeldt-aist affeldt-aist changed the title change of variables by nondecreasing/nonincreasing function. change of variables by nondecreasing/nonincreasing function Aug 29, 2024
@affeldt-aist affeldt-aist added the experiment 🧪 This issue/PR is very experimental label Aug 29, 2024
@affeldt-aist affeldt-aist marked this pull request as ready for review August 29, 2024 02:18
@affeldt-aist affeldt-aist added the enhancement ✨ This issue/PR is about adding new features enhancing the library label Aug 29, 2024
theories/ftc.v Outdated Show resolved Hide resolved
theories/ftc.v Outdated

Lemma increasing_change F G a b : (a < b)%R ->
{in `[a, b] &, {homo F : x y / (x < y)%R}} ->
{within `[a, b], continuous F^`()} ->
Copy link
Contributor

Choose a reason for hiding this comment

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

The joy of boundary condition never ceases. The term F^`() is defined as

Definition derive1 V (f : R -> V) (a : R) := lim ((fun h => h^-1 *: (f (h + a) - f a)) @ 0^').

which is taking the limit near 0 in R. Which means F^`() depends on values outside of [a,b]. That's bad news if you want to consider F\_[a,b]. which will not have a (full) derivative at a.

Several ways to fix this

  • The "right" way to fix this is have derive1 consider a under different topologies. Shouldn't be too hard, but it's still kinda invasive. Maybe a ticket for this?
  • For a less invasive way, you can introduce another helper function
{within `[a, b], continuous F1} ->
{in `]a.b[, F1 = F^`()}

This forces F^`() to have limits at its endpoints. That is F1 a = lim_(x -->a^+) F`^() x which is what we want.

  • We can also do {within ]a.b[, continuous F^()} + cvg (F`^() @ a^+)

I don't have a strong preference on which approach you take. It's not clear to me how much harder this will make the proof...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I had thought that {within `[a, b], continuous F^`()} as `` {within [a, b], continuous F1} /\ {in ]a, b[, F1 = F^`()}`, but I hesitate to add a new function in the statement and make less convenient.
So, I think the first solution looks better.
I will try to define right/left derivation

Definition right_derive1 V (f : R -> V) (a : R) :=
   lim ((fun h => h^-1 *: (f (h + a) - f a)) @ 0^'+).
Definition left_derive1 V (f : R -> V) (a : R) :=
   lim ((fun h => h^-1 *: (f (h + a) - f a)) @ 0^'-).

and to change {within `[a, b], continuous F^`()} to
{in `]a, b[, continuous F^`()} and right_derive1 F is right continuous at a and left_derive1 F is left continuous at b.
Thank you for advice!

Copy link
Contributor

@zstone1 zstone1 Sep 19, 2024

Choose a reason for hiding this comment

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

Theory wise, I think you'll end up needing to prove something along the lines of F^`() @a^+ --> L -> right_derive1 F a /\ F^`+() a = L anyway (see https://math.stackexchange.com/questions/3301610/proving-differentiability-at-a-point-if-limit-of-derivative-exists-at-that-point). But engineering-wise I'm happy with whatever will lead you to the nicest theorem statement. Good luck!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I noticed that the necessary parts of boundary condition of F^`() is that this converged, so I have changed hypothesis to cvg (F^`() @ a^'+/@ b^'-).
This seems easier to use as we don't necessarily have to consider one-sided derivatives.

@affeldt-aist affeldt-aist force-pushed the general_cont_FTC branch 4 times, most recently from a7a5504 to 96b725e Compare September 18, 2024 00:14
Copy link
Contributor

@zstone1 zstone1 left a comment

Choose a reason for hiding this comment

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

Looks much better with the fixed boundary conditions. A couple thoughts on potential improvements to the proofs, but nothing serious. Qed is Qed, after all. So I'm happy with it

theories/ftc.v Outdated Show resolved Hide resolved
theories/ftc.v Show resolved Hide resolved
@affeldt-aist
Copy link
Member

A couple of lemmas to move to more appropriate locations and we should be done.

@affeldt-aist
Copy link
Member

Still feels a bit long but at least all comments should be addressed.

@affeldt-aist affeldt-aist added this to the 1.5.0 milestone Oct 8, 2024
@affeldt-aist affeldt-aist merged commit b6413d2 into math-comp:master Oct 8, 2024
17 checks passed
IshiguroYoshihiro added a commit to IshiguroYoshihiro/analysis that referenced this pull request Oct 9, 2024
…p#1294)

* integration by substitution

Co-authored-by: IshiguroYoshihiro <[email protected]>
Co-authored-by: Reynald Affeldt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ✨ This issue/PR is about adding new features enhancing the library experiment 🧪 This issue/PR is very experimental
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants