Picard-Lindelöf (Cauchy-Lipschitz) Theorem #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we prove that an ordinary differential equation $\dot x=v(t, x)$ such that $v$ is
Lipschitz continuous in $x$ and continuous in $t$ has a local solution, see
exists_forall_deriv_within_Icc_eq_of_is_picard_lindelof
.
As a corollary, we prove that a time-independent locally continuously differentiable ODE has a local solution.
Implementation notes #
In order to split the proof into small lemmas, we introduce a structure picard_lindelof
that holds
all assumptions of the main theorem. This structure and lemmas in the picard_lindelof
namespace
should be treated as private implementation details. This is not to be confused with the Prop
-
valued structure is_picard_lindelof
, which holds the long hypotheses of the Picard-Lindelöf
theorem for actual use as part of the public API.
We only prove existence of a solution in this file. For uniqueness see ODE_solution_unique
and
related theorems in analysis.ODE.gronwall
.
Tags #
differential equation
- ht₀ : t₀ ∈ set.Icc t_min t_max
- hR : 0 ≤ R
- lipschitz : ∀ (t : ℝ), t ∈ set.Icc t_min t_max → lipschitz_on_with L (v t) (metric.closed_ball x₀ R)
- cont : ∀ (x : E), x ∈ metric.closed_ball x₀ R → continuous_on (λ (t : ℝ), v t x) (set.Icc t_min t_max)
- norm_le : ∀ (t : ℝ), t ∈ set.Icc t_min t_max → ∀ (x : E), x ∈ metric.closed_ball x₀ R → ‖v t x‖ ≤ C
- C_mul_le_R : C * linear_order.max (t_max - t₀) (t₀ - t_min) ≤ R
Prop
structure holding the hypotheses of the Picard-Lindelöf theorem.
The similarly named picard_lindelof
structure is part of the internal API for convenience, so as
not to constantly invoke choice, but is not intended for public use.
- to_fun : ℝ → E → E
- t_min : ℝ
- t_max : ℝ
- t₀ : ↥(set.Icc self.t_min self.t_max)
- x₀ : E
- C : nnreal
- R : nnreal
- L : nnreal
- is_pl : is_picard_lindelof self.to_fun self.t_min ↑(self.t₀) self.t_max self.x₀ self.L ↑(self.R) ↑(self.C)
This structure holds arguments of the Picard-Lipschitz (Cauchy-Lipschitz) theorem. It is part of
the internal API for convenience, so as not to constantly invoke choice. Unless you want to use one
of the auxiliary lemmas, use exists_forall_deriv_within_Icc_eq_of_lipschitz_of_continuous
instead
of using this structure.
The similarly named is_picard_lindelof
is a bundled Prop
holding the long hypotheses of the
Picard-Lindelöf theorem as named arguments. It is used as part of the public API.
Instances for picard_lindelof
- picard_lindelof.has_sizeof_inst
- picard_lindelof.has_coe_to_fun
- picard_lindelof.inhabited
Equations
- picard_lindelof.has_coe_to_fun = {coe := picard_lindelof.to_fun _inst_2}
The maximum of distances from t₀
to the endpoints of [t_min, t_max]
.
Projection $ℝ → [t_{\min}, t_{\max}]$ sending $(-∞, t_{\min}]$ to $t_{\min}$ and $[t_{\max}, ∞)$ to $t_{\max}$.
Equations
- v.proj = set.proj_Icc v.t_min v.t_max _
- to_fun : ↥(set.Icc v.t_min v.t_max) → E
- map_t₀' : self.to_fun v.t₀ = v.x₀
- lipschitz' : lipschitz_with v.C self.to_fun
The space of curves $γ \colon [t_{\min}, t_{\max}] \to E$ such that $γ(t₀) = x₀$ and $γ$ is Lipschitz continuous with constant $C$. The map sending $γ$ to $\mathbf Pγ(t)=x₀ + ∫_{t₀}^{t} v(τ, γ(τ))\,dτ$ is a contracting map on this space, and its fixed point is a solution of the ODE $\dot x=v(t, x)$.
Instances for picard_lindelof.fun_space
- picard_lindelof.fun_space.has_sizeof_inst
- picard_lindelof.fun_space.has_coe_to_fun
- picard_lindelof.fun_space.inhabited
- picard_lindelof.fun_space.metric_space
- picard_lindelof.fun_space.complete_space
Each curve in picard_lindelof.fun_space
is continuous.
Equations
- picard_lindelof.fun_space.to_continuous_map = {to_fun := λ (f : v.fun_space), {to_fun := ⇑f, continuous_to_fun := _}, inj' := _}
Equations
- picard_lindelof.fun_space.metric_space = metric_space.induced ⇑picard_lindelof.fun_space.to_continuous_map picard_lindelof.fun_space.metric_space._proof_1 infer_instance
Given a curve $γ \colon [t_{\min}, t_{\max}] → E$, v_comp
is the function
$F(t)=v(π t, γ(π t))$, where π
is the projection $ℝ → [t_{\min}, t_{\max}]$. The integral of this
function is the image of γ
under the contracting map we are going to define below.
The Picard-Lindelöf operator. This is a contracting map on picard_lindelof.fun_space v
such
that the fixed point of this map is the solution of the corresponding ODE.
More precisely, some iteration of this map is a contracting map.
Picard-Lindelöf (Cauchy-Lipschitz) theorem. Use
exists_forall_deriv_within_Icc_eq_of_is_picard_lindelof
instead for the public API.
Picard-Lindelöf (Cauchy-Lipschitz) theorem.
A time-independent, locally continuously differentiable ODE satisfies the hypotheses of the Picard-Lindelöf theorem.
A time-independent, locally continuously differentiable ODE admits a solution in some open interval.
A time-independent, continuously differentiable ODE admits a solution in some open interval.