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

tentative proof of Radon-Nikodym #818

Merged
merged 11 commits into from
Jun 7, 2023

Conversation

affeldt-aist
Copy link
Member

@affeldt-aist affeldt-aist commented Jan 3, 2023

Motivation for this change

based on PR #777 (it seems that I cannot change the base of this PR because 777 is coming from a git repo that is not MathComp-Analysis, that's why the two commits from 777 appear again here)

this PR changes the definition of measure_ge0 by adding a measurable hypothesis which is not unreasonable but might be avoided @CohenCyril (problem solved)

This PR actually duplicates a few lemmas from PR #914 that should be removed before merging. DONE

Things done/to do
  • added corresponding entries in CHANGELOG_UNRELEASED.md
    (do not edit former entries, only append new ones, be careful:
    merge and rebase have a tendency to mess up CHANGELOG_UNRELEASED.md)
  • added corresponding documentation in the headers
Automatic note to reviewers

Read this Checklist and put a milestone if possible.

@affeldt-aist affeldt-aist force-pushed the radon_nikodym branch 2 times, most recently from 5ba0046 to 0d8a631 Compare February 6, 2023 03:02
@affeldt-aist affeldt-aist force-pushed the radon_nikodym branch 3 times, most recently from c4c5f80 to 038b28f Compare February 15, 2023 07:02
@affeldt-aist affeldt-aist force-pushed the radon_nikodym branch 2 times, most recently from 245e696 to ea73299 Compare February 17, 2023 05:07
@affeldt-aist affeldt-aist marked this pull request as ready for review February 17, 2023 05:09
@affeldt-aist affeldt-aist added this to the 0.6.2 milestone Feb 23, 2023
@affeldt-aist affeldt-aist added the enhancement ✨ This issue/PR is about adding new features enhancing the library label Mar 15, 2023
@CohenCyril CohenCyril added the TODO: MC2 port This PR must be ported to mathcomp 2 now that the. Remove this label when the port is done. label Mar 27, 2023
@affeldt-aist affeldt-aist modified the milestones: 0.6.2, 0.6.3 Apr 10, 2023
@affeldt-aist affeldt-aist force-pushed the radon_nikodym branch 4 times, most recently from 9b1dc60 to 5d93a32 Compare April 27, 2023 16:54
@affeldt-aist affeldt-aist force-pushed the radon_nikodym branch 3 times, most recently from 0b77ec7 to 4d1c934 Compare May 20, 2023 08:06
@affeldt-aist
Copy link
Member Author

ping @zstone1 (the remaining errors in the CI are not from this PR)

@zstone1
Copy link
Contributor

zstone1 commented May 25, 2023

Sorry for the delay, I expect to have some time for a review this weekend.

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.

It seems like a pretty faithful formalization of the textbook proof. I'm happy with the overall structure, and putting all these one-time use definitions into a module is a good idea for sure. I found one moderate simplification regarding fRN + eps. Basically shuffling the int fRN x + eps to int fRN x + int eps before the integrableP saves some headache. There are probably a few other similar proof improvements in the proof of radon_nikodym_finite, but I didn't find any trivial ones.

Comment on lines 1288 to 1310
+ apply/integrableP; split.
suff: measurable_fun setT (fun x => fRN x + epsRN%:num%:E).
exact: measurable_funS.
by apply: emeasurable_funD => //; exact: measurable_fun_fRN.
apply: (@le_lt_trans _ _ (\int[mu]_(x in \bigcup_k H k) `|fRN x| +
\int[mu]_(x in \bigcup_k H k)`| epsRN%:num%:E |)).
rewrite -(integralD mUH); last 2 first.
* apply: integrable_abse; apply/integrableP; split.
exact: measurable_funS measurable_fun_fRN.
rewrite (le_lt_trans _ int_fRN_lty)// subset_integral//.
by apply: measurableT_comp => //; exact: measurable_fun_fRN.
* apply: integrable_abse; apply/integrableP; split => //.
by rewrite integral_cst//= lte_mul_pinfty// ltey_eq fin_num_measure.
apply: ge0_le_integral => //.
* apply: measurableT_comp => //; apply: emeasurable_funD => //.
exact: measurable_funS measurable_fun_fRN.
* apply: emeasurable_funD => //; apply: measurableT_comp => //.
exact: measurable_funS measurable_fun_fRN.
* by move=> x _; exact: lee_abs_add.
apply: lte_add_pinfty.
rewrite (le_lt_trans _ int_fRN_lty)// subset_integral//.
by apply: measurableT_comp => //; exact: measurable_fun_fRN.
by rewrite integral_cst//= lte_mul_pinfty// ltey_eq fin_num_measure.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
+ apply/integrableP; split.
suff: measurable_fun setT (fun x => fRN x + epsRN%:num%:E).
exact: measurable_funS.
by apply: emeasurable_funD => //; exact: measurable_fun_fRN.
apply: (@le_lt_trans _ _ (\int[mu]_(x in \bigcup_k H k) `|fRN x| +
\int[mu]_(x in \bigcup_k H k)`| epsRN%:num%:E |)).
rewrite -(integralD mUH); last 2 first.
* apply: integrable_abse; apply/integrableP; split.
exact: measurable_funS measurable_fun_fRN.
rewrite (le_lt_trans _ int_fRN_lty)// subset_integral//.
by apply: measurableT_comp => //; exact: measurable_fun_fRN.
* apply: integrable_abse; apply/integrableP; split => //.
by rewrite integral_cst//= lte_mul_pinfty// ltey_eq fin_num_measure.
apply: ge0_le_integral => //.
* apply: measurableT_comp => //; apply: emeasurable_funD => //.
exact: measurable_funS measurable_fun_fRN.
* apply: emeasurable_funD => //; apply: measurableT_comp => //.
exact: measurable_funS measurable_fun_fRN.
* by move=> x _; exact: lee_abs_add.
apply: lte_add_pinfty.
rewrite (le_lt_trans _ int_fRN_lty)// subset_integral//.
by apply: measurableT_comp => //; exact: measurable_fun_fRN.
by rewrite integral_cst//= lte_mul_pinfty// ltey_eq fin_num_measure.
+ apply: integrableD => //.
(apply: integrableS; first exact: measurableT) => //; apply /integrableP.
by split; [exact: measurable_fun_fRN | exact: int_fRN_lty].
apply/integrableP; split; rewrite // integral_cst // lte_mul_pinfty //.
by rewrite ltey_eq fin_num_measure.

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh! Thanks. I committed your suggestion after a rebase: 0a13408

Copy link
Member Author

Choose a reason for hiding this comment

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

There are probably a few other similar proof improvements in the proof of radon_nikodym_finite, but I didn't find any trivial ones.

I still have to take some time to look for more simplifications.

Copy link
Member

@CohenCyril CohenCyril left a comment

Choose a reason for hiding this comment

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

Really nice. Just two small remarks (in addition to @zstone1's).

theories/measure.v Outdated Show resolved Hide resolved
Comment on lines 1522 to 1523
exists2 f : T -> \bar R, mu.-integrable [set: T] f &
forall E, measurable E -> nu E = \int[mu]_(x in E) f x.
Copy link
Member

Choose a reason for hiding this comment

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

Should we extract this existential and have a function Randon_Nikodym mu nu that is mu.-integrable and such that:

forall E, measurable E -> nu E = \int[mu]_(x in E) Radon_Nikodym mu nu x.

?

Copy link
Member Author

Choose a reason for hiding this comment

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

That would indeed look better. Here is a first try: 04dfc2c

Copy link
Member

@CohenCyril CohenCyril Jun 5, 2023

Choose a reason for hiding this comment

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

Indeed it looks better...
I guess the code would be slightly shorter if you used the same Theorem Radon_Nikodym as before (renaming it) but extracted the witness out of it, rather than having both a long definition and proof for extracting the existential.

+ definitions `jordan_neg`, `jordan_pos`
+ lemmas `jordan_decomp`, `jordan_pos_dominates`, `jordan_neg_dominates`
+ lemma `radon_nikodym_finite`
+ definition `Radon_Nikodym`, notation `'d nu /d mu`
Copy link
Member

@CohenCyril CohenCyril Jun 7, 2023

Choose a reason for hiding this comment

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

Where is the notation defined?
If you define it, which I think is nice, we must put it in a special scope because we might want the same kind of notation for partial derivatives someday.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, I messed up with my commits, wait a minute.

- add notation

Co-authored-by: IshiguroYoshihiro
Copy link
Member

@CohenCyril CohenCyril left a comment

Choose a reason for hiding this comment

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

I'm fine with the changes. And root for merging.

(I involuntarily re-requested a review by @zstone1 but since he approved before I think we're good to merge?)

@affeldt-aist
Copy link
Member Author

Thank for the careful reviews! @zstone1 @CohenCyril

@affeldt-aist affeldt-aist merged commit 17eea58 into math-comp:master Jun 7, 2023
affeldt-aist added a commit to affeldt-aist/analysis that referenced this pull request Jun 8, 2023
* proof of Radon-Nikodym

Co-authored-by: IshiguroYoshihiro
Co-authored-by: Zachary Stone <zstonex@gmail.com>
proux01 pushed a commit that referenced this pull request Jun 8, 2023
* tentative proof of Radon-Nikodym (#818)

* proof of Radon-Nikodym

Co-authored-by: IshiguroYoshihiro
Co-authored-by: Zachary Stone <zstonex@gmail.com>

* fix for charge.v

- added Monoid.isLaw instance for maxe

---------

Co-authored-by: Zachary Stone <zstonex@gmail.com>
@proux01 proux01 removed the TODO: MC2 port This PR must be ported to mathcomp 2 now that the. Remove this label when the port is done. label Jun 8, 2023
IshiguroYoshihiro pushed a commit to IshiguroYoshihiro/analysis that referenced this pull request Sep 7, 2023
* proof of Radon-Nikodym

Co-authored-by: IshiguroYoshihiro
Co-authored-by: Zachary Stone <zstonex@gmail.com>
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants