METHODS — the three-component fingerprint and the nilpotent-deviation statistic
Living derivation of the inverse estimator scoped in the blog post
_posts/2026-07-15-caustics-to-groups-research-program.md.
This is the single source of truth for the fingerprint definitions and the
matching statistic; every experiment report cites section numbers here.
All coined symbols are collected in the Glossary at the end.
1. The forward map and the caustic
A sub-Riemannian (SR) structure on a manifold M is a distribution
D ⊂ TM (allowed directions) with a metric on it. From a base point q0, the
exponential map exp_{q0}: T*_{q0}M → M sends an initial covector p to the
endpoint γ_p(1) of the normal geodesic it launches. It is a Lagrangian map:
the base projection of the Lagrangian submanifold {(γ_p(1), dγ)} carried by the
Hamiltonian flow of H(p) = ½ Σ_i ⟨p, X_i⟩² (the X_i an orthonormal frame of
D). The caustic (equivalently the conjugate locus) is the critical-value
set of exp_{q0} — where the geodesic front folds and nearby geodesics refocus.
src/heisenberg.py implements this for the Heisenberg group in closed form;
src/caustics.py detects the first conjugate time for any geodesic map as the
first positive zero of the Jacobian determinant
J(t) = det[ ∂γ/∂θ | ∂γ/∂w | ∂γ/∂t ] (1)
(θ = launch angle, w = vertical momentum). For Heisenberg, J(t) first vanishes at
t_c = 2π/|w| because the rotational Jacobi field ∂γ/∂θ = (−y, x, 0) collapses
there; this is the golden fact scripts/smoke_test.py regression-locks.
2. The obstruction: ADE universality (why naive detection fails)
By Arnol’d’s classification, a generic Lagrangian caustic exhibits only the
universal ADE germs — fold A2, cusp A3, swallowtail A4, umbilic D4. This
list is the same for optics, the cosmic web, and the SR exponential of every
candidate group. A single local germ carries no information about the group.
The estimator must therefore never key on a local germ; it keys on the triple
of structure-specific observables below (§3–§5), matched by the deviation
statistic of §6.
3. Component 1 — tangent cone / growth vector (via Ball–Box scaling)
Zoom infinitely into an SR structure at q0 and it converges (Gromov–Hausdorff)
to its metric tangent cone, a Carnot group classified by its growth
vector (n_1, n_2, …), the dimensions of the flag
D ⊂ D + [D,D] ⊂ D + [D,D] + [[D,D],D] ⊂ … (2)
generated by iterated Lie brackets. Reference vectors for the candidate list:
Heisenberg/SE(2)/SL(2)/SH(2) → (2,3); Engel → (2,3,4); Cartan → (2,3,5).
Estimator (implemented, src/growth.py; results in docs/E0-growth-vector.md).
By the Ball–Box theorem, in graded-adapted coordinates each coordinate of
homogeneous weight w reaches ~ r^w along geodesics of length r, and the SR
ball volume scales as
vol B(q0, r) ~ r^Q , Q = Σ_i i · (n_i − n_{i−1}) (n_0 := 0) (3)
with Q the homogeneous dimension (Heisenberg/SE(2): Q=4; Engel: Q=7;
Cartan: Q=10). We estimate the per-coordinate weights directly: shoot unit-speed
geodesics with vertical momenta spanning a wide log band, measure each
coordinate’s reach (a high quantile of |coord|) versus r, and fit the
exponent. The growth vector is n_k = #{coords with weight ≤ k} and Q their sum
(metric M1). Two points matter and were forced by the data (E0 §”methodological
findings”): momenta must be wide-band (a fixed distribution samples only the
w r → 0 regime at small r and returns spurious weights — Heisenberg’s z-weight
came out 2.78 instead of 2), and the fit must be noise-floor aware,
m(r) = sqrt((a r^w)^2 + b^2), or absolute position noise cliff-collapses
recovery. This component fixes the class; it cannot separate groups that share a
tangent cone (SE(2) vs. Heisenberg — both (2,3); confirmed aliased in E0), which
is what §4 is for.
4. Component 2 — conjugate locus at the pole and its moduli
The full first conjugate locus from q0 — not one germ — carries discriminating
structure: its cusp count, its symmetry group, and continuous moduli.
For 3D contact structures Agrachev–Barilari classify the left-invariant metric by
two differential invariants (χ, κ) with the flat Heisenberg case at
χ = κ = 0; the conjugate locus of a generic contact structure is a four-cusped
SR astroid (El-Alaoui–Gauthier–Kupka 1996; Agrachev–Charlot–Gauthier–
Zakalyukin 2000), and its departure from the symmetric nilpotent reference is
governed by (χ, κ). The estimator extracts cusp count and symmetry directly
from the sampled locus and regresses (χ̂, κ̂) from its shape (metric M3).
Correction logged for the blog figure. For the flat Heisenberg model specifically, the first conjugate locus degenerates onto the z-axis (§1: the whole θ-circle collapses to a point), rather than being a non-degenerate astroid. The astroid is the generic contact caustic; Heisenberg is the maximally degenerate limit. The Part 1 figure labels its astroid “schematic”, but the caption’s phrase “the flat astroid” should be tightened to “the nilpotent reference (degenerate for Heisenberg)”. Flagged here; to fix in the post on the next editorial pass.
5. Component 3 — the abnormal-geodesic stratum (one topological bit)
SR structures admit abnormal extremals arising from the shape of D alone,
independent of the metric. Their presence is topological: rank-2 corank-1 (3D
contact: Heisenberg, SE(2), SL(2), SH(2)) have no strictly abnormal
minimizers; higher-corank structures (Engel, corank 2; Cartan, corank 3) do.
The estimator tests for endpoint-map rank deficiency in the observed extremal set
(metric M4). This bit is flagged lower-confidence throughout: regularity
of abnormal minimizers is an open problem, so M4 never hard-gates a verdict.
6. The matching statistic — nilpotent deviation δ
Let C_obs be the observed first conjugate locus near q0, sampled in
SR-normal coordinates (the dilation-adapted coordinates in which the tangent
cone is the identity model). Let C_nil(θ) be the conjugate locus of the
candidate Carnot model with growth vector θ, in the same coordinates from its
known closed form. Define
δ(C_obs, θ) = min_{g ∈ G_θ} d_H( g · C_obs , C_nil(θ) ) (4)
where d_H is the Hausdorff distance between the two sampled sets and G_θ is
the group of intrinsic symmetries (anisotropic dilations + rotations) of the
nilpotent model — so δ measures shape, not accidental scale or placement. The
recovered class is θ̂ = argmin_θ δ, and the residual shape of C_obs after
the best nilpotent match carries the moduli (χ, κ) of §4. δ, its
distribution over realizations, and the best-vs-second-best gap (the
discrimination margin) are metric M2 — the program’s central quantity.
7. Classifier and posterior
The three components map to a posterior over the candidate list (metric M5):
the growth vector selects the class; δ and (χ̂, κ̂) place the group within it;
the abnormal bit down-weights members inconsistent with it. Scoring is geometric
and auditable (no black box); if a learned model is ever used it is trained only
on realizations disjoint from the evaluation set. The confusion matrix over
held-out realizations is the headline deliverable.
8. Leakage discipline (non-negotiable)
The forward generator (src/*.py model modules) and the inverse estimator share
no fitted state. Splits are by realization, never by point. Every free
parameter (kernel scales, radius range for the Q fit, Hausdorff sampling
density, classifier thresholds) is set on designated calibration realizations
only; every reported number comes from held-out realizations. Parameter count is
part of the model comparison.
Glossary
- SR structure / distribution
D— manifold with a sub-bundle of allowed directions and a metric on it; shortest paths move alongD. - Exponential map — covector → geodesic endpoint; a Lagrangian map.
- Caustic / conjugate locus — critical-value set of the exponential map.
- ADE germs — universal local caustic singularities
A2, A3, A4, D4, …; universal ⇒ group-blind. - Tangent cone / Carnot group — the nilpotent group an SR structure converges to under infinite zoom; the reference model.
- Growth vector
(n_1, n_2, …)— dimensions of the bracket-generated flag (2). - Homogeneous dimension
Q— exponent in ball-volume scaling (3). - Moduli
(χ, κ)— Agrachev–Barilari invariants of a 3D contact structure;χ = κ = 0is flat Heisenberg. - Abnormal geodesic — extremal from the shape of
Dalone; present iff corank is high enough. - SR-normal coordinates — dilation-adapted coordinates in which the tangent cone is the identity model.
- Nilpotent-deviation
δ— Hausdorff shape distance (4) fromC_obsto the tangent cone’s caustic, minimized over intrinsic symmetries. - M1–M5 — growth-vector accuracy, deviation
δ, conjugate-locus descriptor error, abnormal-stratum detection, classifier posterior/confusion (see the scoping post §”data-analysis plan”).
References
Arnol’d (1990); Agrachev–Charlot–Gauthier–Zakalyukin, JDCS 6 (2000) 365; El-Alaoui–Gauthier–Kupka, JDCS 2 (1996) 359; Agrachev–Barilari, JDCS 18 (2012) 21 [arXiv:1007.4970]; Sacchelli, SIAM J. Control Optim. 57 (2019) 2362 [arXiv:1812.11340]; Sachkov, ESAIM:COCV 16 (2010) 1018 [arXiv:0903.0727]; Ardentov–Sachkov, RCD 22 (2017) 909 [arXiv:1710.00216]; Ardentov–Hakavuori, ESAIM:COCV 28 (2022) 12 [arXiv:2107.06730]; Agrachev–Barilari–Boscain, A Comprehensive Introduction to Sub-Riemannian Geometry (Cambridge, 2019).