-
Notifications
You must be signed in to change notification settings - Fork 45
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
Conversation
5ba0046
to
0d8a631
Compare
c4c5f80
to
038b28f
Compare
245e696
to
ea73299
Compare
ea73299
to
3a9883b
Compare
3a9883b
to
87263bc
Compare
9b1dc60
to
5d93a32
Compare
0b77ec7
to
4d1c934
Compare
ping @zstone1 (the remaining errors in the CI are not from this PR) |
Sorry for the delay, I expect to have some time for a review this weekend. |
There was a problem hiding this 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.
theories/charge.v
Outdated
+ 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+ 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. |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this 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/charge.v
Outdated
exists2 f : T -> \bar R, mu.-integrable [set: T] f & | ||
forall E, measurable E -> nu E = \int[mu]_(x in E) f x. |
There was a problem hiding this comment.
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.
?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
3ee3745
to
04dfc2c
Compare
Co-authored-by: IshiguroYoshihiro
Co-authored-by: Zachary Stone <zstonex@gmail.com>
04dfc2c
to
c02a98f
Compare
CHANGELOG_UNRELEASED.md
Outdated
+ 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` |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
c02a98f
to
405fd3a
Compare
There was a problem hiding this 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?)
Thank for the careful reviews! @zstone1 @CohenCyril |
* proof of Radon-Nikodym Co-authored-by: IshiguroYoshihiro Co-authored-by: Zachary Stone <zstonex@gmail.com>
* 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>
* proof of Radon-Nikodym Co-authored-by: IshiguroYoshihiro Co-authored-by: Zachary Stone <zstonex@gmail.com>
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(problem solved)measure_ge0
by adding ameasurable
hypothesis which is not unreasonable but might be avoided @CohenCyrilThis PR actually duplicates a few lemmas from PR #914 that should be removed before merging.DONEThings done/to do
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
)Automatic note to reviewers
Read this Checklist and put a milestone if possible.