Skip to content

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 requested a review from zstone1 April 27, 2023 17:11
@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).

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
@CohenCyril CohenCyril requested review from CohenCyril and zstone1 June 7, 2023 09:55
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 <[email protected]>
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 <[email protected]>

* fix for charge.v

- added Monoid.isLaw instance for maxe

---------

Co-authored-by: Zachary Stone <[email protected]>
@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 <[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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants