# SCRIPT: PHOTON_RING_WALL # Claim under test: the light 'going back and forth' at a black hole is read by the BH paper's own # spectral-wall generator (sec 8.1): the photon orbit's wobble generator [[0,1],[-V''/2,0]] has a real # pair +-lambda (unstable orbit), and lambda times the half-orbit time gives the echo demagnification. # WHY it proves it: the generator is built from the null geodesic potential alone; the standard # photon-ring result (each extra half-orbit image fainter by e^-gamma, gamma = pi for Schwarzschild, # delay pi*3*sqrt(3) M) is independent. Kill: gamma != pi or delay != 3 sqrt(3) pi M. import sympy as sp r, M, L, E = sp.symbols('r M L E', positive=True) V = (1 - 2*M/r)*L**2/r**2 # null: (dr/dl)^2 + V = E^2 rc = sp.solve(sp.diff(V, r), r)[0] E2 = sp.simplify(V.subs(r, rc)); Ec = sp.sqrt(E2) k2 = sp.simplify(-sp.diff(V, r, 2).subs(r, rc)/2) # generator square = +k2 I -> eigenvalues +-sqrt(k2) dtdl = Ec/(1 - 2*M/rc); dphidl = L/rc**2 lam_t = sp.simplify(sp.sqrt(k2)/dtdl); Om = sp.simplify(dphidl/dtdl) gamma = sp.simplify(lam_t*sp.pi/Om); delay = sp.simplify(sp.pi/Om) print('photon orbit r =', rc, '; generator eigenvalues +-', sp.simplify(sp.sqrt(k2)), '(affine), real: unstable wall') print('Lyapunov rate (coordinate time) =', lam_t, '; orbital rate =', Om) print('echo demagnification per half orbit gamma =', gamma, '-> factor', sp.N(sp.exp(-gamma), 6), '; delay =', delay) print('KILL' if sp.simplify(gamma - sp.pi) != 0 or sp.simplify(delay - 3*sp.sqrt(3)*sp.pi*M) != 0 else 'PASS: reproduces gamma = pi and delay 3 sqrt(3) pi M')