-
Notifications
You must be signed in to change notification settings - Fork 294
[Merged by Bors] - feat(analysis/ODE/picard_lindelof): Add corollaries to ODE solution existence theorem #16348
Conversation
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 don't know the mathematics but I left some style comments.
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.
Here are some golfs.
Thanks for working on this and sorry we've been so slow reviewing. The mathematical content, First the minor points of style:
As to the structure:
Please feel free to push back if you have applications that challenge these suggestions, and thanks again for this work. |
Thanks for the comments, @ocfnash ! The benefit of One way to keep the structure a
and use it with |
You are not missing anything and I agree with your remarks: what I wrote was not quite right. Here is the sort of thing that I was attempting to suggest: structure is_picard_lindelof {E : Type*} [normed_add_comm_group E]
(v : ℝ → E → E) (t_min t₀ t_max : ℝ) (x₀ : E) (L : ℝ≥0) (R C : ℝ) : Prop :=
(lipschitz' : ∀ t ∈ Icc t_min t_max, lipschitz_on_with L (v t) (closed_ball x₀ R))
(cont : ∀ x ∈ closed_ball x₀ R, continuous_on (λ t, v t x) (Icc t_min t_max))
(norm_le' : ∀ (t ∈ Icc t_min t_max) (x ∈ closed_ball x₀ R), ∥v t x∥ ≤ C)
(C_mul_le_R : C * max (t_max - t₀) (t₀ - t_min) ≤ R)
@[reducible] def exists_is_picard_lindelof
{E : Type*} [normed_add_comm_group E] (v : ℝ → E → E) (t_min t₀ t_max : ℝ) (x₀ : E) : Prop :=
∃ L R C (hR : 0 ≤ R), is_picard_lindelof v t_min t₀ t_max x₀ L R C I think this is probably a good design, especially if it is possible to share some of the code with |
Those are very helpful comments. I've implemented |
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.
Thanks for all the work, I think this is close to being ready now.
I've implemented the suggestions you've made. I forgot to add one lemma which will be useful for #17140, so I've added it in the newest commit. Please kindly review also. |
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.
Thanks for sticking with this. This will be good to go once the final suggestions have been addressed.
bors d+
✌️ winstonyin can now approve this pull request. To approve and merge a pull request, simply reply with |
bors r+ |
…xistence theorem (#16348) We add some corollaries to the existence theorem of solutions to autonomous ODEs (Picard-Lindelöf / Cauchy-Lipschitz theorem). * `is_picard_lindelof`: Predicate for the very long hypotheses of the Picard-Lindelöf theorem. * When applying `exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous` directly to unite with a goal, Lean introduces a long list of goals with many meta-variables. The predicate makes the proof of these hypotheses more manageable. * Certain variables in the hypotheses, such as the Lipschitz constant, are often obtained from other facts non-constructively, so it is less convenient to directly use them to satisfy hypotheses (needing `Exists.some`). We avoid this problem by stating these non-`Prop` hypotheses under `∃`. * Solution `f` exists on any subset `s` of some closed interval, where the derivative of `f` is defined by the value of `f` within `s` only. * Solution `f` exists on any open subset `s` of some closed interval. * There exists `ε > 0` such that a solution `f` exists on `(t₀ - ε, t₀ + ε)`. * As a simple example, we show that time-independent, locally continuously differentiable ODEs satisfy `is_picard_lindelof` and hence a solution exists within some open interval.
Pull request successfully merged into master. Build succeeded: |
We add some corollaries to the existence theorem of solutions to autonomous ODEs (Picard-Lindelöf / Cauchy-Lipschitz theorem).
is_picard_lindelof
: Predicate for the very long hypotheses of the Picard-Lindelöf theorem.exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous
directly to unite with a goal, Lean introduces a long list of goals with many meta-variables. The predicate makes the proof of these hypotheses more manageable.Exists.some
). We avoid this problem by stating these non-Prop
hypotheses under∃
.f
exists on any subsets
of some closed interval, where the derivative off
is defined by the value off
withins
only.f
exists on any open subsets
of some closed interval.ε > 0
such that a solutionf
exists on(t₀ - ε, t₀ + ε)
.is_picard_lindelof
and hence a solution exists within some open interval.