Winding numbers of finite-energy curves and of asymptotic eigenvectors in dimension three
DefinitionFiniteEnergyPlane_WindingWinding numbers for finite-energy pseudoholomorphic curves in the symplectization of a strictly star-shaped level , in the setting of FiniteEnergyPlane_Setting and FiniteEnergyPlane_Asymptotics with (U. Hryniewicz 2014, § 2.2.4; C. Wendl, Lectures on Symplectic Field Theory, § 3.7). Here is the Reeb field, the contact planes, a complex structure on , and a periodic Reeb orbit.
- Winding of a loop. A continuous -periodic has winding number if for a continuous with . A vector is read as .
- Global frame of . is trivialized by Hryniewicz's frame (
HryniewiczCriterion.xiFrame1/2, built from quaternions), with . For , its coordinate is . A loop along with has winding if its coordinate loop does. - Windings of eigenvectors. For an eigenvalue of (a loop of symmetric matrices), " has winding " means that is an eigenvalue and every eigenfunction for has winding ; the span of winding is the linear span of all eigenfunctions of eigenvalues with winding . The same notion is defined for eigenvalues of the asymptotic operator , with windings in the global frame.
- . means is the winding of some eigenvalue of and no eigenvalue has larger winding; means is the winding of some eigenvalue and no eigenvalue has smaller winding.
- Prime orbits. is prime if for .
- Punctures. At the cylindrical coordinates are ; at they are . In both, approaches the puncture.
- The transverse derivative. projects onto along . For a curve with , is the global-frame coordinate of .
- Local index of a zero. An isolated zero of has local index if has winding along every small counterclockwise circle .
- (Hryniewicz (14)). on means: the zeros of in are finitely many, each is isolated with some local index, and these indices sum to .
- (Hryniewicz (16), one puncture). At a puncture with sign and cylindrical coordinates , means that for all large the loop has winding .
- Fast planes (Hryniewicz, Definition 2.14). A finite-energy plane whose puncture is nondegenerate (Definition 2.9) with a prime asymptotic limit, and with .
Formalization Note Every invariant is a predicate Has… k ("the invariant is defined and equals "), never a total function with a default value. V 1 and HryniewiczCriterion.R4 are identified coordinatewise (toR4, ofR4, by Fin.cast), and the global frame is HryniewiczCriterion.xiCoords of H ∘ ofR4. Winding numbers depend only on the orientation of the frame, and induces the orientation of given by , as does Hryniewicz's in Remark 2.13. The coordinates at are the cylEnd of the previous mission (cylEndAt 0 = cylEnd). of the end map is fderiv ℝ (endW H u e) (s, t) (1, 0).
import Definitions.Def_FiniteEnergyPlane_Asymptotics
import Definitions.Def_HryniewiczCriterion_ConleyZehnder
/-!
# Winding numbers of finite-energy curves in the symplectization of a star-shaped level in `ℝ⁴`
U. Hryniewicz, J. Symplectic Geom. 12 (2014), § 2.2.4 ((14)–(16), Remark 2.13, Definition 2.14);
U. Hryniewicz, Trans. AMS 364 (2012), §§ 3–4; H. Hofer, K. Wysocki, E. Zehnder, GAFA 5 (1995), § 3;
C. Wendl, *Lectures on Symplectic Field Theory* (2026 notes), § 3.7.
Everything is in the setting of `FiniteEnergyPlane_Setting` and `FiniteEnergyPlane_Asymptotics`
for `n = 1`, so `S = H⁻¹(1) ⊂ V 1 = ℝ⁴` and `ξ` has real rank `2`.
Conventions.
* `V 1` and `HryniewiczCriterion.R4` have the same coordinates `(q₁, p₁, q₂, p₂)`; `toR4` and
`ofR4` are the identity on coordinates (`Fin (2 * (1 + 1)) = Fin 4`).
* `ξ` is trivialized by Hryniewicz's global frame `Z₁, Z₂` (`HryniewiczCriterion.xiFrame1/2` of
`H ∘ ofR4`), with `ω₀(Z₁, Z₂) = 1`. `xiCoordC H x v = a + i b` for `v = a Z₁ + b Z₂`. Winding
numbers of nowhere-vanishing sections depend only on the orientation of the frame, and `(Z₁, Z₂)`
induces the orientation of `ξ` given by `dλ₀`, as does `(Z, J Z)` in Hryniewicz's Remark 2.13.
* `π : TS → ξ` is the projection along the Reeb field, `π v = v - λ₀(v) R`.
* Cylindrical coordinates at a puncture `z₀` are `(s, t) ↦ z₀ + e^{-2π(s + it)}` (`cylEndAt z₀`,
with `cylEndAt 0 = cylEnd`), and at `∞` they are `cylInf`. In both, `s → +∞` approaches the
puncture; at a puncture of sign `ε` the loops are read as `t ↦ (s, εt)`.
* All invariants are predicates `Has… k` asserting that the invariant is defined and equals the integer `k`,
never total functions with default values.
-/
namespace FiniteEnergyPlane
noncomputable section
open MeasureTheory Metric Filter Topology
open scoped ContDiff ENNReal Real
/-! ### Winding of a loop in `ℂ \ {0}` -/
/-- `f` is a continuous `1`-periodic loop in `ℂ \ {0}` with winding number `k`: some continuous
`θ : ℝ → ℝ` has `f(t) = |f(t)| e^{iθ(t)}` for all `t`, and `θ(1) - θ(0) = 2πk`. -/
def HasLoopWind (f : ℝ → ℂ) (k : ℤ) : Prop :=
Continuous f ∧ Function.Periodic f 1 ∧ (∀ t, f t ≠ 0) ∧
∃ θ : ℝ → ℝ, Continuous θ ∧
(∀ t, f t = (‖f t‖ : ℂ) * Complex.exp ((θ t : ℂ) * Complex.I)) ∧ θ 1 - θ 0 = 2 * π * k
/-- `ℝ² = CauchyRiemannIndex.Vec 1` as `ℂ`: `(q, p) ↦ q + i p`. Under this map `J₀` is
multiplication by `i`. -/
def vecToC (a : CauchyRiemannIndex.Vec 1) : ℂ := ⟨a (Sum.inl 0), a (Sum.inr 0)⟩
/-! ### The global frame of `ξ` -/
/-- `V 1 → HryniewiczCriterion.R4`, the identity on coordinates. -/
def toR4 (y : V 1) : HryniewiczCriterion.R4 := fun k => y (Fin.cast (by norm_num) k)
/-- `HryniewiczCriterion.R4 → V 1`, the identity on coordinates. -/
def ofR4 (x : HryniewiczCriterion.R4) : V 1 := fun k => x (Fin.cast (by norm_num) k)
/-- The coordinates `a + i b` of `v = a Z₁ + b Z₂ ∈ ξ_x` in Hryniewicz's global frame `Z₁, Z₂` of
`ξ` (`HryniewiczCriterion.xiCoords` of `H ∘ ofR4`): `a = ω₀(v, Z₂)`, `b = ω₀(Z₁, v)`. -/
def xiCoordC (H : V 1 → ℝ) (x v : V 1) : ℂ :=
let c := HryniewiczCriterion.xiCoords (fun z => H (ofR4 z)) (toR4 x) (toR4 v)
⟨c 0, c 1⟩
/-- The projection `π v = v - λ₀(x)(v) R(x)` of `T_x S` onto `ξ_x` along the Reeb field. -/
def piXi {n : ℕ} (H : V n → ℝ) (x v : V n) : V n := v - liouville x v • reeb H x
/-- The winding of a `ξ`-valued loop `η` along `P = (x, T)` (`η(t) ∈ ξ_{x(Tt)}`) in the global
frame: `k` is the winding number of `t ↦ xiCoordC H (x(Tt)) (η(t))`. -/
def HasXiLoopWind {H : V 1 → ℝ} (P : ReebOrbit H) (η : ℝ → V 1) (k : ℤ) : Prop :=
HasLoopWind (fun t => xiCoordC H (P.x (P.T * t)) (η t)) k
/-! ### Windings of eigenvectors -/
/-- `μ` is an eigenvalue of `A = -J₀ ∂ₜ - S∞` (on `ℝ²`-valued loops) and every eigenfunction for
`μ` has winding number `k` (as a loop in `ℂ` under `vecToC`). -/
def HasLoopEigenWind (Sinf : ℝ → CauchyRiemannIndex.Mat 1) (μ : ℝ) (k : ℤ) : Prop :=
(∃ e, IsLoopEigen Sinf μ e) ∧
∀ e, IsLoopEigen Sinf μ e → HasLoopWind (fun t => vecToC (e t)) k
/-- The linear span of all eigenfunctions of `A = -J₀ ∂ₜ - S∞` whose eigenvalue `μ` satisfies
`HasLoopEigenWind Sinf μ k`. -/
def loopEigenSpan (Sinf : ℝ → CauchyRiemannIndex.Mat 1) (k : ℤ) :
Submodule ℝ (ℝ → CauchyRiemannIndex.Vec 1) :=
Submodule.span ℝ {e | ∃ μ : ℝ, IsLoopEigen Sinf μ e ∧ HasLoopEigenWind Sinf μ k}
/-- `μ` is an eigenvalue of the asymptotic operator `A_P` and every eigenvector for `μ` has
winding number `k` in the global frame. -/
def HasEigenWind {H : V 1 → ℝ} (J : V 1 → V 1 →L[ℝ] V 1) (P : ReebOrbit H) (μ : ℝ) (k : ℤ) :
Prop :=
(∃ v, IsAsymptoticEigen J P μ v) ∧ ∀ v, IsAsymptoticEigen J P μ v → HasXiLoopWind P v k
/-- `k = α⁻(P)`: the largest winding number of an eigenvalue `μ < 0` of `A_P` (attained, and an
upper bound for all of them). -/
def IsAlphaMinus {H : V 1 → ℝ} (J : V 1 → V 1 →L[ℝ] V 1) (P : ReebOrbit H) (k : ℤ) : Prop :=
(∃ μ < 0, HasEigenWind J P μ k) ∧ ∀ μ < 0, ∀ k' : ℤ, HasEigenWind J P μ k' → k' ≤ k
/-- `k = α⁺(P)`: the smallest winding number of an eigenvalue `μ ≥ 0` of `A_P` (attained, and a
lower bound for all of them). -/
def IsAlphaPlus {H : V 1 → ℝ} (J : V 1 → V 1 →L[ℝ] V 1) (P : ReebOrbit H) (k : ℤ) : Prop :=
(∃ μ, 0 ≤ μ ∧ HasEigenWind J P μ k) ∧ ∀ μ, 0 ≤ μ → ∀ k' : ℤ, HasEigenWind J P μ k' → k ≤ k'
/-! ### Winding numbers of a finite-energy curve -/
/-- `P` is prime (simply covered): `T` is the least positive period. -/
def ReebOrbit.IsPrime {n : ℕ} {H : V n → ℝ} (P : ReebOrbit H) : Prop :=
∀ τ : ℝ, 0 < τ → τ < P.T → P.x τ ≠ P.x 0
/-- Positive cylindrical coordinates at the puncture `z₀`: `(s, t) ↦ z₀ + e^{-2π(s + it)}`. -/
def cylEndAt (z₀ : ℂ) (s t : ℝ) : ℂ := cwLoop z₀ (Real.exp (-(2 * π * s))) t
/-- The `ξ`-component `π ∂ₛu(z)` of the derivative of `w = proj ∘ u`, in the global frame. -/
def piDs (H : V 1 → ℝ) (u : ℂ → V 1) (z : ℂ) : ℂ :=
xiCoordC H (proj H (u z)) (piXi H (proj H (u z)) (ds (fun z => proj H (u z)) z))
/-- `z₀` is an isolated zero of `f : ℂ → ℂ` of local index `k`: `f(z₀) = 0`, `f` has no other zero
in some `closedBall z₀ r`, and `f` has winding number `k` along every counterclockwise circle
`t ↦ z₀ + ρ e^{2πit}`, `0 < ρ < r`. -/
def HasZeroIndex (f : ℂ → ℂ) (z₀ : ℂ) (k : ℤ) : Prop :=
f z₀ = 0 ∧ ∃ r > 0, (∀ z ∈ closedBall z₀ r, z ≠ z₀ → f z ≠ 0) ∧
∀ ρ ∈ Set.Ioo 0 r, HasLoopWind (fun t => f (z₀ + ccwLoop ρ t)) k
/-- Hryniewicz (14): `wind_π(u) = k` on `ℂ \ Γ`. The zeros of `π ∂ₛu` in `ℂ \ Γ` form a finite set
`Z`, each `z ∈ Z` is an isolated zero of `piDs H u` of some local index, and these indices sum
to `k`. -/
def HasWindPi (H : V 1 → ℝ) (u : ℂ → V 1) (Γ : Finset ℂ) (k : ℤ) : Prop :=
∃ Z : Finset ℂ, (∀ z, z ∈ Z ↔ z ∉ Γ ∧ piDs H u z = 0) ∧
∃ idx : ℂ → ℤ, (∀ z ∈ Z, HasZeroIndex (piDs H u) z (idx z)) ∧ ∑ z ∈ Z, idx z = k
/-- Hryniewicz (16) at one puncture: along the end `e` with sign `ε`, for all large `s` the loop
`t ↦ π ∂ₛw(s, εt)` (in the global frame) has winding number `k`. -/
def HasWindInfAt (H : V 1 → ℝ) (u : ℂ → V 1) (e : ℝ → ℝ → ℂ) (ε : ℝ) (k : ℤ) : Prop :=
∃ s₀ : ℝ, ∀ s ≥ s₀, HasLoopWind (fun t =>
xiCoordC H (endW H u e (s, ε * t))
(piXi H (endW H u e (s, ε * t)) (fderiv ℝ (endW H u e) (s, ε * t) (1, 0)))) k
/-- Hryniewicz, Definition 2.14: `u` is a fast finite-energy plane. It is a finite-energy
`J̃`-holomorphic plane, its puncture `∞` is nondegenerate (Definition 2.9) with a prime asymptotic
limit `P`, and `wind_π(u) = 0`. -/
def IsFastPlane (H : V 1 → ℝ) (J : V 1 → V 1 →L[ℝ] V 1) (u : ℂ → V 1) : Prop :=
IsFiniteEnergyCurve H J Set.univ u ∧
(∃ P : ReebOrbit H, P.IsPrime ∧ IsNondegenerateEnd H u cylInf P 1) ∧ HasWindPi H u ∅ 0
end
end FiniteEnergyPlane
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Definition module FiniteEnergyPlane_Winding
This module defines winding numbers of loops, eigen-winding notions for asymptotic operators, the "alpha" extremal windings, primality of a Reeb orbit, and winding/zero-counting quantities for maps from the plane, culminating in the predicate "fast plane". Throughout, (functions , coordinates ), and below means the Euclidean space indexed by two symbols "left" and "right", with vectors written . Notation imported from earlier modules is recalled where used:
- (for general : even slot gets , odd slot gets ); ; the Liouville form .
- , and the Reeb field (with the convention ).
- (" is in at ") means and .
- A Reeb orbit consists of and a period with , and for all . It is not required that be the minimal period.
- is the block matrix , acting on by .
- , where is some with if such exists (chosen by choice), and otherwise; .
Winding of a loop, . For and : is continuous, -periodic, never zero, and there is a continuous with
. The map , . (Under it, acts as multiplication by .)
, . The identity re-indexing between and .
-coordinates, . For and , set
where is the Euclidean norm, and division by gives . Then
No projection of onto is applied here; is arbitrary.
-projection, (any ): .
. For a Reeb orbit of , , : the loop satisfies with winding . ( is not required to lie in .)
. For , , : there exists at least one loop eigenfunction for , and every loop eigenfunction for has . Here " is a loop eigenfunction for " means: is , -periodic, not identically zero, and
If has no loop eigenfunction, the predicate is false for every .
. The real linear span, inside the vector space of all functions , of the set of those for which there is some such that is a loop eigenfunction for and holds.
. For , a Reeb orbit of , , : there exists an asymptotic eigenvector for , and every such satisfies . " is an asymptotic eigenvector for " means: is , -periodic, for all , is not identically zero, and for all
. There is some with , and for every and every with one has . (So is the attained maximum of the windings carried by negative .)
. There is some with , and for every and every with one has . (So is the attained minimum over ; note is included here.)
(any ): for every with .
. (a clockwise loop around of radius , shrinking to as ). For comparison, the imported .
. For and : with the real derivative of at in the direction (Fréchet derivative, which is by convention where is not differentiable),
. For : , and there is such that for all with , and for every the loop has with winding .
. For a finite set : there is a finite set with (so the zero set of off is required to be finite), and there is a function with for every , and . If there are no such zeros, this says .
. For , , and : there is such that for every the loop
has with winding ( is the Fréchet derivative of in direction , where not differentiable). Since requires -periodicity in , the loop must be -periodic after the rescaling ; is otherwise unrestricted.
. For , all three hold:
- is a finite-energy curve on all of : is , everywhere, is -holomorphic on (differentiable with , where is the imported almost complex structure on built from and ), and its energy (supremum over smooth monotone with values in of the integral of the positive part of the imported energy density) is finite;
- there exists a Reeb orbit of with such that has a "nondegenerate end" at asymptotic to with sign along : there are and with
uniformly in as ; 3. : has finitely many zeros in , each isolated with a well-defined local winding index, and these indices sum to .
No hypotheses on or (star-shapedness, compatibility, smoothness) are built into any of these definitions; they are stated for arbitrary , , .
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.