Skip to content

Conversation

@lecopivo
Copy link

@lecopivo lecopivo commented Jan 3, 2026

Formalization of Navier-Stokes existence and smoothness problem as described in https://www.claymath.org/wp-content/uploads/2022/06/navierstokes.pdf

Potentially issues:

  • not immediately obvious that fderiv ℝ (v · t) x (v x t) is the convective term and that div is divergence
  • the growth conditions uses ‖iteratedFDeriv ℝ n v₀ x‖ instead of |∂^α u(x,t)| but it should be equivalent
  • at various places I'm not completely sure if there should be t ≥ 0 or t > 0 as fderiv might not give what we think at t=0. Mainly in NavierStokesExistenceAndSmoothness.navierStokes

Note:

  • I didn't use the unicode character nu for viscosity as it looks too similar to the letter v which is used for velocity.
  • bikeshead: should it use v(x,t)(aligned with the official statement) or v(t,x) that is more mathlib aligned?
  • should it be formulated in an arbitrary dimension and then instantiated for n:=3?

@google-cla
Copy link

google-cla bot commented Jan 3, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Member

@YaelDillies YaelDillies left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add way more documentation? I would make sure we're at least at mathlib standard (every def has a docstring), and hopefully go even further by writing down explicitly all the design decisions you've taken.

I didn't use the unicode character nu for viscosity as it looks too similar to the letter v which is used for velocity.

This seems fine.

bikeshead: should it use v(x,t) (aligned with the official statement) or v(t,x) that is more mathlib aligned?

I don't mind, so long as the discrepancy is clearly documented.

should it be formulated in an arbitrary dimension and then instantiated for n:=3?

Sure! That seems very reasonable so long as it isn't too difficult to do so. I assume it's already solved for n = 2? If so, it seems reasonable to have one statement for n = 2, one for n = 3 and one for all n, the first one being solved and the other two open.

@YaelDillies YaelDillies added ams-35: Partial differential equations awaiting-author The author should answer a question or perform changes. Reply when done. labels Jan 3, 2026
- added doc strings, mostly AI generated but cleaned up and removed fluff
- using notation form EuclideanGeometry
@lecopivo
Copy link
Author

lecopivo commented Jan 3, 2026

@YaelDillies Hopefully, I have addressed all the issues.

The docs strings are mostly AI generated but they sound good to me and I don't really know what else I would write there.

@YaelDillies YaelDillies added millenium-problems Clay Maths Institute Millenium Problems and removed awaiting-author The author should answer a question or perform changes. Reply when done. labels Jan 4, 2026
Comment on lines +218 to +219
(v₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn v₀) :
∃ v p, NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ (f:=0) v p := sorry
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
(v₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn v₀) :
∃ v p, NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ (f:=0) v p := sorry
(v₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn v₀) :
∃ v p, NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ (f:=0) v p := sorry

Same below

Comment on lines +196 to +197

/--
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/--
/--

This condition ensures the velocity field has finite energy and reasonable
behavior as |x| → ∞.
-/
structure InitialVelocityConditionRn {n : ℕ} (v₀ : ℝ^n → ℝ^n) : Prop
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about

Suggested change
structure InitialVelocityConditionRn {n : ℕ} (v₀ : ℝ^n → ℝ^n) : Prop
structure InitialVelocityConditionDecay {n : ℕ} (v₀ : ℝ^n → ℝ^n) : Prop

instead? In both cases, the function has domain R^n, so Rn is a bit confusing as a way to distinguish

/-- (A) Existence and smoothness of Navier–Stokes solutions on ℝ³. -/
@[category research open, AMS 35]
theorem navier_stokes_existence_and_smoothness_R3 (nu : ℝ) (hnu : nu > 0)
(v₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn v₀) :
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The source uses

Suggested change
(v₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn v₀) :
(u₀ : ℝ³ → ℝ³) (hv₀ : InitialVelocityConditionRn u₀) :

instead. Maybe you could do that so that nu can become \nu?

Comment on lines +211 to +212
/-- The pressure is periodic in space with period 1 for all times t ≥ 0 (condition 10). -/
pressure_periodic : ∀ t ≥ 0, IsPeriodic (p · t)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically, the periodicity of pressure isn't stated anywhere. Could you leave a comment to that effect?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Errata on page 6 says also $p$ should be periodic.

Comment on lines +160 to +163
/-- The Navier-Stokes equation (equation 1):
∂v/∂t + (v·∇)v = ν∆v - ∇p + f -/
navier_stokes : ∀ x, ∀ t > 0,
deriv (v x ·) t + fderiv ℝ (v · t) x (v x t) = nu • Δ (v · t) x - gradient (p · t) x + f x t
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Condition 1 is also stated for t = 0. Could you explain the discrepancy in a comment?

(v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop
extends NavierStokesExistenceAndSmoothness nu v₀ f v p where

/-- The velocity is square-integrable at each time t ≥ 0. -/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/-- The velocity is square-integrable at each time t ≥ 0. -/
/-- The velocity is square-integrable at each time t ≥ 0 (condition 7). -/

Comment on lines +230 to +232
∃ (v₀ : ℝ³ → ℝ³) (f : ℝ³ → ℝ → ℝ³),
InitialVelocityConditionRn v₀ ∧ ForceConditionRn f ∧
¬(∃ v p, NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ f v p) := sorry
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
∃ (v₀ : ℝ³ → ℝ³) (f : ℝ³ → ℝ → ℝ³),
InitialVelocityConditionRn v₀ ∧ ForceConditionRn f ∧
¬(∃ v p, NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ f v p) := sorry
∃ (v₀ : ℝ³ → ℝ³) (f : ℝ³ → ℝ → ℝ³),
InitialVelocityConditionRn v₀ ∧ ForceConditionRn f ∧
\forall v p, ¬ NavierStokesExistenceAndSmoothnessRn (n:=3) nu v₀ f v p := sorry

maybe?

@YaelDillies YaelDillies added the awaiting-author The author should answer a question or perform changes. Reply when done. label Jan 4, 2026
@Paul-Lez Paul-Lez self-requested a review January 5, 2026 22:28
@mirefek
Copy link
Contributor

mirefek commented Jan 8, 2026

We looked at it with Tomáš Bárta (teacher of ODE at Charles University), and it looks good to us.

@mirefek
Copy link
Contributor

mirefek commented Jan 9, 2026

More from Tomáš Bárta:

the formulation of NS seems correct to me but I have some remarks:

  1. Should there be 'for all nu>0' in all theorems?

It seems strange that there is 'for all nu' in parts A, B (existence of global smooth solutions) and also 'for all nu' in parts C, D (non-existence of globally defined smooth solutions). In fact, if non-existence is proved for one nu, by a rescaling procedure it is proved for all positive nu (with another v_0 and f). So, it does not matter whether there is 'for all nu' or 'there exists nu'. But may be it would be better to write 'there exists nu>0' in parts C, D? I suggest to ask an NS expert concerning this.

  1. Problems with $t>0$ and $t\ge 0$.

The present lean formulation writes $t>0$ in some conditions instead of $t\ge 0$ and the reason seems to be the language. Why don't you use iteratedFDerivWithin instead of iteratedFDeriv. Wouldn't it allow to work on $t\ge 0$? Maybe this would be a more elegant solution. (iteratedFDerivWithin seems to be used in definition of ContDiffOn, so we need it anyway)

Copy link
Contributor

@grunweg grunweg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your PR. With Moritz Firsching sitting next to me (to answer any formal conjectures questions), I just took a first look, until line 130. Most of my comments are minor or stylistic --- but let me echo the comment about t > 0 vs t >= 0.

The divergence of a vector field `v : ℝⁿ → ℝⁿ` at point `x`,
computed as the trace of the Jacobian matrix.

In coordinates: div v = Σᵢ ∂vᵢ/∂xᵢ
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This formula should be written as a LaTeX formula; likewise for the formula three lines above and in the other doc-strings below.

In coordinates: div v = Σᵢ ∂vᵢ/∂xᵢ
-/
noncomputable
def divergence {n : ℕ} (v : ℝ^n → ℝ^n) (x : ℝ^n) : ℝ := (fderiv ℝ v x).trace ℝ (ℝ^n)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This definition has junk value zero when v is not differentiable at x (because then the fderiv is defined to be zero).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also add that as a simp lemma. And some basic API lemmas, such as linearity?

noncomputable
def divergence {n : ℕ} (v : ℝ^n → ℝ^n) (x : ℝ^n) : ℝ := (fderiv ℝ v x).trace ℝ (ℝ^n)

notation "∇⬝" => divergence
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
notation "∇⬝" => divergence
@[inherit_doc]
notation "∇⬝" => divergence

Can you also mention the notation in the doc-string, please?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're only using this notation once. Can you also use it on line 75 --- or remove it?

with period 1, i.e., `f(x + eᵢ) = f(x)` for each unit vector `eᵢ`.
This captures functions on the n-torus ℝⁿ/ℤⁿ.
-/
def IsPeriodic {α : Sort*} {n : ℕ} (f : ℝ^n → α) : Prop :=
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps rename this to IsOnePeriodic?

Comment on lines +90 to +93
/-- All derivatives of v₀ decay faster than any polynomial (condition 4).

For any derivative order m and any decay rate K, there exists a constant C
such that |∂ᵐv₀(x)| ≤ C/(1+|x|)^K. -/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personal preference, to some extent:

Suggested change
/-- All derivatives of v₀ decay faster than any polynomial (condition 4).
For any derivative order m and any decay rate K, there exists a constant C
such that |∂ᵐv₀(x)| ≤ C/(1+|x|)^K. -/
/-- All derivatives of v₀ decay faster than any polynomial (condition 4).
For any derivative order m and any decay rate K, there exists a constant C
such that |∂ᵐv₀(x)| ≤ C/(1+|x|)^K. -/

(and please apply the LaTeX formatting also)

/--
Initial velocity conditions for the periodic Navier-Stokes problem on ℝⁿ/ℤⁿ.

The velocity must be smooth, divergence-free, and periodic with period 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also like the phrasing "1-periodic"; this may read more nicely. Optional/subjective.

-/
structure InitialVelocityConditionPeriodic {n : ℕ} (v₀ : ℝ^n → ℝ^n) : Prop
extends InitialVelocityCondition v₀ where
/-- The initial velocity is periodic with period 1 in each direction (condition 8) -/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is only part of condition 8 --- perhaps rephrase as "condition 8, part 1"? Same above.

periodic : IsPeriodic v₀

/--
Basic smoothness condition on external forcing term.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a definite article here. Thanks!

The force must be smooth and decay faster than any polynomial
in both space and time (condition 5 in Fefferman's paper).
-/
structure ForceConditionRn {n : ℕ} (f : ℝ^n → ℝ → ℝ^n) : Prop
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

style: I'd put the extends clause on the same line. (Also, please apply the style comments about doc-string formatting in the same way as above.)

For any derivative orders m and decay rate K, there exists C such that
|∂ᵐ_{x,t} f(x,t)| ≤ C/(1+|x|+t)^K for t > 0.
-/
decay : ∀ m : ℕ, ∀ K : ℝ, ∃ C : ℝ, ∀ x, ∀ t > 0,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have the same comment as was made in the thread above: please use t >= 0 (and iteratedFDerivWithin if needed) --- or say clearly why you think this is a bad idea. I don't see why. Also below (and in the doc-string).

Copy link
Contributor

@grunweg grunweg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I finished my review: another collection of minor items; no further big questions.

-/

open ContDiff Set InnerProductSpace MeasureTheory EuclideanGeometry

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should n be a global implicit variable?

structure ForceConditionPeriodic {n : ℕ} (f : ℝ^n → ℝ → ℝ^n) : Prop
extends ForceCondition f where
/-- The force is periodic in space with period 1 for all times (condition 8) -/
periodic : ∀ t ≥ 0, IsPeriodic (f · t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd name this field isPeriodic (or isOnePeriodic if you rename IsPeriodic to IsOnePeriodic)

structure NavierStokesExistenceAndSmoothness {n : ℕ}
(nu : ℝ) (v₀ : ℝ^n → ℝ^n) (f : ℝ^n → ℝ → ℝ^n)
(v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop where

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

(nu : ℝ) (v₀ : ℝ^n → ℝ^n) (f : ℝ^n → ℝ → ℝ^n)
(v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop
extends NavierStokesExistenceAndSmoothness nu v₀ f v p where

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

extends NavierStokesExistenceAndSmoothness nu v₀ f v p where

/-- The velocity is square-integrable at each time t ≥ 0. -/
integrable : ∀ t ≥ 0, Integrable (‖v · t‖^2)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this use MemLp instead, i.e.

Suggested change
integrable : ∀ t ≥ 0, Integrable (‖v · t‖^2)
integrable : ∀ t ≥ 0, MemLp (‖v · t‖) 2

extends NavierStokesExistenceAndSmoothness nu v₀ f v p where

/-- The velocity is periodic in space with period 1 for all times t ≥ 0 (condition 10). -/
velocity_periodic : ∀ t ≥ 0, IsPeriodic (v · t)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd name this as isPeriodic_velocity (following mathlib conventions). Similarly below.

integrable : ∀ t ≥ 0, Integrable (‖v · t‖^2)

/-- The kinetic energy ∫|v(x,t)|²dx remains uniformly bounded for all time (condition 7). -/
globally_bounded_energy : ∃ E, ∀ t ≥ 0, (∫ x : ℝ^n, ‖v x t‖^2) < E
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the Lebesgue integral, right? Then everything is fine. (For the Bochner integral, you'd have to worry about junk values.)

theorem navier_stokes_breakdown_periodic (nu : ℝ) (hnu : nu > 0) :
∃ (v₀ : ℝ³ → ℝ³) (f : ℝ³ → ℝ → ℝ³),
InitialVelocityConditionPeriodic v₀ ∧ ForceConditionPeriodic f ∧
¬(∃ v p, NavierStokesExistenceAndSmoothnessPeriodic (n:=3) nu v₀ f v p) := sorry
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spaces around :=, please --- also above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ams-35: Partial differential equations awaiting-author The author should answer a question or perform changes. Reply when done. millenium-problems Clay Maths Institute Millenium Problems

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants