Skip to content

Wire critical symbolic anchors into SageMath CI (C1/C2/M2 + Bach on non-Einstein metric) - #4

Merged
ericrihm merged 3 commits into
mainfrom
ci/sage-critical-anchors
May 31, 2026
Merged

Wire critical symbolic anchors into SageMath CI (C1/C2/M2 + Bach on non-Einstein metric)#4
ericrihm merged 3 commits into
mainfrom
ci/sage-critical-anchors

Conversation

@ericrihm

Copy link
Copy Markdown
Owner

Adds discriminating SageMath regression anchors so the audit's critical fixes are re-proven on every push (Track A already runs tests/test_pe/), not just trusted. Values independently re-derived in sympy.

  • round S^3 (n != 4 — where the C1/C2 bugs no longer coincide with correct as they do at n=4): v_2 = -3/4 (C2), FG g_4 = (1/16) g_0 (C1), Q_4 = 15/8.
  • non-Einstein S^2(1) x S^2(2): P[0,0]=7/24, P[2,2]=-1/3, J=5/12; conformal Laplacian P_2(1) = -5/12 isolating the curvature term (M2 — bare Laplacian returned 0); Bach != 0 (Einstein/Ricci-flat metrics have Bach=0 and mask Bach-coeff bugs; here Cotton=0 but the algebraic P^cd W part is nonzero, Bach=diag(5/32,..,-5/8,..), trace-free).

ericrihm added 3 commits May 31, 2026 14:48
…stein metric)

Wire the audit's critical symbolic fixes into the already-running SageMath CI
(Track A runs tests/test_pe/). New discriminating anchors, values independently
re-derived in sympy:

- round S^3 (n != 4, where C1/C2 no longer coincide with correct at n=4):
  v_2 = -3/4 (C2), Fefferman-Graham g_4 = (1/16) g_0 (C1), Q_4 = 15/8.
- non-Einstein S^2(1) x S^2(2): Schouten P[0,0]=7/24, P[2,2]=-1/3, J=5/12;
  conformal Laplacian P_2(1) = -5/12 isolating the curvature term (M2; the old
  bare-Laplacian returned 0); and Bach != 0 (Einstein/Ricci-flat metrics have
  Bach=0 and would mask Bach-coefficient bugs -- here Cotton=0 but the algebraic
  P^cd W part is nonzero).
The conformal Laplacian P_2, Paneitz P_4, and Q_4 formed their rational
coefficients via Python division on cs.dimension (a Python int), e.g.
(n-2)/(4(n-1)) and n/2, contaminating the symbolic result with floats. This
was masked wherever the exact value is binary-representable (6, 15/8) but
surfaced as P_2(1) = -0.41666... instead of -5/12 on S^2(1)xS^2(2). Reorder so
a Sage object is divided by the integer denominator, keeping results exact
(matching schouten.py, which derives n from g.domain().dim()).
@ericrihm
ericrihm merged commit c0e4f96 into main May 31, 2026
2 checks passed
@ericrihm
ericrihm deleted the ci/sage-critical-anchors branch May 31, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant