-
Notifications
You must be signed in to change notification settings - Fork 64
Generalize integration_by_parts #1674
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
base: master
Are you sure you want to change the base?
Generalize integration_by_parts #1674
Conversation
|
Are not all 4 versions the same, the only difference being whether the minus is inside or outside the integral? |
If you said that these lemmas can be proved with one of them, I think it is no. |
949b179 to
0802b9c
Compare
Indeed |
To give a bit of context, these lemmas have been written this way after having been tested to formalize the Gamma function. Maybe their apparent specialization is the result of practical considerations? @IshiguroYoshihiro can you confirm? (Or am I remembering wrong?) |
Tragicus
left a comment
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.
Sorry, I am back.
One way to factorize would be to ask for the relevant functions to have constant sign. I was also wondering whether we want to generalize over the interval, instead of [a, +oo[. We would require that the relevant functions are derivable on the interior of the interval and have limits at the boundaries.
@affeldt-aist Some of the following suggestions are quite ugly but save a lot of time, what do you think?
theories/ftc.v
Outdated
| rewrite (@integration_by_partsy_le0_ge0 R (- F)%R G (- f)%R g a (- FGoo))//. | ||
| - rewrite oppeD; last exact: fin_num_adde_defr. | ||
| rewrite -EFinN opprD 2!opprK mulNr. | ||
| by under eq_integral do rewrite mulNr EFinN oppeK. | ||
| - by move=> ?; apply: cvgN; exact: cf. | ||
| - exact: derivable_oy_continuous_bndN. | ||
| - by move=> ? ?; rewrite fctE derive1N ?Ff//; move: Foy => [+ _]; apply. |
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.
| rewrite (@integration_by_partsy_le0_ge0 R (- F)%R G (- f)%R g a (- FGoo))//. | |
| - rewrite oppeD; last exact: fin_num_adde_defr. | |
| rewrite -EFinN opprD 2!opprK mulNr. | |
| by under eq_integral do rewrite mulNr EFinN oppeK. | |
| - by move=> ?; apply: cvgN; exact: cf. | |
| - exact: derivable_oy_continuous_bndN. | |
| - by move=> ? ?; rewrite fctE derive1N ?Ff//; move: Foy => [+ _]; apply. | |
| rewrite (@integration_by_partsy_le0_ge0 R (- F)%R G (- f)%R g a (- FGoo))//. | |
| - rewrite oppeD; last exact: fin_num_adde_defr. | |
| rewrite -EFinN opprD 2!opprK mulNr. | |
| by under eq_integral do rewrite mulNr EFinN oppeK. | |
| - by move=> ?; apply: cvgN; exact: cf. | |
| - exact: derivable_oy_continuous_bndN. | |
| - by move=> ? ?; rewrite fctE derive1N ?Ff => [//|//|]; apply: Foy.1. |
.6s faster
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
Co-authored-by: Quentin VERMANDE <[email protected]>
FYI, here is the PR that formalizes the Gamma function:
This has not been tested yet (by lack of time). :-(
We have merged all of them. Thanks for identifying the performance issues, that helps. |
| {in `]a, +oo[, forall x, (f x * G x)%:E <= 0} -> | ||
| {in `]a, +oo[, forall x, (F x * g x)%:E <= 0} -> | ||
| \int[mu]_(x in `[a, +oo[) (F x * g x)%:E = (FGoo - F a * G a)%:E + | ||
| \int[mu]_(x in `[a, +oo[) (- (f x * G x)%:E). |
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 suspect that this minus sign can be brought out of the integral, so that the statements become more uniform.
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.
like this:
Lemma integration_by_partsy_le0_ge0 :
{in `]a, +oo[, forall x, (f x * G x)%:E <= 0} ->
{in `]a, +oo[, forall x, 0 <= (F x * g x)%:E} ->
\int[mu]_(x in `[a, +oo[) (F x * g x)%:E = (FGoo - F a * G a)%:E -
\int[mu]_(x in `[a, +oo[) (f x * G x)%:E.
Proof.
move=> fG0 Fg0.
have /= mMfG : measurable_fun `]a, +oo[ (fun x => (- (f x * G x))%R).
exact: measurableT_comp.
rewrite -integral_itv_obnd_cbnd// -[in RHS]integral_itv_obnd_cbnd//.
rewrite -integralN/=; last first.
rewrite fin_num_adde_defr//.
under eq_integral => ? ?.
by rewrite (le0_funeposE fG0); first over; rewrite inE.
by rewrite integral_cst// mul0e.
rewrite itv_bndy_bigcup_BRight seqDU_bigcup_eq.
rewrite 2?ge0_integral_bigcup//= -?seqDU_bigcup_eq -?itv_bndy_bigcup_BRight.
- rewrite [LHS]sum_integral_limn; apply: cvg_lim => //.
apply: cvgeD; first exact: fin_num_adde_defr; first exact: FGaoo.
under eq_cvg do rewrite sumNint_sumintN_fG.
apply: is_cvg_nneseries_cond => n _ _; apply: integral_ge0 => x.
rewrite seqDUE => anx; rewrite EFinN oppe_ge0.
apply: fG0; rewrite inE/=.
by apply: subset_itv anx; rewrite bnd_simp// lerDl.
- by move=> k; apply: measurableD => //; apply: bigsetU_measurable.
- exact/measurable_EFinP/measurableT_comp.
- by move=> ? ?; rewrite EFinN oppe_ge0 fG0// inE.
- by move=> k; apply: measurableD => //; apply: bigsetU_measurable.
- exact/measurable_EFinP.
- by move=> ? ?; rewrite Fg0// inE.
Qed.
|
I suggest keeping 4 lemmas as is, and additionally, provide a unified interface lemma that use the constant_sign predicate |
| rewrite -integral_itv_obnd_cbnd// -[in RHS]integral_itv_obnd_cbnd//. | ||
| rewrite itv_bndy_bigcup_BRight seqDU_bigcup_eq. | ||
| rewrite 2?ge0_integral_bigcup//= -?seqDU_bigcup_eq -?itv_bndy_bigcup_BRight. | ||
| - rewrite [LHS]sum_integral_limn; apply: cvg_lim => //. |
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.
The character immediately after apply: (that looks like a whitespace) seems to be 0xa0, not an whitespace.
This causes a build failure in my env.
| by apply: cvg_comp; [apply: cvgr_idn|apply: cvg_addrl]. | ||
| Qed. | ||
|
|
||
| Let sumN_Nsum_fG n : |
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 looks like this Let is almost useless.
| by apply: subset_itv; rewrite // bnd_simp// lerDl. | ||
| Qed. | ||
|
|
||
| Let sumNint_sumintN_fG n : |
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.
This could be reduced to a mere application of integralN.
Motivation for this change
Add a part of generalized version of integration by parts for unbound intervals
`[a, +oo[.This PR is over #1656 and #1662.
I don't sure that I should add 4 more lemmas and complete all variation of integration by parts for unbound intervals.
I think that 8 similar lemmas would be a mess. So, I'd like to somehow make them up into one or two lemmas, but I don't have an idea.
Checklist
CHANGELOG_UNRELEASED.mdReference: How to document
Merge policy
As a rule of thumb:
all compile are preferentially merged into master.
Reminder to reviewers