systrophe 0.14.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. systrophe-0.14.1/LICENSE +21 -0
  2. systrophe-0.14.1/PKG-INFO +378 -0
  3. systrophe-0.14.1/README.md +359 -0
  4. systrophe-0.14.1/pyproject.toml +24 -0
  5. systrophe-0.14.1/setup.cfg +4 -0
  6. systrophe-0.14.1/src/systrophe/__init__.py +272 -0
  7. systrophe-0.14.1/src/systrophe/acoustic_metric.py +203 -0
  8. systrophe-0.14.1/src/systrophe/adm_export.py +254 -0
  9. systrophe-0.14.1/src/systrophe/anomaly_inflow.py +199 -0
  10. systrophe-0.14.1/src/systrophe/array.py +166 -0
  11. systrophe-0.14.1/src/systrophe/back_reaction.py +237 -0
  12. systrophe-0.14.1/src/systrophe/casimir.py +171 -0
  13. systrophe-0.14.1/src/systrophe/casimir_throat.py +147 -0
  14. systrophe-0.14.1/src/systrophe/ctc.py +83 -0
  15. systrophe-0.14.1/src/systrophe/d_ctc.py +184 -0
  16. systrophe-0.14.1/src/systrophe/dinos_bridge.py +215 -0
  17. systrophe-0.14.1/src/systrophe/dirac.py +303 -0
  18. systrophe-0.14.1/src/systrophe/dirac_sea.py +107 -0
  19. systrophe-0.14.1/src/systrophe/dirac_spectrum.py +179 -0
  20. systrophe-0.14.1/src/systrophe/dsi_observables.py +261 -0
  21. systrophe-0.14.1/src/systrophe/energy_conditions.py +169 -0
  22. systrophe-0.14.1/src/systrophe/floquet.py +306 -0
  23. systrophe-0.14.1/src/systrophe/floquet_engineering.py +175 -0
  24. systrophe-0.14.1/src/systrophe/floquet_mobius.py +213 -0
  25. systrophe-0.14.1/src/systrophe/geodesic.py +231 -0
  26. systrophe-0.14.1/src/systrophe/hadamard_offtrace.py +177 -0
  27. systrophe-0.14.1/src/systrophe/horned_torus.py +233 -0
  28. systrophe-0.14.1/src/systrophe/lewis_papapetrou.py +223 -0
  29. systrophe-0.14.1/src/systrophe/lp_robust.py +176 -0
  30. systrophe-0.14.1/src/systrophe/newton_kantorovich.py +237 -0
  31. systrophe-0.14.1/src/systrophe/off_axis.py +353 -0
  32. systrophe-0.14.1/src/systrophe/pair.py +196 -0
  33. systrophe-0.14.1/src/systrophe/particle_creation.py +128 -0
  34. systrophe-0.14.1/src/systrophe/photon_orbits.py +137 -0
  35. systrophe-0.14.1/src/systrophe/photon_raytrace.py +141 -0
  36. systrophe-0.14.1/src/systrophe/point_splitting.py +259 -0
  37. systrophe-0.14.1/src/systrophe/qftcs_backreaction.py +124 -0
  38. systrophe-0.14.1/src/systrophe/quantum_diagnostics.py +199 -0
  39. systrophe-0.14.1/src/systrophe/sinusoid.py +132 -0
  40. systrophe-0.14.1/src/systrophe/spacetimes/__init__.py +29 -0
  41. systrophe-0.14.1/src/systrophe/spacetimes/cosmic_string.py +87 -0
  42. systrophe-0.14.1/src/systrophe/spacetimes/godel.py +138 -0
  43. systrophe-0.14.1/src/systrophe/spacetimes/gott.py +147 -0
  44. systrophe-0.14.1/src/systrophe/spacetimes/kerr.py +146 -0
  45. systrophe-0.14.1/src/systrophe/spacetimes/line_singularity.py +149 -0
  46. systrophe-0.14.1/src/systrophe/time_machine.py +201 -0
  47. systrophe-0.14.1/src/systrophe/tipler_fractal.py +305 -0
  48. systrophe-0.14.1/src/systrophe/vanstockum.py +374 -0
  49. systrophe-0.14.1/src/systrophe.egg-info/PKG-INFO +378 -0
  50. systrophe-0.14.1/src/systrophe.egg-info/SOURCES.txt +92 -0
  51. systrophe-0.14.1/src/systrophe.egg-info/dependency_links.txt +1 -0
  52. systrophe-0.14.1/src/systrophe.egg-info/requires.txt +10 -0
  53. systrophe-0.14.1/src/systrophe.egg-info/top_level.txt +1 -0
  54. systrophe-0.14.1/tests/test_acoustic_metric.py +117 -0
  55. systrophe-0.14.1/tests/test_adm_export.py +113 -0
  56. systrophe-0.14.1/tests/test_anomaly_inflow.py +175 -0
  57. systrophe-0.14.1/tests/test_array.py +96 -0
  58. systrophe-0.14.1/tests/test_back_reaction.py +122 -0
  59. systrophe-0.14.1/tests/test_casimir.py +156 -0
  60. systrophe-0.14.1/tests/test_casimir_throat.py +133 -0
  61. systrophe-0.14.1/tests/test_ctc.py +78 -0
  62. systrophe-0.14.1/tests/test_d_ctc.py +118 -0
  63. systrophe-0.14.1/tests/test_dinos_bridge.py +93 -0
  64. systrophe-0.14.1/tests/test_dirac.py +128 -0
  65. systrophe-0.14.1/tests/test_dirac_sea.py +64 -0
  66. systrophe-0.14.1/tests/test_dirac_spectrum.py +71 -0
  67. systrophe-0.14.1/tests/test_dsi_observables.py +126 -0
  68. systrophe-0.14.1/tests/test_energy_conditions.py +82 -0
  69. systrophe-0.14.1/tests/test_floquet.py +91 -0
  70. systrophe-0.14.1/tests/test_floquet_engineering.py +118 -0
  71. systrophe-0.14.1/tests/test_floquet_mobius.py +133 -0
  72. systrophe-0.14.1/tests/test_geodesic.py +57 -0
  73. systrophe-0.14.1/tests/test_godel.py +79 -0
  74. systrophe-0.14.1/tests/test_gott.py +98 -0
  75. systrophe-0.14.1/tests/test_hadamard_offtrace.py +110 -0
  76. systrophe-0.14.1/tests/test_horned_torus.py +157 -0
  77. systrophe-0.14.1/tests/test_kerr.py +120 -0
  78. systrophe-0.14.1/tests/test_lewis_papapetrou.py +224 -0
  79. systrophe-0.14.1/tests/test_lp_robust.py +84 -0
  80. systrophe-0.14.1/tests/test_newton_kantorovich.py +145 -0
  81. systrophe-0.14.1/tests/test_off_axis.py +138 -0
  82. systrophe-0.14.1/tests/test_offset_sweep.py +66 -0
  83. systrophe-0.14.1/tests/test_pair.py +68 -0
  84. systrophe-0.14.1/tests/test_particle_creation.py +77 -0
  85. systrophe-0.14.1/tests/test_photon_orbits.py +85 -0
  86. systrophe-0.14.1/tests/test_photon_raytrace.py +100 -0
  87. systrophe-0.14.1/tests/test_point_splitting.py +122 -0
  88. systrophe-0.14.1/tests/test_qftcs_backreaction.py +59 -0
  89. systrophe-0.14.1/tests/test_quantum_diagnostics.py +93 -0
  90. systrophe-0.14.1/tests/test_singularity_reinterpretations.py +167 -0
  91. systrophe-0.14.1/tests/test_sinusoid.py +57 -0
  92. systrophe-0.14.1/tests/test_time_machine.py +102 -0
  93. systrophe-0.14.1/tests/test_tipler_fractal.py +166 -0
  94. systrophe-0.14.1/tests/test_vanstockum.py +103 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Christian Knopp
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,378 @@
1
+ Metadata-Version: 2.4
2
+ Name: systrophe
3
+ Version: 0.14.1
4
+ Summary: Co-rotating dust cylinder pair, van Stockum / Tipler exterior with log-periodic sinusoid superposition
5
+ Author-email: Christian Knopp <cknopp@gmail.com>
6
+ License: MIT
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: numpy>=1.24
11
+ Requires-Dist: scipy>=1.11
12
+ Provides-Extra: dev
13
+ Requires-Dist: pytest>=7; extra == "dev"
14
+ Requires-Dist: pytest-cov; extra == "dev"
15
+ Requires-Dist: sympy>=1.12; extra == "dev"
16
+ Provides-Extra: symbolic
17
+ Requires-Dist: sympy>=1.12; extra == "symbolic"
18
+ Dynamic: license-file
19
+
20
+ <div align="center">
21
+
22
+ # Συστροφή — Systrophe
23
+
24
+ **A co-rotating Tipler-cylinder pair as a tunable time-travel harness.**
25
+
26
+ [![Tests](https://github.com/Zynerji/systrophe/actions/workflows/tests.yml/badge.svg)](https://github.com/Zynerji/systrophe/actions/workflows/tests.yml)
27
+ [![Python ≥ 3.10](https://img.shields.io/badge/python-%E2%89%A5%203.10-blue.svg)](https://www.python.org/)
28
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
29
+ [![Tests: 406 passing](https://img.shields.io/badge/tests-406%20passing-brightgreen.svg)](#tests)
30
+ [![Whitepaper I](https://img.shields.io/badge/whitepaper%20I-PDF-informational.svg)](paper/systrophe_time_travel.pdf)
31
+ [![Whitepaper II](https://img.shields.io/badge/whitepaper%20II-PDF-informational.svg)](paper/systrophe_qft_on_ctc.pdf)
32
+ [![Version 0.14.1](https://img.shields.io/badge/version-0.14.1-blue.svg)](pyproject.toml)
33
+
34
+ *Systrophē* (Greek **Συστροφή**, "twisting-together"): the joint exterior of two co-rotating, dual-positive-mass van Stockum dust cylinders, whose log-periodic Tipler sinusoids superpose with a tunable relative phase offset.
35
+
36
+ </div>
37
+
38
+ ---
39
+
40
+ ## What this is
41
+
42
+ A complete numerical and analytic implementation of:
43
+
44
+ 1. **The single rotating cylinder** — exact van Stockum 1937 interior + analytic Bonnor Case III exterior (closed forms for `F`, `K`, `L`).
45
+ 2. **The Lewis–Papapetrou ODE integrator** — Ernst-equation numerical exterior for any rotation parameter, validated to machine precision against the closed forms.
46
+ 3. **The Systrophe pair** — two co-axial supercritical cylinders linearly superposed, producing an *off-set Tipler sinusoid* whose CTC band positions are tunable by the relative phase `δ₂ − δ₁`.
47
+ 4. **A time-machine harness** — locate CTC bands, derive timelike-orbit angular-velocity sectors, tune coordinate-time-per-revolution to a target value, simulate forward and backward time-travel orbits.
48
+ 5. **A bridge to the Δῖνος (Dinos) Dirac–Kerr–Newman framework** — exact identification of the Tipler log-grid fundamental eigenvalue with the Z₃ Möbius cover branch=0 fundamental; non-trivial branches realise the off-set sectors of the systrophic pair.
49
+
50
+ The package ships with a **comprehensive whitepaper** ([`paper/systrophe_time_travel.pdf`](paper/systrophe_time_travel.pdf)) deriving every formula, all five figures, and reproducing the simulation results end-to-end.
51
+
52
+ ---
53
+
54
+ ## Installation
55
+
56
+ ```bash
57
+ pip install -e ".[dev]" # editable install with dev tools
58
+ pytest # 406 tests, ~3 minutes
59
+ ```
60
+
61
+ Optional extras:
62
+ - `.[symbolic]` — SymPy for the one-shot derivation script (`tools/derive_lewis_papapetrou.py`).
63
+ - `pip install z3-solver` — required if you want the Dinos bridge module (`systrophe.dinos_bridge`).
64
+
65
+ ---
66
+
67
+ ## Quickstart: build a single time machine
68
+
69
+ ```python
70
+ import numpy as np
71
+ from systrophe import VanStockumInterior, find_single_cylinder_windows, harness_time_loop
72
+
73
+ # A supercritical van Stockum cylinder: a = ω R = 1
74
+ cyl = VanStockumInterior(omega=1.0, R=1.0)
75
+
76
+ # Locate CTC bands in r ∈ [1.001, 200]
77
+ windows = find_single_cylinder_windows(cyl, r_min=1.001, r_max=200.0)
78
+ for w in windows:
79
+ print(f"CTC band: r ∈ [{w.r_inner:.3f}, {w.r_outer:.3f}] "
80
+ f"deepest L = {w.L_min:.3f}")
81
+
82
+ # Tune a backward-time-travel orbit: Δt per revolution = -1
83
+ orbit = harness_time_loop(windows[0], target_dt_per_rev=-1.0, n_revolutions=10)
84
+ print(f"Ω = {orbit['Omega']:+.4f}")
85
+ print(f"per rev: Δt = {orbit['dt_per_revolution']:+.3f}, Δτ = {orbit['dtau_per_revolution']:.3f}")
86
+ print(f"after 10 revs: Δt_total = {orbit['total_coord_time_advance']:+.3f}, "
87
+ f"Δτ_total = {orbit['total_proper_time_advance']:.3f}")
88
+ ```
89
+
90
+ Expected output:
91
+ ```
92
+ CTC band: r ∈ [1.001, 6.134] deepest L = -3.351
93
+ CTC band: r ∈ [37.622, 200.000] deepest L = -126.065
94
+ Ω = -6.2832
95
+ per rev: Δt = -1.000, Δτ = 11.354
96
+ after 10 revs: Δt_total = -10.000, Δτ_total = 113.537
97
+ ```
98
+
99
+ The particle moves *backwards* in coordinate time by 10 units while advancing 113.5 units of its own proper time.
100
+
101
+ ---
102
+
103
+ ## Quickstart: tune the harness via a co-rotating pair
104
+
105
+ ```python
106
+ from systrophe import SystrophePair, VanStockumInterior
107
+
108
+ cyl = VanStockumInterior(omega=1.5, R=1.0)
109
+ pair = SystrophePair.from_cylinders(cyl, cyl, delta_offset=0.7853981633974483) # π/4
110
+
111
+ print(f"phase offset = {pair.phase_offset:.4f} rad")
112
+ bands = pair.ctc_bands(r_min=1.05, r_max=20.0)
113
+ print(f"{len(bands)} CTC bands; first at r ∈ [{bands[0][0]:.3f}, {bands[0][1]:.3f}]")
114
+ ```
115
+
116
+ The phase offset between the two cylinders **continuously shifts** the CTC band positions. At exact anti-phase (`δ = π`), all CTC bands extinguish — a topological off-switch.
117
+
118
+ ---
119
+
120
+ ## End-to-end demonstration
121
+
122
+ ```bash
123
+ python examples/time_travel_simulation.py
124
+ ```
125
+
126
+ Runs the full numerical experiment from the whitepaper: identifies CTC bands, sweeps offset, computes time-travel orbits, writes machine-readable JSON results to `examples/time_travel_simulation_results.json`.
127
+
128
+ ---
129
+
130
+ ## Mathematical highlights
131
+
132
+ **Tipler log-frequency.** For `a = ω R > 1/2` (supercritical), the exterior metric components oscillate as functions of `u = ln(r/R)` with frequency
133
+
134
+ ```
135
+ α = √(4 a² − 1).
136
+ ```
137
+
138
+ **Closed forms** (all three Bonnor regimes).
139
+
140
+ *Supercritical* (`a > 1/2`): with `γ = π − arctan α`,
141
+ ```
142
+ F(r) = (r/R) · sin(α u + γ) / sin γ
143
+ K(r) = (r/α) · [ ((α² − 1)/2) sin(α u + γ) − α cos(α u + γ) ]
144
+ L(r) = (r R sin γ / α²) · [ Q sin(α u + γ) + α(α² − 1) cos(α u + γ) ]
145
+ ```
146
+ with `Q = α² − (α² − 1)² / 4`.
147
+
148
+ *Critical* (`a = 1/2`):
149
+ ```
150
+ F(r) = (r/R)(1 − u) K(r) = (r/2)(1 + u) L(r) = (rR/4)(3 + u)
151
+ ```
152
+
153
+ *Subcritical* (`a < 1/2`): with `β = √(1 − 4a²)` and `S± = cosh(βu) ± sinh(βu)/β`,
154
+ ```
155
+ F(r) = (r/R) S₋(u) K(r) = a r S₊(u) L(r) = rR(1 − a²S₊²)/S₋
156
+ ```
157
+
158
+ The constraint `F·L + K² = r²` holds identically in every regime; verified to machine precision in the test suite.
159
+
160
+ **Pair superposition.** For matched `α`, the joint envelope is a single sinusoid whose amplitude and phase come from the phasor sum
161
+
162
+ ```
163
+ A_eff · exp(i δ_eff) = A₁ exp(i δ₁) + A₂ exp(i δ₂).
164
+ ```
165
+
166
+ **Time-travel orbit.** A circular orbit at fixed `r` in a CTC band has
167
+
168
+ ```
169
+ Δt = 2 π / Ω (coordinate time per rev)
170
+ Δτ = √(F − 2 K Ω − L Ω²) · |Δt| (proper time per rev)
171
+ ```
172
+
173
+ The full derivation, with Lewis–Papapetrou Ernst-equation reduction and Bonnor's Case classification, is in the whitepaper.
174
+
175
+ ---
176
+
177
+ ## Architecture
178
+
179
+ ```
180
+ src/systrophe/ Classical-GR backbone (v0.1-v0.6)
181
+ vanstockum.py — Interior metric + analytic Case III exterior
182
+ lewis_papapetrou.py — Numerical Ernst-equation integrator
183
+ lp_robust.py — Regime-dispatching robust solver
184
+ sinusoid.py — TiplerSinusoid log-periodic envelope
185
+ pair.py — SystrophePair co-axial superposition
186
+ off_axis.py — OffAxisPair parallel-axis
187
+ ctc.py — CTC band detector
188
+ geodesic.py — Circular orbits, integrate_geodesic
189
+ time_machine.py — TimeMachineWindow + harness
190
+ dinos_bridge.py — Optional Dinos-DKN interop
191
+
192
+ src/systrophe/ Quantum / QFT layer (v0.7-v0.13; see paper II)
193
+ dirac.py, dirac_spectrum.py — Radial Dirac operator + bound-state spectrum
194
+ dirac_sea.py — Dirac-sea pressure, horizon divergence
195
+ particle_creation.py — Bogoliubov-style horizon emission
196
+ qftcs_backreaction.py — QFTCS curvature back-reaction trace
197
+ quantum_diagnostics.py — Ricci, surface gravity, Hawking T, Tolman
198
+ point_splitting.py — 4D Riemann/Kretschmann/trace anomaly
199
+ hadamard_offtrace.py — Full <T_munu>_ren tensor
200
+ floquet.py — Adiabatic Floquet on radial Dirac
201
+ floquet_mobius.py — Joint Floquet on (time x Z_3 branch)
202
+ casimir.py — Topological Casimir / Z_3 mode sums
203
+ casimir_throat.py — Brown-Maclay <T_munu> at cavity
204
+ anomaly_inflow.py — APS eta + Callan-Harvey Z_3 closure
205
+ tipler_fractal.py — DSI + cascade-DSI extension
206
+ horned_torus.py — Regular + inverted horn modes
207
+ acoustic_metric.py — Unruh acoustic-metric mapping
208
+ newton_kantorovich.py — NK solver + Picard comparison
209
+ back_reaction.py — Self-consistency composite residual
210
+ floquet_engineering.py — CTC stability map (drive_amp, omega)
211
+ dsi_observables.py — Log-periodic precursor fits
212
+ adm_export.py — ADM 3+1 hand-off for NR codes
213
+ d_ctc.py — Deutsch CTC fixed-point on Z_3 cover
214
+
215
+ tests/ — 367 passing tests across 30 modules
216
+ paper/
217
+ systrophe_time_travel.tex/pdf Whitepaper I (classical, v0.1-v0.6)
218
+ systrophe_qft_on_ctc.tex/pdf Whitepaper II (QFT, v0.7-v0.13)
219
+ docs/
220
+ INTERPRETATIONS.md — 6 open ansatz claims, with required input
221
+ EXPERIMENTAL_ACOUSTIC_ANALOG.md — BEC-vortex design proposal
222
+ examples/ — Verification batteries + simulation scripts
223
+ tools/ — One-shot SymPy derivations
224
+ ```
225
+
226
+ ---
227
+
228
+ ## Quantum layer (v0.13)
229
+
230
+ Beyond the classical-GR core, Systrophe v0.7–v0.13 adds:
231
+
232
+ - **Renormalised stress tensor** on the LP background, with off-trace
233
+ components `<T_{μν}>_ren = (1/2880π²) R_{μρστ} R_ν^{ρστ}`, whose
234
+ trace recovers the conformal anomaly exactly.
235
+ - **Anomaly inflow** on the Z₃ Möbius cover: APS η-invariants give
236
+ (0, 1/3, −1/3) summing to zero; nonzero gauge twist is closed by
237
+ Chern-Simons coefficient `1/(24π²)`.
238
+ - **Acoustic-metric mapping**: identification `c² − v² = F` makes
239
+ the chronology horizon an acoustic horizon. Gravitational and
240
+ acoustic Hawking temperatures agree to machine precision.
241
+ - **Joint Floquet** on (time-circle × Z₃-branch), with cyclic-
242
+ permutation symmetry verified and the `(e_b − e_b')` resonance
243
+ identified.
244
+ - **Brown-Maclay** flat-space Casimir at the cavity, with LP
245
+ curvature-correction scale `K · d⁴` (small means flat-space
246
+ approximation valid).
247
+ - **Newton-Kantorovich** back-reaction solver demonstrating that
248
+ naive Picard iterations converge linearly, not quadratically.
249
+ - **Cascade discrete-scale invariance** (`tipler_fractal.py`):
250
+ proves the base Tipler sinusoid is not fractal (dim 0) but the
251
+ multi-cylinder cascade is (dim > 0.3).
252
+ - **Horned torus** topology with regular (pinch) and inverted
253
+ (bulge) variants.
254
+ - **ADM 3+1 export** for hand-off to Einstein Toolkit / similar NR
255
+ codes.
256
+ - **D-CTC** Deutsch-CTC fixed-point solver on the Z₃ cover.
257
+
258
+ Full derivations are in [`paper/systrophe_qft_on_ctc.pdf`](paper/systrophe_qft_on_ctc.pdf)
259
+ (Whitepaper II). Open ansatz-level interpretations are documented in
260
+ [`docs/INTERPRETATIONS.md`](docs/INTERPRETATIONS.md). A BEC-vortex
261
+ experimental-analog design proposal is in
262
+ [`docs/EXPERIMENTAL_ACOUSTIC_ANALOG.md`](docs/EXPERIMENTAL_ACOUSTIC_ANALOG.md).
263
+
264
+ ---
265
+
266
+ ## The Δῖνος bridge
267
+
268
+ The package optionally interoperates with [Dinos-DKN](https://github.com/Zynerji/dinos-DKN), exposing a striking structural correspondence:
269
+
270
+ > **Theorem (numerical, exact to machine precision).**
271
+ > Sample the supercritical Tipler exterior at `N` nodes per log-period `2π/α`. The fundamental discrete-Laplacian eigenvalue equals exactly the `branch = 0` mode-1 eigenvalue of the Dinos Z₃ Möbius cover at the same `N`. The non-trivial branches `b ∈ {1, 2}` (complex conjugate pair, `2π/3` phase advance per node) sit at strictly lower eigenvalue and are the discrete signature of the off-set sectors of the systrophic pair (`δ = ±2π/3`).
272
+
273
+ ```python
274
+ from systrophe import VanStockumInterior
275
+ from systrophe.dinos_bridge import z3_branch_match_to_tipler_alpha
276
+
277
+ vs = VanStockumInterior(omega=1.0, R=1.0)
278
+ out = z3_branch_match_to_tipler_alpha(vs, N=24)
279
+ # {'tipler_eigenvalue': 0.06814834..., 'z3_eigenvalues': (0.06815, 0.00761, 0.00761),
280
+ # 'best_branch_match': 0, 'relative_residual': 0.0}
281
+ ```
282
+
283
+ Requires `pip install z3-solver` and Dinos-DKN on `PYTHONPATH`. The test suite skips silently if either is unavailable.
284
+
285
+ ---
286
+
287
+ ## Tests
288
+
289
+ ```bash
290
+ pytest # 65 tests, ~5 seconds
291
+ pytest -v # verbose
292
+ pytest --cov=systrophe # with coverage (requires pytest-cov)
293
+ ```
294
+
295
+ Test suite breakdown:
296
+
297
+ | Module | Tests | Coverage |
298
+ |---|---:|---|
299
+ | `test_vanstockum.py` | 7 | Minkowski limit, invariants, threshold, exterior rejection |
300
+ | `test_sinusoid.py` | 6 | α formula, log-periodicity, fit recovery |
301
+ | `test_pair.py` | 7 | Phasor collapse, anti-phase cancellation, principal-range wrap |
302
+ | `test_ctc.py` | 6 | Sign-band detection, destructive interference, modulated bands |
303
+ | `test_lewis_papapetrou.py` | 12 | Continuity, supercritical numerical-vs-analytic, constraint |
304
+ | `test_lp_robust.py` | 8 | Regime dispatch, machine-precision supercritical, F-zero formula |
305
+ | `test_off_axis.py` | 7 | Construction guards, reflection symmetries, 2D CTC map |
306
+ | `test_dinos_bridge.py` | 6 | Kerr mapping, Z₃ branch correspondence (skipped if z3 absent) |
307
+ | `test_offset_sweep.py` | 6 | Convenience constructor, offset-π minimum, type checks |
308
+ | `test_geodesic.py` | 6 | Minkowski circular orbit, Ω-bounds, target-time inverse |
309
+ | `test_time_machine.py` | 9 | Band detection, target-Δt matching, spacelike rejection |
310
+
311
+ ---
312
+
313
+ ## Whitepaper
314
+
315
+ [`paper/systrophe_time_travel.pdf`](paper/systrophe_time_travel.pdf) (11 pages, includes 5 figures and 3 tables) covers:
316
+
317
+ 1. Mathematical framework — van Stockum, Lewis–Papapetrou, Ernst, Bonnor cases.
318
+ 2. Co-rotating cylinder pair — linearised superposition, off-set Tipler sinusoid.
319
+ 3. Closed timelike curves and time-travel orbits — geodesic structure, coordinate vs proper time.
320
+ 4. Time-machine harness — single-cylinder and pair-tuned numerical results.
321
+ 5. Connection to Dinos via Z₃ Möbius eigenvalue correspondence.
322
+ 6. Implementation, tests, evaluation.
323
+ 7. Limitations and open questions (chronology protection, asymptotic non-flatness, idealised source).
324
+
325
+ To regenerate the PDF:
326
+ ```bash
327
+ python paper/generate_figures.py # produces paper/figures/*.pdf
328
+ cd paper && pdflatex systrophe_time_travel.tex && pdflatex systrophe_time_travel.tex
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Limitations
334
+
335
+ - **Linearised pair.** Two-cylinder Einstein vacuum has no closed form; both `SystrophePair` (co-axial) and `OffAxisPair` (parallel-axis) treat the second source as a linearised perturbation. Cross-terms `h^(1) · h^(2)` are formally O(G²) and not modelled.
336
+ - **Off-axis quantitative limits.** In the off-axis case, the Case III exterior is not asymptotically flat, so both single-cylinder perturbations are simultaneously "large" at most points; the linearised superposition is best read as a qualitative tool for identifying CTC regions rather than as a quantitative orbital framework.
337
+ - **Idealised source.** Infinite, rigid, perfectly axisymmetric dust column. No known matter form realises this; Tipler-cylinder time-travel scenarios are theoretical exercises in the structure of GR vacuum solutions.
338
+ - **Asymptotic non-flatness.** The Case III exterior oscillates indefinitely; there is no privileged "observer at infinity" against whom coordinate time can be synchronised.
339
+ - **No chronology protection.** This is a pre-quantum, classical-GR construction. The chronology-protection conjecture (Hawking 1992) is not addressed.
340
+
341
+ ---
342
+
343
+ ## Citation
344
+
345
+ ```bibtex
346
+ @misc{Knopp2026Systrophe,
347
+ author = {Knopp, Christian},
348
+ title = {{Systrophē}: A co-rotating Tipler-cylinder pair as a tunable
349
+ time-travel harness},
350
+ year = {2026},
351
+ note = {Python implementation of van Stockum interior, Lewis--Papapetrou
352
+ exterior, off-set Tipler sinusoid, and Z\_3 M\"obius cover
353
+ correspondence; 65 passing tests.},
354
+ url = {https://github.com/Zynerji/systrophe}
355
+ }
356
+ ```
357
+
358
+ ---
359
+
360
+ ## License
361
+
362
+ MIT. See [`LICENSE`](LICENSE).
363
+
364
+ ---
365
+
366
+ ## Contact
367
+
368
+ `cknopp@gmail.com`
369
+
370
+ ---
371
+
372
+ ## References
373
+
374
+ - W. J. van Stockum, *The gravitational field of a distribution of particles rotating about an axis of symmetry*, Proc. Roy. Soc. Edin. **57** (1937) 135.
375
+ - T. Lewis, *Some special solutions of the equations of axially symmetric gravitational fields*, Proc. Roy. Soc. London A **136** (1932) 176.
376
+ - F. J. Tipler, *Rotating cylinders and the possibility of global causality violation*, Phys. Rev. D **9** (1974) 2203.
377
+ - W. B. Bonnor, *The exterior gravitational field of a rotating cylinder of dust*, J. Phys. A **13** (1980) 2121.
378
+ - S. W. Hawking, *The chronology protection conjecture*, Phys. Rev. D **46** (1992) 603.