Versión en castellano

Chameleon bigravity and spin-2 dark matter

Final project, AI-assisted research (Claude Code + Codex) · Guadalupe Ahumada Acuña, DF–FCEN–UBA · September 2026

Can the massless gravitons of the metric \(g\) mix with those of a second dynamical metric \(f\) and produce massive spin-2 particles that behave as dark matter? I took my own bigravity calculation and used two agents to extend it to the chameleon case, \(\beta_n\to\beta_n(\phi)\), with a general relative lapse \(c(t)\) and background ratio \(\xi(t)\). For every result I recorded where it comes from and checked it along a path that shares no code with the one that produced it.

The model

\[ S=\frac{M_g^2}{2}\!\int\!\sqrt{-g}R[g]+\frac{M_f^2}{2}\!\int\!\sqrt{-f}R[f]+M_g^2m^2\!\int\!\sqrt{-g}\sum_{n=0}^{4}\beta_n(\phi)\,e_n\!\big(\sqrt{g^{-1}f}\big)-\tfrac12\!\int\!\sqrt{-g}(\partial\phi)^2+S_m\!\left[A^2(\phi)g\right] \]

The backgrounds are \(ds_g^2=-dt^2+a^2d\vec x^2\) and \(ds_f^2=\xi^2(t)\,[-c^2(t)dt^2+a^2d\vec x^2]\). My starting notes cover standard bigravity with \(c=1\) and constant \(\xi\). The goal is the stress-energy tensor at second order in perturbations.

How the work was done

My notesstandard theory + Next steps
Claudewrites Secs. 7–11 of the notes and 55 sympy checks
Codexaudits the notes 4 times (11 → 16 → 20 → 17 issues)
My model codexPand, \(c=1\), constant \(\xi\)
A/Bsame prompt to both agents: rules for \(R_{\mu\nu}[f]\)
Codexre-derives 1711.04655 and audits my notebook
My general codecodigo/Perturbaciones_Chameleon.nb
Independent checksverificaciones/run_all.sh
Claudesign fix, \(c(t)\), tensors with \(c\neq1\), clean run of my notebook
Timeline of the work by lane: me, Claude, Codex
Timeline, reconstructed from file modification dates.

Results, and how much I trust each one

Notation: \(J=\beta_1+2\beta_2\xi+\beta_3\xi^2\), \(Z=\beta_1+(1+c)\beta_2\xi+c\beta_3\xi^2\), \(\kappa=M_f^2/M_g^2\), \(\Delta=H-\xi H_f\).

ResultWho produced itIndependent checkStatus
Backgrounds of \(g\) and \(f\), Klein–Gordon, conservationme (xPand), with the \(f\) geometry designed with the agentsre-derived from the action in components; with the old sign of \(\dot\rho\) the constraint fails (negative control)verified
Generalised Bianchi constraintme · Claude's notes · 1702.04490the three forms are identical (sympy, 7/7 PASS)verified
\(c(t)\)me · Claude's notesfrom the action (Mathematica, no xAct) and inside my notebook (residual 0)verified
Linear tensor sector with \(c\neq1\), \(\xi(t)\), and \(m_{\rm M}^2\)me (EqTg) + component block in my notebookderivacion_TT_general.m: 10 PASS; matches EqTg and the notes' massverified
Vectors, scalar no-ghostClaude's notes; Codex re-derived 1711.04655171 checks by Codex; Claude copied \(\kappa_1,\Sigma\) from the paperpartial
Dark matter from \(\mathcal G\to\mathcal M\) conversiononly Claude's notes4 audits, 7 issues still opennot verified

Constraint. With \(\beta_n(\phi)\), the branch dichotomy \(J(H-\xi H_f)=0\) of standard bigravity is replaced by an inhomogeneous constraint. The Hubble-rate mismatch is driven by the rolling chameleon, not by matter:

\[ J\,(H-\xi H_f)=-\tfrac13\,\dot\phi\,\big(\beta_1'+3\beta_2'\xi+3\beta_3'\xi^2+\beta_4'\xi^3\big),\qquad c-1=\frac{\mathcal P-\Delta\,\xi H_f}{\widetilde W} \]

Tensor sector for general \(c(t)\), \(\xi(t)\). The \(f\)-graviton propagates on the light cone of \(f\), and the mass terms close on \(h-\gamma\):

\[ \ddot\gamma+\Big(3H+2\tfrac{\dot\xi}{\xi}-\tfrac{\dot c}{c}\Big)\dot\gamma+c^2\tfrac{k^2}{a^2}\gamma+m_\gamma^2(\gamma-h)=0,\qquad m_{\rm M}^2=m_h^2+m_\gamma^2=-\frac{m^2Z\,(c+\kappa\xi^2)}{\kappa\xi} \]

For \(c\neq1\) the gradient matrix \(\mathrm{diag}(1,c^2)\) does not commute with the mass matrix. So no constant basis decouples \(\mathcal G\) and \(\mathcal M\): there is a mixing channel \(\propto k^2(c^2-1)\) on top of the one driven by \(\dot\theta\). This is the starting point of the second-order calculation.

What I learned about the agents

Issues per audit and per topic
Background issues disappear over the audits. The total does not go down: the issues migrate to phenomenology.

Reproduce

git clone <this repo> && cd <repo>/verificaciones
bash run_all.sh      # ~3 min: 7/7 + 6/6 + 21/21 + 34/34 + 17/17 PASS, and the c=1 tensor sector closes

Environment: Python 3.12 (sympy 1.12, numpy, scipy, mpmath); Mathematica 12.1.1 for the two component derivations, with no xAct needed. The notebooks use xAct (xTensor 1.2.0, xPert 1.0.6, xPand 0.4.3).

Next steps

  1. Vector and scalar sectors in my notebook, with the exact \(\delta\sqrt{g^{-1}f}\) (Sylvester equation).
  2. \(T_{\mu\nu}\) at second order on top of the verified tensor equations.
  3. Only then, conversion and relic abundance for a concrete \(\beta_n(\phi)=\bar\beta_n e^{-\lambda\phi}\).