Numerical and analytic work on
M_n = sup length(C) / diameter(C)
over bounded self-contracted (equivalently, in the plane, self-approaching) curves C in R^n. Everything here reproduces by running the files; no value is quoted on trust.
pip install numpy scipy mpmath
python ikl_construction.py # the IKL Section 5 extremal geometry, verified
python log_spiral.py # the self-contraction threshold omega
python dimension.py # lower bounds on M_n in higher dimensions
python calibrate.py # paired shape-class contrast (certified rows)
python ladder.py # the certified lower-bound ladder (anchors + verifier)
python reproduce.py # runs every claim above and self-checks the numbers
pytest -q test_repo.py # CI smoke tests (7 checks)
python reproduce.py exits non-zero if any checked value drifts, so you know
at once whether the repository reproduces on your machine. On the reference
environment every checked value reproduces exactly.
2.751235 <= M_2 <= pi = 3.14159..., with 2.7683524 conjectured sharp.
Upper bound M_2 <= pi. In the plane the self-approaching condition of Icking, Klein and Langetepe (1999) coincides with the self-contracted condition, so their perimeter lemma (length <= perimeter of the convex hull) together with perimeter <= pi * diameter gives M_2 <= pi.
Lower bound 2.751235. A certified 84-vertex polygon, computed under the constraint that the diameter is realised by the start-end pair. The continuation ladder, each value certified by exact vertex reduction over all pairs plus brute force on 1500 dense samples (violation 0.0):
| n | ratio |
|---|---|
| 48 | 2.626880 |
| 60 | 2.682113 |
| 72 | 2.723856 |
| 84 | 2.751235 |
The conjectured value 2.7683524. Icking-Klein-Langetepe Section 5 gives a
one-parameter family whose ratio is (2b + pi + 2)/(1 + sqrt(5 - 4 cos b)),
maximised at 2.768352360426576 for b* = 25.0817 degrees. ikl_construction.py
rebuilds this and verifies (i) the numerator is the perimeter of the Theorem 5
enclosure A and the denominator its diameter d(a,f) + 1; (ii) the curve is
self-approaching and attains that diameter between its start point and the
antipode on the halfcircle; (iii) the cascade limit makes the perimeter lemma
tight, so 2.7683524 is achievable as a supremum; (iv) the same family gives the
paper's published 5.3331 under the endpoint normalisation, at a different
member (b = 11.2178 degrees).
Whether M_2 equals 2.7683524 is open. The construction side is complete; the gap is on the upper-bound side, where adapting Theorem 5 from the endpoint distance to the diameter requires re-taking its worst-case optimisation under the new normalisation.
The certified ladder was computed under the constraint diam = |start - end|.
The IKL family violates that constraint (its diameter ends at an interior
antipode, exceeding the endpoint distance by the factor 1.852), so the ladder
is not discretising the IKL family. calibrate.py runs a paired contrast --
each seed shape optimised with and without the constraint, one solver, one
budget, every row certified -- and finds:
| seed | treatment | ratio | turns | diam/dse |
|---|---|---|---|---|
| Figure-11 | unconstrained | 2.375969 | 2.28 | 1.5954 |
| Figure-11 | diam = SE | 2.581783 | 3.40 | 1.0000 |
| spiral | unconstrained | 2.269092 | 3.40 | 1.2987 |
| spiral | diam = SE | 1.657870 | 4.80 | 1.0722 |
The constraint is not a uniform improver: it transforms the IKL shape into a distinct endpoint-pinned 3.4-turn class -- the structure the certified ladder follows -- and damages other shapes (delta +0.206 vs -0.611). So there appear to be two structurally different families near the top: the IKL family, with the diameter at an interior antipode, and the endpoint-pinned class the ladder follows. Whether they share the limit 2.7683524 is the open discrimination the n = 96 continuation is meant to settle.
Cited versus reproduced, stated plainly. The certified ladder values
(2.626880 ... 2.751235) were produced by the author's solver and are cited
here as anchors, not regenerated by the code in this repository. The reference
solver in scc.py is deliberately weak -- it plateaus about 0.4 below the
ladder -- and is used only for the structural contrasts, never to claim the
ladder's heights. What the repository does let anyone reproduce: the exact
IKL constants, the omega threshold, the sqrt(n) families and the step-energy
inequality (all in reproduce.py), and the certification of any curve via
ladder.verify_curve. To regenerate the ladder itself from scratch, pass your
own solve and repair callables to ladder.regenerate -- there is no hidden
solver here that emits 2.751235, and the code says so.
Consequently the absolute ratios in the shape-class table are from the
reference solver at n = 44 and are NOT comparable to the certified ladder;
calibrate.py keeps certification as the shared currency and reports only
within-solver deltas and shape fingerprints, so its structural conclusions are
solver-independent while its heights are not.
log_spiral.py shows r = e^{-b theta} is self-contracted iff b >= omega, where
omega = e^{-3 pi omega / 2} = 0.2744106..., the threshold arising because the
self-contraction inequality first binds at angular separation 3 pi / 2. The
critical spiral reaches length/diameter = 2.6137493, below the bracket's lower
end, so the extremiser is not a logarithmic spiral. (This is the
Longinetti-Manselli-Venturi steepest-descent spiral; the threshold derivation
is included because it is short and not spelled out in the sources.)
dimension.py gives two explicit self-contracted families in R^n, both
Theta(sqrt(n)): orthogonal unit steps p_k = e_1 + ... + e_k (ratio exactly
sqrt(n), the defining inner products all zero), and concatenated planar blocks
in orthogonal 2-planes (about 1.87 sqrt(n)). Both are explained by a one-line
inequality: self-contraction with the endpoint gives d_i^2 >= d_{i+1}^2 +
|v_i|^2, so summing,
sum_i |v_i|^2 <= |start - end|^2 <= diameter^2,
whence by Cauchy-Schwarz an m-edge self-contracted polygon has length at most sqrt(m) * |start - end|, and reaching ratio R costs at least R^2 edges. The orthogonal family attains this with equality. Whether M_n grows faster than sqrt(n) -- in particular whether it can be exponential -- is open; none of the obvious constructions exceeds square-root growth.
scc.py reference solver (SLSQP continuation) and verifier
ladder.py certified lower-bound ladder: anchors, verifier, and the
regenerate() seam for plugging in the author's solver
ikl_construction.py IKL Section 5 geometry, constants, and a negative control
calibrate.py solver-agnostic paired shape-class contrast
log_spiral.py the self-contraction threshold omega
dimension.py higher-dimensional lower bounds and the step-energy bound
hypothesis_gen.py feature fingerprints and constraint templates
reproduce.py runs every claim and self-checks the numbers
test_repo.py pytest CI smoke tests, including verifier accept/reject
- C. Icking, R. Klein, E. Langetepe, Self-approaching curves, Math. Proc. Camb. Phil. Soc. 125 (1999) 441-453.
- O. Aichholzer, F. Aurenhammer, C. Icking, R. Klein, E. Langetepe, G. Rote, Generalized self-approaching curves, Discrete Appl. Math. 109 (2001) 3-24.
- M. Longinetti, P. Manselli, A. Venturi, Plane R-curves and their steepest descent properties, Appl. Anal. (2018-2019).
- E. Stepanov, Y. Teplitskaya, Self-contracted curves have finite length, J. London Math. Soc. (2017).
MIT.