Conley–Zehnder index via winding intervals; dynamical convexity
DefinitionHryniewiczCriterion_ConleyZehnderWinding interval. Let be a path with . For let be the continuous argument of with , so that with . Put . The winding interval is
Conley–Zehnder index. With , Hryniewicz sets if and if . Degenerate paths use the lower semicontinuous extension . In closed form,
Index of a periodic orbit. Let be a periodic orbit of on and let be the linearized flow, , . Project onto along ; this turns the linearized Hamiltonian flow into the linearized Reeb flow on . The path , , is the matrix of , , in the global symplectic frame . Then .
Dynamical convexity (Definition 1.1, after Hofer–Wysocki–Zehnder): for every periodic orbit on , prime or multiply covered.
On the round sphere every Hopf fibre has . On an ellipsoid with radii the short axis has index and the long axis index .
Formalization Note Paths are maps ℝ → Matrix (Fin 2) (Fin 2) ℝ used on . Dynamical convexity quantifies over every solution Y of the variational equation; for smooth that solution exists and is unique.
import Definitions.Def_HryniewiczCriterion_Basic
import Mathlib.Analysis.SpecialFunctions.Trigonometric.Basic
import Mathlib.LinearAlgebra.Matrix.Determinant.Basic
import Mathlib.Algebra.Order.Floor.Ring
/-!
# The Conley–Zehnder index and dynamical convexity
Hryniewicz, arXiv:1105.2077, §2.1.1 (pp. 5–6): the winding interval `I(φ)` of a path
`φ : [0, 1] → Sp(1)` with `φ(0) = I`, the index `μ̂(I(φ))` of (4), its lower
semicontinuous extension (5) to degenerate paths, and Definition 1.1 (dynamical
convexity). The path attached to a periodic orbit is the linearized flow on `ξ`
written in the global frame `Z₁, Z₂` of `Definitions.Def_HryniewiczCriterion_Basic`.
-/
namespace HryniewiczCriterion
noncomputable section
/-- The unit vector `e^{is} = (cos s, sin s)` of `ℝ²`. -/
def rotationVector (s : ℝ) : Fin 2 → ℝ := ![Real.cos s, Real.sin s]
/-- `θ` is a continuous argument of `t ↦ φ(t) e^{is}` on `[0, 1]` with `θ(0) = s`:
`φ(t) e^{is} = r e^{iθ(t)}` with `r > 0`. -/
def IsAngleLift (φ : ℝ → Matrix (Fin 2) (Fin 2) ℝ) (s : ℝ) (θ : ℝ → ℝ) : Prop :=
ContinuousOn θ (Set.Icc 0 1) ∧ θ 0 = s ∧
∀ t ∈ Set.Icc (0 : ℝ) 1, ∃ r : ℝ, 0 < r ∧
(φ t).mulVec (rotationVector s) = r • rotationVector (θ t)
/-- The winding interval `I(φ) = {Δ(s) : s ∈ [0, 2π]}`, `Δ(s) = (θ(1, s) - s) / 2π`
(total rotation of `e^{is}` under `φ`, in turns). -/
def windingInterval (φ : ℝ → Matrix (Fin 2) (Fin 2) ℝ) : Set ℝ :=
{d | ∃ s ∈ Set.Icc (0 : ℝ) (2 * Real.pi), ∃ θ : ℝ → ℝ,
IsAngleLift φ s θ ∧ d = (θ 1 - s) / (2 * Real.pi)}
/-- The Conley–Zehnder index `μ(φ) = μ̂(I(φ))` of (4)–(5): with `I(φ) = [a, b]`,
`μ̂(J) = lim_{ε → 0⁺} μ̂(J - ε)`, where `μ̂(J) = 2k` if `k ∈ J` and `2k + 1` if
`J ⊂ (k, k + 1)`. In closed form: `2(⌈b⌉ - 1)` if `a ≤ ⌈b⌉ - 1`, else `2⌈b⌉ - 1`. -/
def czIndexOfPath (φ : ℝ → Matrix (Fin 2) (Fin 2) ℝ) : ℤ :=
let a := sInf (windingInterval φ)
let b := sSup (windingInterval φ)
if a ≤ ((⌈b⌉ - 1 : ℤ) : ℝ) then 2 * (⌈b⌉ - 1) else 2 * ⌈b⌉ - 1
/-- `Y` is the linearized flow of `X_H` along `x`: `Y(0) = id` and
`Y'(t) = DX_H(x(t)) ∘ Y(t)`. -/
def IsLinearizedFlow (H : R4 → ℝ) (x : ℝ → R4) (Y : ℝ → (R4 →L[ℝ] R4)) : Prop :=
Y 0 = ContinuousLinearMap.id ℝ R4 ∧
∀ t : ℝ, HasDerivAt Y ((fderiv ℝ (hamiltonianVectorField H) (x t)).comp (Y t)) t
/-- Projection onto `ker λ₀(x)` along `X_H(x)`. On `T_x S` it turns the linearized
Hamiltonian flow into the linearized Reeb flow on `ξ`. -/
def reebProjection (H : R4 → ℝ) (x v : R4) : R4 :=
v - (liouvilleForm x v / liouvilleForm x (hamiltonianVectorField H x)) •
hamiltonianVectorField H x
/-- Coordinates of `v ∈ ξ_x` in the frame `Z₁, Z₂`: `v = a Z₁ + b Z₂` with
`a = ω₀(v, Z₂)`, `b = ω₀(Z₁, v)`. -/
def xiCoords (H : R4 → ℝ) (x v : R4) : Fin 2 → ℝ :=
![omega0 v (xiFrame2 H x), omega0 (xiFrame1 H x) v]
/-- The path `φ : [0, 1] → Sp(1)` of a periodic orbit `P = (x, T)`: the linearized
Reeb flow on `ξ` from `x(0)` to `x(Tτ)`, in the frame `Z₁, Z₂`. Column `j` is the
image of `Zⱼ(x(0))`. -/
def linearizedXiPath (H : R4 → ℝ) (P : PeriodicOrbit H) (Y : ℝ → (R4 →L[ℝ] R4)) :
ℝ → Matrix (Fin 2) (Fin 2) ℝ :=
fun τ => Matrix.of fun i j =>
xiCoords H (P.x (P.T * τ))
(reebProjection H (P.x (P.T * τ))
(Y (P.T * τ) (![xiFrame1 H (P.x 0), xiFrame2 H (P.x 0)] j))) i
/-- Hryniewicz Definition 1.1 (after HWZ): every periodic orbit on `S`, prime or
multiply covered, has Conley–Zehnder index at least `3`. (On `S ≅ S³` every orbit
is contractible and `c₁(ξ) = 0`.) -/
def IsDynamicallyConvex (H : R4 → ℝ) : Prop :=
∀ (P : PeriodicOrbit H) (Y : ℝ → (R4 →L[ℝ] R4)),
IsLinearizedFlow H P.x Y → 3 ≤ czIndexOfPath (linearizedXiPath H P Y)
end
end HryniewiczCriterion
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Read-back: Def_HryniewiczCriterion_ConleyZehnder
Namespace HryniewiczCriterion; uses the notions of Def_HryniewiczCriterion_Basic: with coordinates ; ; ; (all partials where is not differentiable); periodic orbits with any (not necessarily minimal) period; and the vectors , with , (quotient if ; ). For , .
Throughout, is an arbitrary function (no continuity, invertibility or symplecticity is assumed); only its values on are ever used.
rotationVector
IsAngleLift
For , a starting angle and a function , " is an angle lift of from " means:
- is continuous on ;
- ;
- for every there is with
i.e. is a polar angle of the vector (matrix times column vector).
Consequences: a lift can exist only if for all and is a positive multiple of . Because is determined modulo at each , the restriction of a lift to is unique when it exists. Values of outside are unconstrained and irrelevant.
windingInterval
Starting angles range over the closed interval (both endpoints, which give the same direction). The set is empty if no starting direction admits a lift (e.g. if kills some direction, or jumps). Despite its name, nothing in the definition makes it an interval.
czIndexOfPath
Let , (real infimum/supremum, with the junk convention: is if is empty or unbounded below; is if is empty or unbounded above). Let . Then
Case-by-case:
- : ; if (i.e. contains the integer ), else .
- : if , else . In particular if then .
Junk values: if then , , and . If is nonempty but unbounded above, is taken as (so ) and according to whether .
IsLinearizedFlow
For , a curve and a family of linear maps: and, for every , is differentiable at with
where is the Fréchet derivative of the map at (junk value where is not differentiable; then the equation reads ). The curve is not required to be a trajectory here.
reebProjection
For :
This is the projection along onto , provided . Junk value: if , the quotient is and .
xiCoords
For , the pair
Since (for ), a vector has . For a general the formula is still applied as written (it is a linear map ). At it gives .
linearizedXiPath
For , a periodic orbit and a family , the path given by: for and (written in the code),
So column is: take the frame vector at the starting point , push it by at time , project along onto at the current point , and express it in the coordinates at that point. Time is rescaled so that covers , i.e. one full traversal of the period carried by (which may be a multiple of the minimal period).
IsDynamicallyConvex
is dynamically convex iff for every periodic orbit of (every curve and every positive period, including multiple covers and any stationary orbits) and every satisfying the linearized-flow condition along ,
with = czIndexOfPath and = linearizedXiPath above.
Vacuity/edge cases: the condition holds vacuously if has no periodic orbits; for a given it holds vacuously if no satisfies the linearized-flow condition; if several such exist, all must satisfy the bound. No smoothness, star-shapedness or other hypothesis on is part of this definition. If the winding set of is empty, and the bound fails.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.