FormalConjectures/Millennium/NavierStokes.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1
20 declarations, 4 contain sorry, 0 declared as axioms
Existence And Smoothness Of The Navier–Stokes Equation
This file formalizes the Clay Mathematics Institute millennium problem concerning the existence and smoothness of solutions to the Navier-Stokes equations in three spatial dimensions. While the definitions are generalized to arbitrary dimension n, the millennium problem specifically concerns the case n = 3.
References
Main Theorems (Clay Millennium Problem for n = 3)
The Clay Millennium Problem asks for a proof of one of the following four statements:
navier_stokes_existence_and_smoothness_R3: (A) Global existence on ℝ³navier_stokes_existence_and_smoothness_periodic: (B) Global existence on ℝ³/ℤ³navier_stokes_breakdown_R3: (C) Existence of breakdown scenario on ℝ³navier_stokes_breakdown_periodic: (D) Existence of breakdown scenario on ℝ³/ℤ³
In September 2026, an internal OpenAI model proved alternatives (C) and (D) by constructing solutions that develop finite-time singularities under smooth forcing.
Variable conventions
Fefferman writes the velocity as $u(x,t)$, the initial velocity as $u^\circ(x)$, the
pressure as $p(x,t)$, the force as $f(x,t)$, and the viscosity as $\nu$. In Lean,
u₀ : ℝ^n → ℝ^n denotes the initial velocity, while v : ℝ^n → ℝ → ℝ^n
denotes the solution velocity. The curried order v x t, p x t, and f x t
keeps the source convention that position comes before time.
Since the Clay statement gives equation (1) on the closed time half-line $t \ge 0$,
the time derivative is encoded with derivWithin relative to Set.Ici 0. The Clay
PDF also includes errata; in particular, we include spatial 1-periodicity of the
pressure in the periodic case. The sign correction to the weak-solution identity in
the errata is not represented here, since this file formalizes the four prize
alternatives rather than the later weak-solution discussion.
Imports (1)
- def
NavierStokes.divergenceline 80 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,FinProof uses:
LinearMap,RingHom.id,OfNat.ofNat,ENNReal,LinearMap.trace,fderiv35 instances, coercions and auxiliary constants left out.
- theorem
NavierStokes.divergence_of_not_differentiableAtThe divergence of a vector field is $0$ at points wherefderivhas its junk value line 87 sourceSource documentation
The divergence of a vector field is $0$ at points where
fderivhas its junk value.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Fin,Not,DifferentiableAt,OfNat.ofNat,ENNReal,Eq, NavierStokes.divergenceProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,LinearMap,RingHom.id,LinearMap.trace,fderiv,ContinuousLinearMap,fderiv_zero_of_not_differentiableAt,map_zero,RingHom,eq_self77 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem divergence_of_not_differentiableAt {v : ℝ^n → ℝ^n} {x : ℝ^n} (hv : ¬ DifferentiableAt ℝ v x) : ∇⬝ v x = 0 := by … - theorem
NavierStokes.divergence_zeroThe divergence of the zero vector field is zero line 93 sourceSource documentation
The divergence of the zero vector field is zero.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Fin,Eq, NavierStokes.divergence,OfNat.ofNat,ENNRealProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,LinearMap,RingHom.id,LinearMap.trace,fderiv,ContinuousLinearMap,congrFun,fderiv_zero,map_zero,RingHom,eq_self72 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem divergence_zero (x : ℝ^n) : ∇⬝ (0 : ℝ^n → ℝ^n) x = 0 := by …
- theorem
NavierStokes.divergence_constThe divergence of a constant vector field is zero line 98 sourceSource documentation
The divergence of a constant vector field is zero.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Fin,Eq, NavierStokes.divergence,OfNat.ofNatProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,LinearMap,RingHom.id,ENNReal,LinearMap.trace,fderiv,ContinuousLinearMap,congrFun,fderiv_fun_const,map_zero,RingHom,eq_self53 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem divergence_const (c : ℝ^n) (x : ℝ^n) : ∇⬝ (fun _ : ℝ^n => c) x = 0 := by …Mentions: c
- theorem
NavierStokes.divergence_addDivergence is additive at points where both vector fields are differentiable line 104 sourceSource documentation
Divergence is additive at points where both vector fields are differentiable.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Fin,DifferentiableAt,OfNat.ofNat,ENNReal,Eq, NavierStokes.divergence,HAdd.hAddProof uses:
Eq.mpr,LinearMap,RingHom.id,LinearMap.trace,fderiv,id,congrArg,NavierStokes.divergence.eq_1,ContinuousLinearMap,fderiv_fun_add,map_add95 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem divergence_add {v w : ℝ^n → ℝ^n} {x : ℝ^n} (hv : DifferentiableAt ℝ v x) (hw : DifferentiableAt ℝ w x) : ∇⬝ (fun y => v y + w y) x = ∇⬝ v x + ∇⬝ w x := by … - theorem
NavierStokes.divergence_smulDivergence commutes with scalar multiplication at differentiability points line 112 sourceSource documentation
Divergence commutes with scalar multiplication at differentiability points.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,EuclideanSpace,Fin,DifferentiableAt,OfNat.ofNat,ENNReal,Eq, NavierStokes.divergence,HSMul.hSMul,HMul.hMulProof uses:
Eq.mpr,LinearMap,RingHom.id,LinearMap.trace,fderiv,id,congrArg,NavierStokes.divergence.eq_1,ContinuousLinearMap,fderiv_fun_const_smul,of_eq_true,Eq.trans,True,congrFun',map_smul,eq_self133 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem divergence_smul (c : ℝ) {v : ℝ^n → ℝ^n} {x : ℝ^n} (hv : DifferentiableAt ℝ v x) : ∇⬝ (fun y => c • v y) x = c * ∇⬝ v x := by …Mentions: c
- def
NavierStokes.IsOnePeriodicA function $f : \mathbb{R}^n \to \alpha$ is 1-periodic if it is periodic in each coordinate with period $1$, i.e. $f(x + e_i) = f(x)$ for each unit vector $e_i$ line 122 sourceSource documentation
A function $f : \mathbb{R}^n \to \alpha$ is 1-periodic if it is periodic in each coordinate with period $1$, i.e. $f(x + e_i) = f(x)$ for each unit vector $e_i$. This captures functions on the $n$-torus $\mathbb{R}^n/\mathbb{Z}^n$.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,FinProof uses:
Eq,HAdd.hAdd,OfNat.ofNat,ENNReal,EuclideanSpace.single17 instances, coercions and auxiliary constants left out.
def IsOnePeriodic {α : Sort*} (f : ℝ^n → α) : Prop := … - structure
NavierStokes.InitialVelocityConditionBasic conditions on initial velocity field for the Navier-Stokes equations in $n$-dimensional space line 135 sourceSource documentation
Basic conditions on initial velocity field for the Navier-Stokes equations in $n$-dimensional space.
The initial velocity must be:
- Divergence-free (incompressibility condition: $\nabla \cdot u_0 = 0$)
- Smooth ($C^\infty$)
These conditions apply regardless of spatial dimension.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure InitialVelocityCondition (u₀ : ℝ^n → ℝ^n) : Prop where …
- structure
NavierStokes.InitialVelocityConditionDecayInitial velocity conditions for the Navier-Stokes problem on all of $\mathbb{R}^n$ line 151 sourceSource documentation
Initial velocity conditions for the Navier-Stokes problem on all of $\mathbb{R}^n$.
In addition to being smooth and divergence-free, the velocity must decay faster than any polynomial at spatial infinity (condition 4 in Fefferman's paper).
This condition ensures the velocity field has finite energy and reasonable behavior as $\lVert x \rVert \to \infty$.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure InitialVelocityConditionDecay (u₀ : ℝ^n → ℝ^n) : Prop extends InitialVelocityCondition u₀ where …Mentions: NavierStokes.InitialVelocityCondition
- structure
NavierStokes.InitialVelocityConditionPeriodicInitial velocity conditions for the periodic Navier-Stokes problem on $\mathbb{R}^n/\mathbb{Z}^n$ line 165 sourceSource documentation
Initial velocity conditions for the periodic Navier-Stokes problem on $\mathbb{R}^n/\mathbb{Z}^n$.
The velocity must be smooth, divergence-free, and 1-periodic in each coordinate (condition 8, part 1 in Fefferman's paper).
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure InitialVelocityConditionPeriodic (u₀ : ℝ^n → ℝ^n) : Prop extends InitialVelocityCondition u₀ where …Mentions: NavierStokes.InitialVelocityCondition
- structure
NavierStokes.ForceConditionThe basic smoothness condition on the external forcing term line 176 sourceSource documentation
The basic smoothness condition on the external forcing term.
The force $f(x,t)$ must be smooth ($C^\infty$) in both space and time variables for $t \ge 0$.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure ForceCondition (f : ℝ^n → ℝ → ℝ^n) : Prop where …
- structure
NavierStokes.ForceConditionDecayForce conditions for the Navier-Stokes problem on all of $\mathbb{R}^n$ line 186 sourceSource documentation
Force conditions for the Navier-Stokes problem on all of $\mathbb{R}^n$.
The force must be smooth and decay faster than any polynomial in both space and time (condition 5 in Fefferman's paper).
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure ForceConditionDecay (f : ℝ^n → ℝ → ℝ^n) : Prop extends ForceCondition f where …
Mentions: NavierStokes.ForceCondition
- structure
NavierStokes.ForceConditionPeriodicForce conditions for the periodic Navier-Stokes problem on $\mathbb{R}^n/\mathbb{Z}^n$ line 201 sourceSource documentation
Force conditions for the periodic Navier-Stokes problem on $\mathbb{R}^n/\mathbb{Z}^n$.
The force must be smooth, 1-periodic in space, and decay in time (conditions 8, part 1 and 9 in Fefferman's paper).
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,EuclideanSpace,Real,Finstructure ForceConditionPeriodic (f : ℝ^n → ℝ → ℝ^n) : Prop extends ForceCondition f where …
Mentions: NavierStokes.ForceCondition
- structure
NavierStokes.NavierStokesExistenceAndSmoothnessA solution (v, p) to the Navier-Stokes equations in n-dimensional space with viscosity $\nu$, initial velocity $u_0$, and external force $f$ line 218 sourceSource documentation
A solution (v, p) to the Navier-Stokes equations in n-dimensional space with viscosity $\nu$, initial velocity $u_0$, and external force $f$.
This structure captures the core requirements for a solution:
- The velocity and pressure satisfy the Navier-Stokes PDE (equation 1)
- The velocity remains divergence-free for all time (equation 2)
- The initial condition is satisfied (equation 3)
- The solution is smooth ($C^\infty$) for all time $t \ge 0$ (equations 6, 11)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,EuclideanSpace,Finstructure NavierStokesExistenceAndSmoothness (nu : ℝ) (u₀ : ℝ^n → ℝ^n) (f : ℝ^n → ℝ → ℝ^n) (v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop where … - structure
NavierStokes.NavierStokesExistenceAndSmoothnessRnA solution to the Navier-Stokes equations on all of $\mathbb{R}^n$ with appropriate decay and energy bounds line 246 sourceSource documentation
A solution to the Navier-Stokes equations on all of $\mathbb{R}^n$ with appropriate decay and energy bounds.
In addition to the basic solution properties, we require:
- The velocity is in $L^2$ at each time $t \ge 0$ (finite kinetic energy)
- The total energy remains bounded for all time (condition 7)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,EuclideanSpace,Finstructure NavierStokesExistenceAndSmoothnessRn (nu : ℝ) (u₀ : ℝ^n → ℝ^n) (f : ℝ^n → ℝ → ℝ^n) (v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop extends NavierStokesExistenceAndSmoothness nu u₀ f v p where … - structure
NavierStokes.NavierStokesExistenceAndSmoothnessPeriodicA solution to the Navier-Stokes equations on the $n$-torus $\mathbb{R}^n/\mathbb{Z}^n$ line 263 sourceSource documentation
A solution to the Navier-Stokes equations on the $n$-torus $\mathbb{R}^n/\mathbb{Z}^n$.
The velocity must be 1-periodic in each spatial direction for all times (condition 10). The pressure is also required to be 1-periodic, following the errata appended to the Clay problem statement.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Real,EuclideanSpace,Finstructure NavierStokesExistenceAndSmoothnessPeriodic (nu : ℝ) (u₀ : ℝ^n → ℝ^n) (f : ℝ^n → ℝ → ℝ^n) (v : ℝ^n → ℝ → ℝ^n) (p : ℝ^n → ℝ → ℝ) : Prop extends NavierStokesExistenceAndSmoothness nu u₀ f v p where … - theorem
NavierStokes.navier_stokes_existence_and_smoothness_R3(A) Existence and smoothness of (unforced) Navier–Stokes solutions on ℝ³ sorry line 274 sourceSource documentation
(A) Existence and smoothness of (unforced) Navier–Stokes solutions on ℝ³.
depends on sorry what this means
Statement uses:
Real,GT.gt,OfNat.ofNat,EuclideanSpace,Fin,Nat, NavierStokes.InitialVelocityConditionDecay,Exists, NavierStokes.NavierStokesExistenceAndSmoothnessRn,ENNRealProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous36 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem navier_stokes_existence_and_smoothness_R3 (nu : ℝ) (hnu : nu > 0) (u₀ : ℝ³ → ℝ³) (hu₀ : InitialVelocityConditionDecay u₀) : ∃ v p, NavierStokesExistenceAndSmoothnessRn nu u₀ (f := 0) v p := by …Mentions: NavierStokes.InitialVelocityConditionDecay, NavierStokes.NavierStokesExistenceAndSmoothnessRn
- theorem
NavierStokes.navier_stokes_existence_and_smoothness_periodic(B) Existence and smoothness of (unforced) Navier–Stokes solutions in ℝ³/ℤ³ sorry line 281 sourceSource documentation
(B) Existence and smoothness of (unforced) Navier–Stokes solutions in ℝ³/ℤ³.
depends on sorry what this means
Statement uses:
Real,GT.gt,OfNat.ofNat,EuclideanSpace,Fin,Nat, NavierStokes.InitialVelocityConditionPeriodic,Exists, NavierStokes.NavierStokesExistenceAndSmoothnessPeriodic,ENNRealProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous36 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem navier_stokes_existence_and_smoothness_periodic (nu : ℝ) (hnu : nu > 0) (u₀ : ℝ³ → ℝ³) (hu₀ : InitialVelocityConditionPeriodic u₀) : ∃ v p, NavierStokesExistenceAndSmoothnessPeriodic nu u₀ (f := 0) v p := by …Mentions: NavierStokes.InitialVelocityConditionPeriodic, NavierStokes.NavierStokesExistenceAndSmoothnessPeriodic
- theorem
NavierStokes.navier_stokes_breakdown_R3sorry line 294 sourcedepends on sorry what this means
Statement uses:
Real,GT.gt,OfNat.ofNat,Exists,EuclideanSpace,Fin,Nat,And, NavierStokes.InitialVelocityConditionDecay, NavierStokes.ForceConditionDecay,Not, NavierStokes.NavierStokesExistenceAndSmoothnessRnProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
NavierStokes.navier_stokes_breakdown_periodicsorry line 308 sourcedepends on sorry what this means
Statement uses:
Real,GT.gt,OfNat.ofNat,Exists,EuclideanSpace,Fin,Nat,And, NavierStokes.InitialVelocityConditionPeriodic, NavierStokes.ForceConditionPeriodic,Not, NavierStokes.NavierStokesExistenceAndSmoothnessPeriodicProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.