<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Physics boosted with LLMs</title>
<link>https://moiseszeleny.github.io/</link>
<atom:link href="https://moiseszeleny.github.io/index.xml" rel="self" type="application/rss+xml"/>
<description>A personal research log on using large language models in theoretical/particle physics (BSM phenomenology).</description>
<generator>quarto-1.9.38</generator>
<lastBuildDate>Sun, 16 Aug 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Más allá de la respuesta directa: un flujo de trabajo LLM + CAS para la física teórica</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/llm-cas-flujo-de-trabajo/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>English version available.</strong> This post is also available <a href="../../posts/llm-cas-workflow/">in English</a>.</p>
</div>
</div>
</div>
<div class="post-abstract">
<p><span class="abstract-label">Resumen</span></p>
<p>Esta entrada prueba un flujo de trabajo concreto para hacer álgebra de física teórica con un modelo de lenguaje (LLM) sin confiar ciegamente en su respuesta: pedirle al LLM que escriba código SymPy, y dejar que el sistema de álgebra computacional (CAS) verifique cada identidad. El caso de prueba es la minimización del potencial escalar del Doublet Left-Right Symmetric Model (DLRSM). Comparo la respuesta directa de un prompt de chat (Gemini 3.1 Pro, 2026-08-02) con el flujo LLM+CAS, y muestro que este último produce una derivación reproducible, verificada con <code>assert</code>, cuyas masas físicas coinciden con los resultados publicados.</p>
</div>
<section id="motivación" class="level2">
<h2 class="anchored" data-anchor-id="motivación">Motivación</h2>
<p>En la entrada anterior de esta bitácora <a href="../../posts/por-que-existe-esta-bitacora/">por-que-existe-esta-bitacora</a> advertí que los modelos de lenguaje (LLMs) son particularmente peligrosos cuando producen una derivación que <strong>luce correcta</strong> pero está mal en un factor de <img src="https://latex.codecogs.com/png.latex?1/(4%5Cpi)%5E2">, en un signo o en una convención. La única defensa que conozco es hacer el cálculo uno mismo y tratar la respuesta del modelo como una hipótesis a verificar.</p>
<p>El problema es que, para muchos problemas de física teórica, “verificar” a mano consume tanto tiempo como hacer el cálculo original. El flujo de trabajo tradicional es, en la práctica, <strong>oracular</strong>: preguntas al modelo, te da una respuesta, y luego debes confiar o rehacer. Lo que propongo aquí es un flujo de trabajo <strong>constructivo</strong>:</p>
<ol type="1">
<li>No le pidas al LLM la respuesta final.</li>
<li>Pídele que escriba el código (SymPy) que produce la respuesta.</li>
<li>Ejecuta ese código en un sistema de álgebra computacional (CAS).</li>
<li>Verifica explícitamente las identidades que el CAS puede comprobar: condiciones de tadpole, autovalores de Goldstone, masas físicas, coincidencia con ecuaciones publicadas.</li>
</ol>
<p>El CAS no elimina la responsabilidad del físico; la cambia de lugar: de “hacer el cálculo a mano” a “escribir un arnés de verificación que el CAS evalúa simbólicamente”. Este es el mismo espíritu que se ve en trabajos recientes como <span class="citation" data-cites="Hell:2026">Hell y Thiele (2026)</span>, donde los LLMs se usan como traductores de intención a código simbólico, no como oráculos.</p>
</section>
<section id="el-caso-de-prueba-minimización-del-potencial-escalar-del-dlrsm" class="level2">
<h2 class="anchored" data-anchor-id="el-caso-de-prueba-minimización-del-potencial-escalar-del-dlrsm">El caso de prueba: minimización del potencial escalar del DLRSM</h2>
<p>El modelo es el Doublet Left-Right Symmetric Model (DLRSM), descrito en <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et&nbsp;al. (2026)</span>. El sector escalar contiene un bidoblete <img src="https://latex.codecogs.com/png.latex?%5CPhi"> y dos dobletes <img src="https://latex.codecogs.com/png.latex?%5Cchi_L,%20%5Cchi_R"> con los VEVs</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2),%20%5Cqquad%0A%5Clangle%5Cchi_L%5Crangle%20=%20%5Cbegin%7Bpmatrix%7D0%5C%5C%20v_L%5Cend%7Bpmatrix%7D,%20%5Cqquad%0A%5Clangle%5Cchi_R%5Crangle%20=%20%5Cbegin%7Bpmatrix%7D0%5C%5C%20v_R%5Cend%7Bpmatrix%7D.%0A"></p>
<p>El potencial escalar, tomado de <span class="citation" data-cites="Senjanovic:1979">Senjanović (1979)</span> y usado en <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et&nbsp;al. (2026)</span>, es <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> con</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%5CPhi%20=&amp;%20-%5Cmu_1%5E2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%0A+%20%5Clambda_1%20%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Clambda_2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5CPhi%20%5C%5C&amp;%0A+%20%5Cfrac%7B%5Clambda_3%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Cfrac%7B%5Clambda_4%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20-%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%20%5C%5C&amp;%0A+%20%5Clambda_5%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%0A+%20%5Cfrac%7B%5Clambda_6%7D%7B2%7D%5Cleft%5B%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7Bh.c.%7D%5Cright%5D,%0A%5Cend%7Baligned%7D%0A"></p>
<p><img src="https://latex.codecogs.com/png.latex?%0AV_%5Cchi%20=%20-%5Cmu_2%5E2%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%0A+%20%5Crho_1%5Cleft%5B%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%5Cright)%5E2%20+%20%5Cleft(%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%5E2%5Cright%5D%0A+%20%5Crho_2%5C,%5Cchi_L%5E%5Cdagger%5Cchi_L%5C,%5Cchi_R%5E%5Cdagger%5Cchi_R,%0A"></p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%7B%5CPhi%5Cchi%7D%20=&amp;%20%5C;%5Calpha_1%5C,%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_2%5Cleft(%5Cchi_L%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5CPhi%5E%5Cdagger%5CPhi%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_3%5Cleft(%5Cchi_L%5E%5Cdagger%5Ctilde%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5Cchi_R%5Cright).%0A%5Cend%7Baligned%7D%0A"></p>
</section>
<section id="definiciones-del-potencial-a-las-masas" class="level2">
<h2 class="anchored" data-anchor-id="definiciones-del-potencial-a-las-masas">Definiciones: del potencial a las masas</h2>
<p>El cálculo de las masas de los escalares a partir de <img src="https://latex.codecogs.com/png.latex?V"> sigue una cadena estándar de cuatro pasos, que el CAS verificará en cada eslabón.</p>
<ol type="1">
<li><p><strong>Expansión alrededor del vacío.</strong> Cada escalar se escribe como su VEV más una fluctuación, por ejemplo <img src="https://latex.codecogs.com/png.latex?%0A%5Cphi_i%5E0(x)%20=%20%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7D%5Cbig(v_i%20+%20%5Ceta_i(x)%20+%20i%5C,%5Cxi_i(x)%5Cbig).%0A"> El potencial se desarrolla entonces al orden cuadrático en las fluctuaciones; la parte bilineal define el espectro de masas.</p></li>
<li><p><strong>Condiciones de tadpole (estacionariedad).</strong> Los VEVs <img src="https://latex.codecogs.com/png.latex?%5C%7Bk_1,%20k_2,%20v_L,%20v_R%5C%7D"> se fijan exigiendo que el vacío sea un extremo: <img src="https://latex.codecogs.com/png.latex?%0A%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_i%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D%20=%200,%20%5Cqquad%20v_i%20%5Cin%20%5C%7Bk_1,%20k_2,%20v_L,%20v_R%5C%7D.%0A"> Cuando estas condiciones se satisfacen, los términos lineales en el desarrollo de <img src="https://latex.codecogs.com/png.latex?V"> —las <em>tadpoles</em>— se anulan idénticamente.</p></li>
<li><p><strong>Matriz de masa (Hessiano del potencial).</strong> La matriz de masa al cuadrado es el Hessiano de <img src="https://latex.codecogs.com/png.latex?V"> evaluado en el vacío. Para los escalares <strong>neutros</strong> (componentes reales <img src="https://latex.codecogs.com/png.latex?%5Cvarphi_i%20=%20%5C%7B%5Ceta_i,%20%5Cxi_i%5C%7D">), <img src="https://latex.codecogs.com/png.latex?%0A%5Cbig(M%5E2%5Cbig)_%7Bij%7D%20=%20%5Cfrac%7B%5Cpartial%5E2%20V%7D%7B%5Cpartial%20%5Cvarphi_i%5C,%5Cpartial%20%5Cvarphi_j%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D.%0A"> Para el sector <strong>cargado</strong> los campos son complejos, y se usa la convención de Wirtinger <img src="https://latex.codecogs.com/png.latex?%0A%5Cbig(M_+%5E2%5Cbig)_%7Bij%7D%20=%20%5Cfrac%7B%5Cpartial%5E2%20V%7D%7B%5Cpartial%20c_i%5E%7B+%7D%5C,%5Cpartial%20c_j%5E%7B-%7D%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D,%20%5Cqquad%20c%5E%7B%5Cpm%7D%20=%20(%5Cphi_2%5E%7B%5Cpm%7D,%20%5Cchi_L%5E%7B%5Cpm%7D,%20%5Cphi_1%5E%7B%5Cpm%7D,%20%5Cchi_R%5E%7B%5Cpm%7D),%0A"> donde <img src="https://latex.codecogs.com/png.latex?c_i%5E+"> y <img src="https://latex.codecogs.com/png.latex?c_j%5E-"> se tratan como variables independientes. Las condiciones de tadpole se sustituyen en <img src="https://latex.codecogs.com/png.latex?M%5E2"> para eliminar los parámetros de masa <img src="https://latex.codecogs.com/png.latex?%5Cmu_%7B1,2%7D%5E2">.</p></li>
<li><p><strong>Bosones de Goldstone y masas físicas.</strong> Por el teorema de Goldstone, cada generador gauge roto espontáneamente produce un modo de masa nula que se convierte en la polarización longitudinal de un bosón de gauge masivo. En el sector cargado del DLRSM, el rompimiento de <img src="https://latex.codecogs.com/png.latex?SU(2)_L%20%5Ctimes%20SU(2)_R"> a <img src="https://latex.codecogs.com/png.latex?U(1)_%7B%5Cmathrm%7Bem%7D%7D"> deja <strong>dos</strong> Goldstones cargados <img src="https://latex.codecogs.com/png.latex?G_L%5E%5Cpm,%20G_R%5E%5Cpm"> —absorbidos por <img src="https://latex.codecogs.com/png.latex?W_L%5E%5Cpm"> y <img src="https://latex.codecogs.com/png.latex?W_R%5E%5Cpm">—, de modo que <img src="https://latex.codecogs.com/png.latex?M_+%5E2"> debe tener exactamente dos autovalores nulos. Los autovalores no nulos restantes son las masas al cuadrado de los Higgs cargados físicos <img src="https://latex.codecogs.com/png.latex?H_%7BL,R%7D%5E%5Cpm">.</p></li>
</ol>
<p>El problema concreto que le plantearé al LLM es: <strong>deriva las cuatro condiciones de tadpolo, la matriz de masa de los escalares cargados en el límite <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">, y las masas físicas de los Higgs cargados</strong>.</p>
</section>
<section id="camino-a-respuesta-directa-de-un-chat" class="level2">
<h2 class="anchored" data-anchor-id="camino-a-respuesta-directa-de-un-chat">Camino A: respuesta directa de un chat</h2>
<p>Usé el modelo <strong>Gemini 3.1 Pro</strong> el 2026-08-02 con el siguiente prompt (el mismo que aparece en el Apéndice del post):</p>
<blockquote class="blockquote">
<p>Consider the Doublet Left-Right Symmetric Model with a bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi%20=%20%5B%5Cphi_1,%20i%5Csigma_2%5Cphi_2%5E*%5D"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2)"> and doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_%7BL,R%7D"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_%7BL,R%7D%5E0%5Crangle%20=%20v_%7BL,R%7D">. The scalar potential is <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> where [potencial completo]. Derive: (a) the four tadpole conditions; (b) the charged scalar mass matrix in the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)"> in the limit <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">; (c) the physical charged Higgs masses.</p>
</blockquote>
<p>La respuesta es impresionante a primera vista: estructura correcta, combinaciones de parámetros plausibles, y las masas físicas finales son las mismas que aparecen en la literatura. Transcribo aquí los resultados principales (abreviados; el texto completo está en el bloque plegado):</p>
<div class="callout callout-style-simple callout-tip no-icon callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>Respuesta completa de Gemini 3.1 Pro (2026-08-02)
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<blockquote class="blockquote">
<p>To derive the properties of the scalar sector in this Left-Right Symmetric Model (LRSM), we evaluate the scalar potential <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> using the standard field expansions around the vacuum expectation values (VEVs).</p>
<p>The bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi"> and the left/right doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_%7BL,R%7D"> are given by: <img src="https://latex.codecogs.com/png.latex?%0A%5CPhi%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cphi_1%5E0%20&amp;%20%5Cphi_2%5E+%20%5C%5C%20%5Cphi_1%5E-%20&amp;%20%5Cphi_2%5E0%20%5Cend%7Bpmatrix%7D,%20%5Cquad%0A%5Cchi_L%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cchi_L%5E+%20%5C%5C%20%5Cchi_L%5E0%20%5Cend%7Bpmatrix%7D,%20%5Cquad%0A%5Cchi_R%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cchi_R%5E+%20%5C%5C%20%5Cchi_R%5E0%20%5Cend%7Bpmatrix%7D%0A"> where <img src="https://latex.codecogs.com/png.latex?%5Ctilde%7B%5CPhi%7D%20=%20%5Csigma_2%20%5CPhi%5E*%20%5Csigma_2%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cphi_2%5E%7B0*%7D%20&amp;%20-%5Cphi_1%5E+%20%5C%5C%20-%5Cphi_2%5E-%20&amp;%20%5Cphi_1%5E%7B0*%7D%20%5Cend%7Bpmatrix%7D">.</p>
<p><strong>(a) The Four Tadpole Conditions.</strong> Minimizing the potential with respect to the non-zero VEVs yields <img src="https://latex.codecogs.com/png.latex?%0A%5Cmu_1%5E2%20=%202%5Clambda_1(k_1%5E2+k_2%5E2)%20+%202%5Clambda_2k_1%5E2%20+%20(8%5Clambda_3+2%5Clambda_5+2%5Clambda_6)k_2%5E2%20+%20(%5Calpha_1+%5Calpha_3)(v_L%5E2+v_R%5E2),%0A"> and the corresponding equations for <img src="https://latex.codecogs.com/png.latex?k_2,%20v_L,%20v_R">.</p>
<p><strong>(b) Charged Scalar Mass Matrix (<img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">).</strong> In the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)">, <img src="https://latex.codecogs.com/png.latex?%0AM%5E2%20=%20%5Cbegin%7Bpmatrix%7D%0A(%5Calpha_2-%5Calpha_3)%20v_R%5E2%20&amp;%200%20&amp;%200%20&amp;%20(%5Calpha_2-%5Calpha_3)%20k_1%20v_R%20%5C%5C%0A0%20&amp;%20(%5Crho_2-2%5Crho_1)%20v_R%5E2%20+%20(%5Calpha_2-%5Calpha_3)%20k_1%5E2%20&amp;%200%20&amp;%200%20%5C%5C%0A0%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%0A(%5Calpha_2-%5Calpha_3)%20k_1%20v_R%20&amp;%200%20&amp;%200%20&amp;%20(%5Calpha_2-%5Calpha_3)%20k_1%5E2%0A%5Cend%7Bpmatrix%7D.%0A"></p>
<p><strong>(c) Physical Charged Higgs Masses.</strong> <img src="https://latex.codecogs.com/png.latex?%0AM_%7BH_1%5E%5Cpm%7D%5E2%20=%20(%5Crho_2-2%5Crho_1)v_R%5E2%20+%20(%5Calpha_2-%5Calpha_3)k_1%5E2,%20%5Cqquad%0AM_%7BH_2%5E%5Cpm%7D%5E2%20=%20(%5Calpha_2-%5Calpha_3)(v_R%5E2+k_1%5E2).%0A"></p>
<p>Gemini identifica <img src="https://latex.codecogs.com/png.latex?%5Cphi_1%5E+"> como el bosón de Goldstone <img src="https://latex.codecogs.com/png.latex?G_L%5E%5Cpm"> y el bloque <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_R%5E+)"> como la mezcla <img src="https://latex.codecogs.com/png.latex?G_R%5E%5Cpm/H_2%5E%5Cpm">.</p>
</blockquote>
</div>
</div>
</div>
<p>La respuesta es <strong>superficialmente correcta</strong>: las masas finales coinciden con las ecuaciones publicadas en <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et&nbsp;al. (2026, Eq. (13))</span>. El problema es que, como lector, no puedo saber si la estructura de la matriz es correcta sin rehacer el cálculo. Los errores que el modelo comete son del tipo más difícil de detectar: no son errores gramaticales ni inconsistencias obvias; son <strong>errores silenciosos</strong> que se esconden en una estructura que parece correcta.</p>
</section>
<section id="camino-b-llm-cas-con-sympy" class="level2">
<h2 class="anchored" data-anchor-id="camino-b-llm-cas-con-sympy">Camino B: LLM + CAS con SymPy</h2>
<p>El mismo problema se le plantea al LLM en un modo diferente: <strong>“no me des la respuesta; escríbeme el código SymPy que la calcula”</strong>. El código se muestra en la celda siguiente (plegado) y se ejecuta como parte del post. La tabla relaciona cada paso teórico de la sección Definiciones con la construcción de SymPy que lo implementa y la comprobación que realiza el CAS:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>Paso teórico</th>
<th>En el código</th>
<th>Qué verifica el CAS</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>0. Codificar el potencial <img src="https://latex.codecogs.com/png.latex?V"></td>
<td>campos como objetos <code>Matrix</code>; <code>trace(...)</code> construye <img src="https://latex.codecogs.com/png.latex?V_%5CPhi+V_%5Cchi+V_%7B%5CPhi%5Cchi%7D"></td>
<td>—</td>
</tr>
<tr class="even">
<td>1. Expansión alrededor del vacío</td>
<td><code>V.subs(VEV_all)</code> fija <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle=%5Cmathrm%7Bdiag%7D(k_1,k_2)">, <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi%5E0_%7BL,R%7D%5Crangle=v_%7BL,R%7D"></td>
<td>—</td>
</tr>
<tr class="odd">
<td>2. Condiciones de tadpole <img src="https://latex.codecogs.com/png.latex?%5Cpartial%20V/%5Cpartial%20v_i=0"></td>
<td><code>sp.diff(V0, k1)</code>, … sobre los cuatro VEVs</td>
<td>coincide con la Eq. (9) de <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et&nbsp;al. (2026)</span></td>
</tr>
<tr class="even">
<td>3. Matriz de masa (Hessiano de Wirtinger)</td>
<td><code>sp.diff(V, c_plus[i], c_minus[j])</code>; <img src="https://latex.codecogs.com/png.latex?%5Cmu_%7B1,2%7D%5E2"> eliminadas con las condiciones de tadpole</td>
<td>estructura de <img src="https://latex.codecogs.com/png.latex?M_+%5E2"> en el límite <img src="https://latex.codecogs.com/png.latex?v_L=k_2=0"></td>
</tr>
<tr class="odd">
<td>4. Goldstones y masas físicas</td>
<td><code>M_charged.charpoly(lam)</code></td>
<td><img src="https://latex.codecogs.com/png.latex?%5Clambda%5E2(%5Clambda-m%5E2_%7BH_L%5E%5Cpm%7D)(%5Clambda-m%5E2_%7BH_R%5E%5Cpm%7D)">: dos modos nulos + Eq. (13)</td>
</tr>
</tbody>
</table>
<p>Dos decisiones de diseño reflejan la teoría directamente. Primera: cada campo complejo y su conjugada se declaran como <strong>símbolos reales independientes</strong> — <code>phi1m</code> y <code>phi1mc</code>, <code>chiL</code> y <code>chiLc</code>, … Esto es exactamente la prescripción de Wirtinger del paso 3: <img src="https://latex.codecogs.com/png.latex?c_i%5E+"> y <img src="https://latex.codecogs.com/png.latex?c_j%5E-"> son variables independientes, de modo que el Hessiano <code>sp.diff(V, c_plus[i], c_minus[j])</code> deriva respecto a un campo y su conjugada como si no estuvieran relacionados. Segunda: la comprobación de Goldstone del paso 4 no le pide a SymPy autovalores — los autovalores simbólicos de una matriz <img src="https://latex.codecogs.com/png.latex?4%5Ctimes4"> pueden ser radicales ingobernables — sino que compara el <strong>polinomio característico</strong> con <img src="https://latex.codecogs.com/png.latex?%5Clambda%5E2(%5Clambda-m%5E2_%7BH_L%5E%5Cpm%7D)(%5Clambda-m%5E2_%7BH_R%5E%5Cpm%7D)">, una identidad polinomial que <code>simplify</code> puede decidir exactamente, convirtiendo “¿hay exactamente dos modos nulos?” en álgebra. Cada <code>assert</code> es una comprobación de este tipo; si falla, la celda lanza una excepción en lugar de producir una respuesta silenciosamente incorrecta.</p>
<div id="66eebb8f" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Mostrar el código SymPy</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> sympy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> sp</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> sympy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> symbols, Matrix, simplify, factor, trace, expand</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> IPython.display <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> display, Math</span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Símbolos ---------------------------------------------------------------</span></span>
<span id="cb1-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Trabajamos con variables reales para cada campo complejo y su conjugada.</span></span>
<span id="cb1-7">phi10, phi10c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi10 phi10c'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_1^0, phi_1^{0*}</span></span>
<span id="cb1-8">phi20, phi20c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi20 phi20c'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_2^0, phi_2^{0*}</span></span>
<span id="cb1-9">phi1m, phi1mc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi1m phi1mc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_1^-, phi_1^+</span></span>
<span id="cb1-10">phi2m, phi2mc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi2m phi2mc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_2^-, phi_2^+</span></span>
<span id="cb1-11">chiL, chiLc     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiL chiLc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_L^+, chi_L^-</span></span>
<span id="cb1-12">chiR, chiRc     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiR chiRc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_R^+, chi_R^-</span></span>
<span id="cb1-13">chiLn, chiLnc  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiLn chiLnc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_L^0, chi_L^{0*}</span></span>
<span id="cb1-14">chiRn, chiRnc  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiRn chiRnc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_R^0, chi_R^{0*}</span></span>
<span id="cb1-15"></span>
<span id="cb1-16">mu1sq, mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{{</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">mu_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{1}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">^2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{{</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">mu_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{2}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">^2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span>, positive<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-17">lam1, lam2, lam3, lam4, lam5, lam6 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'lambda_1 lambda_2 lambda_3 lambda_4 lambda_5 lambda_6'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-18">rho1, rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'rho1 rho2'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-19">alpha1, alpha2, alpha3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'alpha1 alpha2 alpha3'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-20"></span>
<span id="cb1-21">k1, k2, vL, vR <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k_1 k_2 v_L v_R'</span>, positive<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-22"></span>
<span id="cb1-23"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Matrices del bidoblete y dobletes --------------------------------------</span></span>
<span id="cb1-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Phi = [phi_1, i*sigma2*phi_2^*]</span></span>
<span id="cb1-25">Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([</span>
<span id="cb1-26">    [phi10, phi2mc],</span>
<span id="cb1-27">    [phi1m, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20c]</span>
<span id="cb1-28">])</span>
<span id="cb1-29">Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([</span>
<span id="cb1-30">    [phi10c, phi1mc],</span>
<span id="cb1-31">    [phi2m,  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20]</span>
<span id="cb1-32">])</span>
<span id="cb1-33"></span>
<span id="cb1-34">I <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.I</span>
<span id="cb1-35">sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>I], [I, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]])</span>
<span id="cb1-36">Phi_star <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[phi10c, phi2m], [phi1mc, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20]])</span>
<span id="cb1-37">tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_star <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> sigma2</span>
<span id="cb1-38">tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi.T <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> sigma2</span>
<span id="cb1-39"></span>
<span id="cb1-40">chi_L <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiL], [chiLn]])</span>
<span id="cb1-41">chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiLc, chiLnc]])</span>
<span id="cb1-42">chi_R <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiR], [chiRn]])</span>
<span id="cb1-43">chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiRc, chiRnc]])</span>
<span id="cb1-44"></span>
<span id="cb1-45"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Potencial escalar -------------------------------------------------------</span></span>
<span id="cb1-46">V_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-47">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)</span>
<span id="cb1-48">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-49">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)</span>
<span id="cb1-50">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-51">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam4 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-52">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam5 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi)</span>
<span id="cb1-53">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam6 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi)</span>
<span id="cb1-54">                               <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))</span>
<span id="cb1-55">)</span>
<span id="cb1-56"></span>
<span id="cb1-57">V_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-58">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R))</span>
<span id="cb1-59">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-60">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_R_dag.dot(chi_R))</span>
<span id="cb1-61">)</span>
<span id="cb1-62"></span>
<span id="cb1-63">V_Phi_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-64">    alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R))</span>
<span id="cb1-65">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_L <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_R)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-66">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_L</span>
<span id="cb1-67">                <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_R)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-68">)</span>
<span id="cb1-69"></span>
<span id="cb1-70">V <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> expand(V_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> V_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> V_Phi_chi)</span>
<span id="cb1-71"></span>
<span id="cb1-72"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Tadpole: verificación contra la Eq. (9) del artículo -----------------</span></span>
<span id="cb1-73">VEV_all <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-74">    phi10: k1, phi10c: k1, phi20: k2, phi20c: k2,</span>
<span id="cb1-75">    phi1m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi1mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-76">    chiL: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiR: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-77">    chiLn: vL, chiLnc: vL, chiRn: vR, chiRnc: vR</span>
<span id="cb1-78">}</span>
<span id="cb1-79">V0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> V.subs(VEV_all)</span>
<span id="cb1-80"></span>
<span id="cb1-81">lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam2</span>
<span id="cb1-82">lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam5 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam6</span>
<span id="cb1-83">alpha12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha2</span>
<span id="cb1-84">alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha3</span>
<span id="cb1-85"></span>
<span id="cb1-86">paper_tadpoles <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-87">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13),</span>
<span id="cb1-88">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k2'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-89">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vL'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-90">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-91">}</span>
<span id="cb1-92"></span>
<span id="cb1-93">tadpoles <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-94">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>: sp.diff(V0, k1),</span>
<span id="cb1-95">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k2'</span>: sp.diff(V0, k2),</span>
<span id="cb1-96">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vL'</span>: sp.diff(V0, vL),</span>
<span id="cb1-97">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>: sp.diff(V0, vR),</span>
<span id="cb1-98">}</span>
<span id="cb1-99"></span>
<span id="cb1-100"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> tadpoles:</span>
<span id="cb1-101">    diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> simplify(tadpoles[key] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> paper_tadpoles[key])</span>
<span id="cb1-102">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"Tadpole </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>key<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> no coincide con la literatura: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>diff<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span>
<span id="cb1-103"></span>
<span id="cb1-104"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"✓ Condiciones de tadpole: coinciden con la Eq. (9) de Zeleny-Mora et al. (2026)</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-105"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> label, key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"k_1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"k1"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"k_2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"k2"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"v_L"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"vL"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"v_R"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"vR"</span>)]:</span>
<span id="cb1-106">    display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">rf"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\f</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">rac</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">{{</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">partial V</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">}}{{</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">partial </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>label<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">}}</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;"> = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(factor(tadpoles[key]))))</span>
<span id="cb1-107"></span>
<span id="cb1-108"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Solución para mu1^2 y mu2^2 en el límite vL = k2 = 0 ------------------</span></span>
<span id="cb1-109">mu1sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.solve(sp.Eq(tadpoles[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>].subs({k2:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, vL:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>}), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>), mu1sq)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-110">mu2sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.solve(sp.Eq(tadpoles[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>].subs({k2:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, vL:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>}), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>), mu2sq)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-111"></span>
<span id="cb1-112"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(mu1sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-113"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(mu2sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-114"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"✓ Parámetros de masa en el límite $v_L = k_2 = 0$:</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-115">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">\m</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">u_1</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mu1sq_sol)))</span>
<span id="cb1-116">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">\m</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">u_2</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mu2sq_sol)))</span>
<span id="cb1-117"></span>
<span id="cb1-118"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Matriz de masa cargada -------------------------------------------------</span></span>
<span id="cb1-119"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Base c+ = (phi2+, chiL+, phi1+, chiR+)</span></span>
<span id="cb1-120"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Correspondencia: phi2+ = phi2mc, chiL+ = chiL, phi1+ = phi1mc, chiR+ = chiR</span></span>
<span id="cb1-121">c_plus <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [phi2mc, chiL, phi1mc, chiR]</span>
<span id="cb1-122">c_minus <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [phi2m, chiLc, phi1m, chiRc]</span>
<span id="cb1-123"></span>
<span id="cb1-124">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[sp.diff(V, c_plus[i], c_minus[j]) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> j <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)])</span>
<span id="cb1-125"></span>
<span id="cb1-126">VEV_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-127">    phi10: k1, phi10c: k1, phi20: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi20c: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-128">    phi1m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi1mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-129">    chiL: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiR: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-130">    chiLn: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLnc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRn: vR, chiRnc: vR</span>
<span id="cb1-131">}</span>
<span id="cb1-132">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> M_charged.subs(VEV_charged).subs({mu1sq: mu1sq_sol, mu2sq: mu2sq_sol})</span>
<span id="cb1-133">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> simplify(M_charged)</span>
<span id="cb1-134"></span>
<span id="cb1-135"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Matriz de masa cargada (base $c^+ = (</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">phi_2^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">chi_L^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">phi_1^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">chi_R^+)$):"</span>)</span>
<span id="cb1-136">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"M_</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(M_charged)))</span>
<span id="cb1-137"></span>
<span id="cb1-138"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Verificación física: masas y Goldstones ---------------------------------</span></span>
<span id="cb1-139">alpha23 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> alpha3</span>
<span id="cb1-140">rho21 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1</span>
<span id="cb1-141"></span>
<span id="cb1-142"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Masas físicas esperadas de la Eq. (13)</span></span>
<span id="cb1-143">mH1_sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha23 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho21</span>
<span id="cb1-144">mH2_sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha23<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-145"></span>
<span id="cb1-146"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Verificación física: dos Goldstones y dos masas físicas correctas.</span></span>
<span id="cb1-147"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># El polinomio característico debe ser lambda^2 * (lambda - mH1^2) * (lambda - mH2^2).</span></span>
<span id="cb1-148"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Este es un test más robusto que contar autovalores nulos de forma simbólica,</span></span>
<span id="cb1-149"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># porque SymPy puede devolver una expresión complicada que simplifica a cero.</span></span>
<span id="cb1-150">lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'lam'</span>)</span>
<span id="cb1-151">char_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> M_charged.charpoly(lam).as_expr()</span>
<span id="cb1-152">expected_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> mH1_sq) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> mH2_sq)</span>
<span id="cb1-153"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(expand(char_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> expected_poly)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-154"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">✓ Polinomio característico: $</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda^2 (</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda - m^2_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{H_L}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">)(</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda - m^2_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{H_R}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">)$"</span>)</span>
<span id="cb1-155"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"  → dos autovalores nulos (Goldstones) y dos masas físicas</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-156"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Masas físicas cargadas:"</span>)</span>
<span id="cb1-157">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"m</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2_{H_L</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">pm} = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mH1_sq)))</span>
<span id="cb1-158">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"m</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2_{H_R</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">pm} = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mH2_sq)))</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>✓ Condiciones de tadpole: coinciden con la Eq. (9) de Zeleny-Mora et al. (2026)
</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20k_1%7D%20=%202%20k_%7B1%7D%20%5Cleft(%5Calpha_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B2%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%208%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B3%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B5%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B6%7D%20-%20%7B%7B%5Cmu_%7B1%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20k_2%7D%20=%202%20k_%7B2%7D%20%5Cleft(%5Calpha_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%208%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B3%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B5%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B6%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B2%7D%20-%20%7B%7B%5Cmu_%7B1%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_L%7D%20=%202%20v_%7BL%7D%20%5Cleft(%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20-%20%7B%7B%5Cmu_%7B2%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_R%7D%20=%202%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BL%7D%5E%7B2%7D%20-%20%7B%7B%5Cmu_%7B2%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>✓ Parámetros de masa en el límite $v_L = k_2 = 0$:
</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cmu_1%5E2%20=%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B2%7D"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cmu_2%5E2%20=%20%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>
Matriz de masa cargada (base $c^+ = (\phi_2^+, \chi_L^+, \phi_1^+, \chi_R^+)$):</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20M_+%5E2%20=%20%5Cleft%5B%5Cbegin%7Bmatrix%7Dv_%7BR%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20&amp;%200%20&amp;%200%20&amp;%20k_%7B1%7D%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%5C%5C0%20&amp;%20%5Calpha_%7B2%7D%20k_%7B1%7D%5E%7B2%7D%20-%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20-%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20&amp;%200%20&amp;%200%5C%5C0%20&amp;%200%20&amp;%200%20&amp;%200%5C%5Ck_%7B1%7D%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20&amp;%200%20&amp;%200%20&amp;%20k_%7B1%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%5Cend%7Bmatrix%7D%5Cright%5D"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>
✓ Polinomio característico: $\lambda^2 (\lambda - m^2_{H_L})(\lambda - m^2_{H_R})$
  → dos autovalores nulos (Goldstones) y dos masas físicas

Masas físicas cargadas:</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20m%5E2_%7BH_L%5E%5Cpm%7D%20=%20k_%7B1%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20+%20v_%7BR%7D%5E%7B2%7D%20%5Cleft(-%202%20%5Crho_%7B1%7D%20+%20%5Crho_%7B2%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20m%5E2_%7BH_R%5E%5Cpm%7D%20=%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20%5Cleft(k_%7B1%7D%5E%7B2%7D%20+%20v_%7BR%7D%5E%7B2%7D%5Cright)"></p>
</div>
</div>
</section>
<section id="comparación-de-los-dos-caminos" class="level2">
<h2 class="anchored" data-anchor-id="comparación-de-los-dos-caminos">Comparación de los dos caminos</h2>
<p>La diferencia es sutil pero decisiva. El modelo de chat entrega una respuesta que <strong>pasa una revisión rápida</strong>: las masas finales son correctas y la notación es la del artículo. Sin embargo, la respuesta tiene las propiedades que hacen peligrosa a un LLM en física:</p>
<ul>
<li><strong>Es opaca.</strong> No hay un camino reproducible para llegar a ella. Para saber si está bien, el lector debe rehacer todo el álgebra.</li>
<li><strong>Es frágil en la estructura.</strong> Aunque las masas finales coincidan, la asignación de los campos a los estados físicos (Goldstone vs.&nbsp;Higgs) depende de la estructura exacta de la matriz. Sin el CAS, un signo, un intercambio de columnas o un factor de 2 pueden pasar desapercibidos.</li>
<li><strong>No se puede auditar.</strong> No hay un botón “reproducir”.</li>
</ul>
<p>En contraste, el flujo LLM+CAS produce:</p>
<ul>
<li><strong>Transparencia total.</strong> El código es el cálculo; cualquiera puede ejecutarlo.</li>
<li><strong>Verificación automática.</strong> Cada <code>assert</code> es una comprobación que el CAS evalúa simbólicamente. Si el LLM hubiera escrito un código con un signo incorrecto, la celda habría fallado con un mensaje de error, no habría producido una respuesta plausible.</li>
<li><strong>Trazabilidad.</strong> La relación entre el potencial, las condiciones de tadpole, la matriz de masa y las masas físicas es explícita y legible.</li>
</ul>
</section>
<section id="hacia-el-flujo-de-trabajo-del-físico-teórico-en-la-era-de-los-llms" class="level2">
<h2 class="anchored" data-anchor-id="hacia-el-flujo-de-trabajo-del-físico-teórico-en-la-era-de-los-llms">Hacia el flujo de trabajo del físico teórico en la era de los LLMs</h2>
<div id="cell-fig-workflow" class="cell" data-execution_count="2">
<details class="code-fold">
<summary>Mostrar el código de la figura</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb6-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.patches <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> mpatches</span>
<span id="cb6-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> matplotlib.patches <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> FancyBboxPatch, FancyArrowPatch</span>
<span id="cb6-4"></span>
<span id="cb6-5">paper, ink, accent, grey <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#fcfcfa"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#22262b"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3a5a7a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a8f96"</span></span>
<span id="cb6-6">red, green <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#9e4a4a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#2a6f68"</span></span>
<span id="cb6-7"></span>
<span id="cb6-8">plt.rcParams.update({</span>
<span id="cb6-9">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.family"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serif"</span>,</span>
<span id="cb6-10">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.size"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,</span>
<span id="cb6-11">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.edgecolor"</span>: ink,</span>
<span id="cb6-12">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.linewidth"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>,</span>
<span id="cb6-13">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure.facecolor"</span>: paper,</span>
<span id="cb6-14">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.facecolor"</span>: paper,</span>
<span id="cb6-15">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"savefig.facecolor"</span>: paper,</span>
<span id="cb6-16">})</span>
<span id="cb6-17"></span>
<span id="cb6-18">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>))</span>
<span id="cb6-19">ax.set_xlim(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb6-20">ax.set_ylim(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb6-21">ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb6-22"></span>
<span id="cb6-23"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> box(x, y, w, h, text, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, text_color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>paper):</span>
<span id="cb6-24">    rect <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> FancyBboxPatch((x, y), w, h, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.05,rounding_size=0.2"</span>,</span>
<span id="cb6-25">                          facecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>color, edgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, linewidth<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>)</span>
<span id="cb6-26">    ax.add_patch(rect)</span>
<span id="cb6-27">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> w<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> h<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, text, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>text_color,</span>
<span id="cb6-28">            fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, wrap<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb6-29"></span>
<span id="cb6-30"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> arrow(x1, y1, x2, y2, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-&gt;"</span>):</span>
<span id="cb6-31">    ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>, xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(x2, y2), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(x1, y1),</span>
<span id="cb6-32">                arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>style, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>color, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb6-33"></span>
<span id="cb6-34"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Camino A: respuesta directa ---------------------------------------------</span></span>
<span id="cb6-35">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.3</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"A. Respuesta directa del chat"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink)</span>
<span id="cb6-36">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Pregunta</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(DLRSM)"</span>, accent)</span>
<span id="cb6-37">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLM"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>)</span>
<span id="cb6-38">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Respuesta</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(derivación)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>)</span>
<span id="cb6-39">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"¿?"</span>, red)</span>
<span id="cb6-40">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-41">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-42">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-43">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.8</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Verificación manual, opaca, propensa a errores silenciosos"</span>,</span>
<span id="cb6-44">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>red, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb6-45"></span>
<span id="cb6-46"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Camino B: LLM + CAS -----------------------------------------------------</span></span>
<span id="cb6-47">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.9</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"B. Flujo LLM + CAS"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink)</span>
<span id="cb6-48">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Pregunta</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(DLRSM)"</span>, accent)</span>
<span id="cb6-49">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLM →</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">SymPy"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>)</span>
<span id="cb6-50">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SymPy</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(ejecuta)"</span>, green)</span>
<span id="cb6-51">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"asserts</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">OK/FAIL"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>)</span>
<span id="cb6-52">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Físico revisa</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">y aprueba"</span>, accent)</span>
<span id="cb6-53"></span>
<span id="cb6-54">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-55">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-56">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-57"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Feedback loop</span></span>
<span id="cb6-58">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.8</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey)</span>
<span id="cb6-59">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.3</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"&lt;-"</span>)</span>
<span id="cb6-60">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.1</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Verificación simbólica automática, reproducible, auditable"</span>,</span>
<span id="cb6-61">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>green, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb6-62"></span>
<span id="cb6-63">plt.tight_layout()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-workflow" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-workflow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://moiseszeleny.github.io/posts/llm-cas-flujo-de-trabajo/index_files/figure-html/fig-workflow-output-1.png" width="682" height="490" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-workflow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figura&nbsp;1: Flujo de trabajo comparado. Arriba: respuesta directa de un chat — el físico debe verificar a mano, y los errores son silenciosos. Abajo: LLM genera código SymPy, el CAS ejecuta <code>asserts</code> simbólicos, y el físico revisa y aprueba el resultado.
</figcaption>
</figure>
</div>
</div>
</div>
<p>El caso del DLRSM es un ejemplo limpio del patrón más general. El CAS no reemplaza al físico; define una <strong>división de responsabilidades</strong>:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>Tarea</th>
<th>LLM</th>
<th>CAS</th>
<th>Físico</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Traducir la pregunta física a un script</td>
<td>Sí</td>
<td>No</td>
<td>Supervisa</td>
</tr>
<tr class="even">
<td>Ejecutar álgebra simbólica exacta</td>
<td>No</td>
<td>Sí</td>
<td>Diseña el arnés de verificación</td>
</tr>
<tr class="odd">
<td>Decidir qué verificar y qué significa físicamente</td>
<td>No</td>
<td>No</td>
<td>Sí</td>
</tr>
<tr class="even">
<td>Detectar errores de convención, signos o factores</td>
<td>Parcial</td>
<td>Sí</td>
<td>Sí</td>
</tr>
<tr class="odd">
<td>Producir una derivación reproducible</td>
<td>Solo como código</td>
<td>Sí</td>
<td>Sí</td>
</tr>
</tbody>
</table>
<p>Este patrón escala de varias formas. Hoy SymPy cubre el álgebra polinomial del sector escalar; para cálculos de un lazo con funciones de Passarino–Veltman, el mismo flujo apunta a herramientas como FeynCalc, Package-X o LoopTools, con el LLM como <strong>orquestador</strong> entre ellas. Ahí es donde entran trabajos como <span class="citation" data-cites="Hell:2026">Hell y Thiele (2026)</span>, que exploran exactamente esa frontera: no un LLM que resuelva el problema, sino un LLM que escribe el código que el CAS ejecuta y que el físico verifica.</p>
<p>El cambio más profundo es cultural. En el futuro próximo, un estudiante de doctorado en física teórica probablemente dedique menos tiempo a reescribir a mano productos de matrices y más tiempo a:</p>
<ol type="1">
<li>Formular el <strong>modelo</strong> y el <strong>protocolo de verificación</strong>.</li>
<li>Pedirle a un LLM que genere el código CAS.</li>
<li>Ejecutar el código, revisar los <code>assert</code> y analizar los casos límite.</li>
<li>Decidir si el resultado tiene sentido físico.</li>
</ol>
<p>La derivación no desaparece; se convierte en código. Y el código, a diferencia de una respuesta de chat, puede ser <strong>ejecutado, auditado y corregido</strong>.</p>
</section>
<section id="límites-honestos" class="level2">
<h2 class="anchored" data-anchor-id="límites-honestos">Límites honestos</h2>
<p>El flujo no es infalible. El CAS solo verifica lo que le pedimos verificar. Si el LLM escribe un código que <strong>tipea correctamente pero codifica la física equivocada</strong> —por ejemplo, usando el invariante incorrecto en el potencial— el <code>assert</code> pasará y el resultado físico será malo. El CAS no sustituye el juicio físico; lo formaliza.</p>
<p>También hay limitaciones prácticas:</p>
<ul>
<li><strong>Contexto y longitud:</strong> para potenciales con decenas de parámetros, el prompt puede volverse engorroso.</li>
<li><strong>Rendimiento de SymPy:</strong> integrales de lazo reales o matrices muy grandes escapan fácilmente de lo que SymPy puede hacer en tiempo razonable.</li>
<li><strong>Convenciones:</strong> el LLM puede mezclar convenciones de signo para <img src="https://latex.codecogs.com/png.latex?%5Ctilde%5CPhi">, <img src="https://latex.codecogs.com/png.latex?%5Ctau"> o cargas. El arnés de verificación debe incluir al menos una comprobación de invariancia gauge o de un límite conocido.</li>
</ul>
<p>El punto no es que el LLM+CAS lo haga todo. El punto es que <strong>convierte la incertidumbre del modelo en una excepción del CAS</strong>, que es mucho más fácil de diagnosticar que una respuesta plausiblemente incorrecta.</p>
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Nota</span>Nota de reproducibilidad
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<p>Este post contiene una celda <code>{python}</code> ejecutada localmente con SymPy <span class="citation" data-cites="Meurer:2017">Meurer et&nbsp;al. (2017)</span>. Los resultados congelados (“freeze”) se guardan en <code>_freeze/posts/llm-cas-flujo-de-trabajo/</code> y se suben junto con el <code>.qmd</code>. El runner de CI solo tiene Quarto, sin Python, por lo que cualquier cambio en la celda debe re-renderizarse localmente. El prompt completo a Gemini 3.1 Pro está en el Apéndice; la respuesta transcrita se usó tal cual el 2026-08-02. No se incluyen resultados numéricos de proyectos en curso: el ejemplo usa únicamente las ecuaciones simbólicas publicadas en <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et&nbsp;al. (2026)</span>.</p>
</div>
</div>
</div>
</section>
<section id="apéndice-prompt-completo-a-gemini-3.1-pro" class="level2">
<h2 class="anchored" data-anchor-id="apéndice-prompt-completo-a-gemini-3.1-pro">Apéndice: prompt completo a Gemini 3.1 Pro</h2>
<p>El prompt se envió el 2026-08-02 al modelo Gemini 3.1 Pro. El texto de la respuesta se abrevió en el cuerpo del post; aquí se reproduce el prompt completo para que cualquiera pueda repetirlo:</p>
<blockquote class="blockquote">
<p>Consider the Doublet Left-Right Symmetric Model (DLRSM) with a bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi%20=%20%5B%5Cphi_1,%20i%5Csigma_2%5Cphi_2%5E*%5D"> where <img src="https://latex.codecogs.com/png.latex?%5Cphi_i%20=%20(%5Cphi_i%5E0,%20%5Cphi_i%5E-)%5ET">, and <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2)">. The model also contains two doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_L%20=%20(%5Cchi_L%5E+,%20%5Cchi_L%5E0)%5ET"> and <img src="https://latex.codecogs.com/png.latex?%5Cchi_R%20=%20(%5Cchi_R%5E+,%20%5Cchi_R%5E0)%5ET"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_L%5E0%5Crangle%20=%20v_L"> and <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_R%5E0%5Crangle%20=%20v_R">. The scalar potential is <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> where <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%5CPhi%20=&amp;%20-%5Cmu_1%5E2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%0A+%20%5Clambda_1%20%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Clambda_2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5CPhi%20%5C%5C&amp;%0A+%20%5Cfrac%7B%5Clambda_3%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Cfrac%7B%5Clambda_4%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20-%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%20%5C%5C&amp;%0A+%20%5Clambda_5%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%0A+%20%5Cfrac%7B%5Clambda_6%7D%7B2%7D%5Cleft%5B%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7Bh.c.%7D%5Cright%5D,%0A%5Cend%7Baligned%7D%0A"> <img src="https://latex.codecogs.com/png.latex?%0AV_%5Cchi%20=%20-%5Cmu_2%5E2%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%0A+%20%5Crho_1%5Cleft%5B%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%5Cright)%5E2%20+%20%5Cleft(%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%5E2%5Cright%5D%0A+%20%5Crho_2%5C,%5Cchi_L%5E%5Cdagger%5Cchi_L%5C,%5Cchi_R%5E%5Cdagger%5Cchi_R,%0A"> <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%7B%5CPhi%5Cchi%7D%20=&amp;%20%5C;%5Calpha_1%5C,%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_2%5Cleft(%5Cchi_L%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5CPhi%5E%5Cdagger%5CPhi%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_3%5Cleft(%5Cchi_L%5E%5Cdagger%5Ctilde%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5Cchi_R%5Cright).%0A%5Cend%7Baligned%7D%0A"> Derive: (a) the four tadpole conditions; (b) the charged scalar mass matrix in the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)"> in the limit <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">; (c) the physical charged Higgs masses.</p>
</blockquote>



</section>

<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">Referencias</h2><div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-Hell:2026" class="csl-entry">
Hell, Anamaria, y Leander Thiele. 2026. <span>«<span>LLMs</span> with in-context learning for Algorithmic Theoretical Physics»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2605.08212">https://arxiv.org/abs/2605.08212</a>.
</div>
<div id="ref-Meurer:2017" class="csl-entry">
Meurer, Aaron, Christopher P. Smith, Mateusz Paprocki, et&nbsp;al. 2017. <span>«<span>SymPy</span>: symbolic computing in <span>Python</span>»</span>. <em>PeerJ Computer Science</em> 3: e103. <a href="https://doi.org/10.7717/peerj-cs.103">https://doi.org/10.7717/peerj-cs.103</a>.
</div>
<div id="ref-Senjanovic:1979" class="csl-entry">
Senjanović, G. 1979. <span>«Spontaneous breakdown of parity in a class of gauge theories»</span>. <em>Nucl. Phys. B</em> 153: 334-64. <a href="https://doi.org/10.1016/0550-3213(79)90604-7">https://doi.org/10.1016/0550-3213(79)90604-7</a>.
</div>
<div id="ref-ZelenyMora:2026" class="csl-entry">
Zeleny-Mora, M., R. Gaitán-Lozano, y R. Martinez. 2026. <span>«Lepton flavor violating Higgs decays in a minimal doublet left-right symmetric model with an inverse seesaw»</span>. <em>Eur. Phys. J. C</em> 86: 441. <a href="https://doi.org/10.1140/epjc/s10052-026-15669-1">https://doi.org/10.1140/epjc/s10052-026-15669-1</a>.
</div>
</div></section></div> ]]></description>
  <category>Español</category>
  <category>flujo-de-trabajo</category>
  <category>llms</category>
  <category>cas</category>
  <category>sympy</category>
  <guid>https://moiseszeleny.github.io/posts/llm-cas-flujo-de-trabajo/</guid>
  <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Beyond the direct answer: an LLM + CAS workflow for theoretical physics</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/llm-cas-workflow/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Versión en español disponible.</strong> Este artículo también está disponible <a href="../../posts/llm-cas-flujo-de-trabajo/">en español</a>.</p>
</div>
</div>
</div>
<div class="post-abstract">
<p><span class="abstract-label">Abstract</span></p>
<p>This post tests a concrete workflow for doing theoretical-physics algebra with a large language model (LLM) without trusting its output blindly: ask the LLM to write SymPy code, then let the computer algebra system check every identity. The test case is the scalar-potential minimization of the Doublet Left-Right Symmetric Model (DLRSM). I compare the direct answer from a chat prompt (Gemini 3.1 Pro, 2026-08-02) against the LLM+CAS pipeline, and show that the latter produces a reproducible, assertion-checked derivation whose physical masses match the published results.</p>
</div>
<section id="motivation" class="level2">
<h2 class="anchored" data-anchor-id="motivation">Motivation</h2>
<p>In the previous post of this log <a href="../../posts/why-this-log-exists/">why-this-log-exists</a> I warned that large language models (LLMs) are particularly dangerous when they produce a derivation that <strong>looks correct</strong> but is wrong by a factor of <img src="https://latex.codecogs.com/png.latex?1/(4%5Cpi)%5E2">, a sign, or a convention. The only defense I know is to do the calculation yourself and treat the model’s output as a hypothesis to be tested.</p>
<p>The problem is that, for many theoretical-physics problems, “verifying” by hand takes as much time as doing the original calculation. The traditional workflow is, in practice, <strong>oracular</strong>: you ask the model, it gives an answer, and then you either trust it or redo it. What I propose here is a <strong>constructive</strong> workflow:</p>
<ol type="1">
<li>Do not ask the LLM for the final answer.</li>
<li>Ask it to write the code (SymPy) that produces the answer.</li>
<li>Run that code in a computer algebra system (CAS).</li>
<li>Explicitly verify the identities the CAS can check: tadpole conditions, Goldstone eigenvalues, physical masses, agreement with published equations.</li>
</ol>
<p>The CAS does not remove the physicist’s responsibility; it shifts it: from “do the calculation by hand” to “write a verification harness that the CAS evaluates symbolically”. This is the same spirit as recent work such as <span class="citation" data-cites="Hell:2026">Hell and Thiele (2026)</span>, where LLMs are used as translators of intent into symbolic code, not as oracles.</p>
</section>
<section id="the-test-case-scalar-potential-minimization-in-the-dlrsm" class="level2">
<h2 class="anchored" data-anchor-id="the-test-case-scalar-potential-minimization-in-the-dlrsm">The test case: scalar-potential minimization in the DLRSM</h2>
<p>The model is the Doublet Left-Right Symmetric Model (DLRSM), described in <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et al. (2026)</span>. The scalar sector contains a bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi"> and two doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_L,%20%5Cchi_R"> with VEVs</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2),%20%5Cqquad%0A%5Clangle%5Cchi_L%5Crangle%20=%20%5Cbegin%7Bpmatrix%7D0%5C%5C%20v_L%5Cend%7Bpmatrix%7D,%20%5Cqquad%0A%5Clangle%5Cchi_R%5Crangle%20=%20%5Cbegin%7Bpmatrix%7D0%5C%5C%20v_R%5Cend%7Bpmatrix%7D.%0A"></p>
<p>The scalar potential, taken from <span class="citation" data-cites="Senjanovic:1979">Senjanović (1979)</span> and used in <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et al. (2026)</span>, is <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> with</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%5CPhi%20=&amp;%20-%5Cmu_1%5E2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%0A+%20%5Clambda_1%20%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Clambda_2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5CPhi%20%5C%5C&amp;%0A+%20%5Cfrac%7B%5Clambda_3%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Cfrac%7B%5Clambda_4%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20-%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%20%5C%5C&amp;%0A+%20%5Clambda_5%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%0A+%20%5Cfrac%7B%5Clambda_6%7D%7B2%7D%5Cleft%5B%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7Bh.c.%7D%5Cright%5D,%0A%5Cend%7Baligned%7D%0A"></p>
<p><img src="https://latex.codecogs.com/png.latex?%0AV_%5Cchi%20=%20-%5Cmu_2%5E2%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%0A+%20%5Crho_1%5Cleft%5B%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%5Cright)%5E2%20+%20%5Cleft(%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%5E2%5Cright%5D%0A+%20%5Crho_2%5C,%5Cchi_L%5E%5Cdagger%5Cchi_L%5C,%5Cchi_R%5E%5Cdagger%5Cchi_R,%0A"></p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%7B%5CPhi%5Cchi%7D%20=&amp;%20%5C;%5Calpha_1%5C,%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_2%5Cleft(%5Cchi_L%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5CPhi%5E%5Cdagger%5CPhi%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_3%5Cleft(%5Cchi_L%5E%5Cdagger%5Ctilde%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5Cchi_R%5Cright).%0A%5Cend%7Baligned%7D%0A"></p>
</section>
<section id="definitions-from-the-potential-to-the-masses" class="level2">
<h2 class="anchored" data-anchor-id="definitions-from-the-potential-to-the-masses">Definitions: from the potential to the masses</h2>
<p>The computation of the scalar masses from <img src="https://latex.codecogs.com/png.latex?V"> follows a standard four-step chain, which the CAS will verify at every link.</p>
<ol type="1">
<li><p><strong>Expansion around the vacuum.</strong> Each scalar is written as its VEV plus a fluctuation, for example <img src="https://latex.codecogs.com/png.latex?%0A%5Cphi_i%5E0(x)%20=%20%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7D%5Cbig(v_i%20+%20%5Ceta_i(x)%20+%20i%5C,%5Cxi_i(x)%5Cbig).%0A"> The potential is then expanded to quadratic order in the fluctuations; the bilinear part defines the mass spectrum.</p></li>
<li><p><strong>Tadpole conditions (stationarity).</strong> The VEVs <img src="https://latex.codecogs.com/png.latex?%5C%7Bk_1,%20k_2,%20v_L,%20v_R%5C%7D"> are fixed by requiring the vacuum to be an extremum: <img src="https://latex.codecogs.com/png.latex?%0A%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_i%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D%20=%200,%20%5Cqquad%20v_i%20%5Cin%20%5C%7Bk_1,%20k_2,%20v_L,%20v_R%5C%7D.%0A"> When these are satisfied, the linear terms in the expansion of <img src="https://latex.codecogs.com/png.latex?V"> — the <em>tadpoles</em> — vanish identically.</p></li>
<li><p><strong>Mass matrix (Hessian of the potential).</strong> The squared-mass matrix is the Hessian of <img src="https://latex.codecogs.com/png.latex?V"> evaluated at the vacuum. For the <strong>neutral</strong> scalars (real components <img src="https://latex.codecogs.com/png.latex?%5Cvarphi_i%20=%20%5C%7B%5Ceta_i,%20%5Cxi_i%5C%7D">), <img src="https://latex.codecogs.com/png.latex?%0A%5Cbig(M%5E2%5Cbig)_%7Bij%7D%20=%20%5Cfrac%7B%5Cpartial%5E2%20V%7D%7B%5Cpartial%20%5Cvarphi_i%5C,%5Cpartial%20%5Cvarphi_j%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D.%0A"> For the <strong>charged</strong> sector the fields are complex, and the Wirtinger convention is used: <img src="https://latex.codecogs.com/png.latex?%0A%5Cbig(M_+%5E2%5Cbig)_%7Bij%7D%20=%20%5Cfrac%7B%5Cpartial%5E2%20V%7D%7B%5Cpartial%20c_i%5E%7B+%7D%5C,%5Cpartial%20c_j%5E%7B-%7D%7D%5Cbigg%7C_%7B%5Cmathrm%7BVEV%7D%7D,%20%5Cqquad%20c%5E%7B%5Cpm%7D%20=%20(%5Cphi_2%5E%7B%5Cpm%7D,%20%5Cchi_L%5E%7B%5Cpm%7D,%20%5Cphi_1%5E%7B%5Cpm%7D,%20%5Cchi_R%5E%7B%5Cpm%7D),%0A"> where <img src="https://latex.codecogs.com/png.latex?c_i%5E+"> and <img src="https://latex.codecogs.com/png.latex?c_j%5E-"> are treated as independent variables. The tadpole conditions are substituted into <img src="https://latex.codecogs.com/png.latex?M%5E2"> to eliminate the bare mass parameters <img src="https://latex.codecogs.com/png.latex?%5Cmu_%7B1,2%7D%5E2">.</p></li>
<li><p><strong>Goldstone bosons and physical masses.</strong> By Goldstone’s theorem, each spontaneously broken gauge generator produces a massless mode that becomes the longitudinal polarization of a massive gauge boson. In the charged sector of the DLRSM, the breaking of <img src="https://latex.codecogs.com/png.latex?SU(2)_L%20%5Ctimes%20SU(2)_R"> down to <img src="https://latex.codecogs.com/png.latex?U(1)_%7B%5Cmathrm%7Bem%7D%7D"> leaves <strong>two</strong> charged Goldstones <img src="https://latex.codecogs.com/png.latex?G_L%5E%5Cpm,%20G_R%5E%5Cpm"> — eaten by <img src="https://latex.codecogs.com/png.latex?W_L%5E%5Cpm"> and <img src="https://latex.codecogs.com/png.latex?W_R%5E%5Cpm"> — so <img src="https://latex.codecogs.com/png.latex?M_+%5E2"> must have exactly two zero eigenvalues. The remaining non-zero eigenvalues are the squared masses of the physical charged Higgs bosons <img src="https://latex.codecogs.com/png.latex?H_%7BL,R%7D%5E%5Cpm">.</p></li>
</ol>
<p>The concrete problem I will pose to the LLM is: <strong>derive the four tadpole conditions, the charged-scalar mass matrix in the limit <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">, and the physical charged Higgs masses</strong>.</p>
</section>
<section id="arm-a-direct-answer-from-a-chat" class="level2">
<h2 class="anchored" data-anchor-id="arm-a-direct-answer-from-a-chat">Arm A: direct answer from a chat</h2>
<p>I used the model <strong>Gemini 3.1 Pro</strong> on 2026-08-02 with the following prompt (also in the post’s Appendix):</p>
<blockquote class="blockquote">
<p>Consider the Doublet Left-Right Symmetric Model with a bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi%20=%20%5B%5Cphi_1,%20i%5Csigma_2%5Cphi_2%5E*%5D"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2)"> and doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_%7BL,R%7D"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_%7BL,R%7D%5E0%5Crangle%20=%20v_%7BL,R%7D">. The scalar potential is <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> where [full potential]. Derive: (a) the four tadpole conditions; (b) the charged scalar mass matrix in the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)"> in the limit <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">; (c) the physical charged Higgs masses.</p>
</blockquote>
<p>The answer is impressive at first sight: correct structure, plausible parameter combinations, and final physical masses that match the literature. I transcribe the main results here (abbreviated; the full text is in the folded block):</p>
<div class="callout callout-style-simple callout-tip no-icon callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-1-contents" aria-controls="callout-1" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Tip</span>Full response from Gemini 3.1 Pro (2026-08-02)
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-1" class="callout-1-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<blockquote class="blockquote">
<p>To derive the properties of the scalar sector in this Left-Right Symmetric Model (LRSM), we evaluate the scalar potential <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> using the standard field expansions around the vacuum expectation values (VEVs).</p>
<p>The bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi"> and the left/right doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_%7BL,R%7D"> are given by: <img src="https://latex.codecogs.com/png.latex?%0A%5CPhi%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cphi_1%5E0%20&amp;%20%5Cphi_2%5E+%20%5C%5C%20%5Cphi_1%5E-%20&amp;%20%5Cphi_2%5E0%20%5Cend%7Bpmatrix%7D,%20%5Cquad%0A%5Cchi_L%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cchi_L%5E+%20%5C%5C%20%5Cchi_L%5E0%20%5Cend%7Bpmatrix%7D,%20%5Cquad%0A%5Cchi_R%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cchi_R%5E+%20%5C%5C%20%5Cchi_R%5E0%20%5Cend%7Bpmatrix%7D%0A"> where <img src="https://latex.codecogs.com/png.latex?%5Ctilde%7B%5CPhi%7D%20=%20%5Csigma_2%20%5CPhi%5E*%20%5Csigma_2%20=%20%5Cbegin%7Bpmatrix%7D%20%5Cphi_2%5E%7B0*%7D%20&amp;%20-%5Cphi_1%5E+%20%5C%5C%20-%5Cphi_2%5E-%20&amp;%20%5Cphi_1%5E%7B0*%7D%20%5Cend%7Bpmatrix%7D">.</p>
<p><strong>(a) The Four Tadpole Conditions.</strong> Minimizing the potential with respect to the non-zero VEVs yields <img src="https://latex.codecogs.com/png.latex?%0A%5Cmu_1%5E2%20=%202%5Clambda_1(k_1%5E2+k_2%5E2)%20+%202%5Clambda_2k_1%5E2%20+%20(8%5Clambda_3+2%5Clambda_5+2%5Clambda_6)k_2%5E2%20+%20(%5Calpha_1+%5Calpha_3)(v_L%5E2+v_R%5E2),%0A"> and the corresponding equations for <img src="https://latex.codecogs.com/png.latex?k_2,%20v_L,%20v_R">.</p>
<p><strong>(b) Charged Scalar Mass Matrix (<img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">).</strong> In the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)">, <img src="https://latex.codecogs.com/png.latex?%0AM%5E2%20=%20%5Cbegin%7Bpmatrix%7D%0A(%5Calpha_2-%5Calpha_3)%20v_R%5E2%20&amp;%200%20&amp;%200%20&amp;%20(%5Calpha_2-%5Calpha_3)%20k_1%20v_R%20%5C%5C%0A0%20&amp;%20(%5Crho_2-2%5Crho_1)%20v_R%5E2%20+%20(%5Calpha_2-%5Calpha_3)%20k_1%5E2%20&amp;%200%20&amp;%200%20%5C%5C%0A0%20&amp;%200%20&amp;%200%20&amp;%200%20%5C%5C%0A(%5Calpha_2-%5Calpha_3)%20k_1%20v_R%20&amp;%200%20&amp;%200%20&amp;%20(%5Calpha_2-%5Calpha_3)%20k_1%5E2%0A%5Cend%7Bpmatrix%7D.%0A"></p>
<p><strong>(c) Physical Charged Higgs Masses.</strong> <img src="https://latex.codecogs.com/png.latex?%0AM_%7BH_1%5E%5Cpm%7D%5E2%20=%20(%5Crho_2-2%5Crho_1)v_R%5E2%20+%20(%5Calpha_2-%5Calpha_3)k_1%5E2,%20%5Cqquad%0AM_%7BH_2%5E%5Cpm%7D%5E2%20=%20(%5Calpha_2-%5Calpha_3)(v_R%5E2+k_1%5E2).%0A"></p>
<p>Gemini identifies <img src="https://latex.codecogs.com/png.latex?%5Cphi_1%5E+"> as the Goldstone boson <img src="https://latex.codecogs.com/png.latex?G_L%5E%5Cpm"> and the <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_R%5E+)"> block as the <img src="https://latex.codecogs.com/png.latex?G_R%5E%5Cpm/H_2%5E%5Cpm"> mixing.</p>
</blockquote>
</div>
</div>
</div>
<p>The answer is <strong>superficially correct</strong>: the final masses agree with the published equations in <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et al. (2026, Eq. (13))</span>. The problem is that, as a reader, I cannot tell whether the matrix structure is correct without redoing the algebra. The model’s errors are of the hardest kind to detect: not grammatical mistakes or obvious inconsistencies, but <strong>silent errors</strong> hidden inside a structure that looks right.</p>
</section>
<section id="arm-b-llm-cas-with-sympy" class="level2">
<h2 class="anchored" data-anchor-id="arm-b-llm-cas-with-sympy">Arm B: LLM + CAS with SymPy</h2>
<p>The same problem is posed to the LLM in a different mode: <strong>“do not give me the answer; write me the SymPy code that computes it”</strong>. The code is shown in the following cell (folded) and is executed as part of the post. The table maps each theoretical step of the Definitions section to the SymPy idiom that implements it and the check the CAS performs:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>Theory step</th>
<th>In the code</th>
<th>What the CAS verifies</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>0. Encode the potential <img src="https://latex.codecogs.com/png.latex?V"></td>
<td>fields as <code>Matrix</code> objects; <code>trace(...)</code> builds <img src="https://latex.codecogs.com/png.latex?V_%5CPhi+V_%5Cchi+V_%7B%5CPhi%5Cchi%7D"></td>
<td>—</td>
</tr>
<tr class="even">
<td>1. Expansion around the vacuum</td>
<td><code>V.subs(VEV_all)</code> sets <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle=%5Cmathrm%7Bdiag%7D(k_1,k_2)">, <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi%5E0_%7BL,R%7D%5Crangle=v_%7BL,R%7D"></td>
<td>—</td>
</tr>
<tr class="odd">
<td>2. Tadpole conditions <img src="https://latex.codecogs.com/png.latex?%5Cpartial%20V/%5Cpartial%20v_i=0"></td>
<td><code>sp.diff(V0, k1)</code>, … over the four VEVs</td>
<td>matches Eq. (9) of <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et al. (2026)</span></td>
</tr>
<tr class="even">
<td>3. Mass matrix (Wirtinger Hessian)</td>
<td><code>sp.diff(V, c_plus[i], c_minus[j])</code>; <img src="https://latex.codecogs.com/png.latex?%5Cmu_%7B1,2%7D%5E2"> eliminated via the tadpoles</td>
<td>structure of <img src="https://latex.codecogs.com/png.latex?M_+%5E2"> in the <img src="https://latex.codecogs.com/png.latex?v_L=k_2=0"> limit</td>
</tr>
<tr class="odd">
<td>4. Goldstones and physical masses</td>
<td><code>M_charged.charpoly(lam)</code></td>
<td><img src="https://latex.codecogs.com/png.latex?%5Clambda%5E2(%5Clambda-m%5E2_%7BH_L%5E%5Cpm%7D)(%5Clambda-m%5E2_%7BH_R%5E%5Cpm%7D)">: two zero modes + Eq. (13)</td>
</tr>
</tbody>
</table>
<p>Two design choices mirror the theory directly. First, each complex field and its conjugate are declared as <strong>separate real symbols</strong> — <code>phi1m</code> and <code>phi1mc</code>, <code>chiL</code> and <code>chiLc</code>, … This is precisely the Wirtinger prescription of step 3: <img src="https://latex.codecogs.com/png.latex?c_i%5E+"> and <img src="https://latex.codecogs.com/png.latex?c_j%5E-"> are independent variables, so the Hessian <code>sp.diff(V, c_plus[i], c_minus[j])</code> differentiates with respect to a field and its conjugate as if unrelated. Second, the step-4 Goldstone check does not ask SymPy for eigenvalues — symbolic eigenvalues of a <img src="https://latex.codecogs.com/png.latex?4%5Ctimes4"> matrix can be unruly radicals — but compares the <strong>characteristic polynomial</strong> against <img src="https://latex.codecogs.com/png.latex?%5Clambda%5E2(%5Clambda-m%5E2_%7BH_L%5E%5Cpm%7D)(%5Clambda-m%5E2_%7BH_R%5E%5Cpm%7D)">, a polynomial identity that <code>simplify</code> can decide exactly, turning “are there exactly two zero modes?” into algebra. Every <code>assert</code> is such a check; if one fails, the cell throws an exception instead of producing a silently wrong answer.</p>
<div id="a3d84937" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Show the SymPy code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> sympy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> sp</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> sympy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> symbols, Matrix, simplify, factor, trace, expand</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> IPython.display <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> display, Math</span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Symbols ----------------------------------------------------------------</span></span>
<span id="cb1-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># We use real variables for each complex field and its conjugate.</span></span>
<span id="cb1-7">phi10, phi10c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi10 phi10c'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_1^0, phi_1^{0*}</span></span>
<span id="cb1-8">phi20, phi20c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi20 phi20c'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_2^0, phi_2^{0*}</span></span>
<span id="cb1-9">phi1m, phi1mc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi1m phi1mc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_1^-, phi_1^+</span></span>
<span id="cb1-10">phi2m, phi2mc <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'phi2m phi2mc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># phi_2^-, phi_2^+</span></span>
<span id="cb1-11">chiL, chiLc     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiL chiLc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_L^+, chi_L^-</span></span>
<span id="cb1-12">chiR, chiRc     <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiR chiRc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_R^+, chi_R^-</span></span>
<span id="cb1-13">chiLn, chiLnc  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiLn chiLnc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_L^0, chi_L^{0*}</span></span>
<span id="cb1-14">chiRn, chiRnc  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'chiRn chiRnc'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>) <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># chi_R^0, chi_R^{0*}</span></span>
<span id="cb1-15"></span>
<span id="cb1-16">mu1sq, mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{{</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">mu_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{1}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">^2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{{</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">mu_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{2}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">^2</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'</span>, positive<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-17">lam1, lam2, lam3, lam4, lam5, lam6 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'lambda_1 lambda_2 lambda_3 lambda_4 lambda_5 lambda_6'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-18">rho1, rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'rho1 rho2'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-19">alpha1, alpha2, alpha3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'alpha1 alpha2 alpha3'</span>, real<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-20"></span>
<span id="cb1-21">k1, k2, vL, vR <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k_1 k_2 v_L v_R'</span>, positive<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb1-22"></span>
<span id="cb1-23"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Bidoublet and doublet matrices -----------------------------------------</span></span>
<span id="cb1-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Phi = [phi_1, i*sigma2*phi_2^*]</span></span>
<span id="cb1-25">Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([</span>
<span id="cb1-26">    [phi10, phi2mc],</span>
<span id="cb1-27">    [phi1m, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20c]</span>
<span id="cb1-28">])</span>
<span id="cb1-29">Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([</span>
<span id="cb1-30">    [phi10c, phi1mc],</span>
<span id="cb1-31">    [phi2m,  <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20]</span>
<span id="cb1-32">])</span>
<span id="cb1-33"></span>
<span id="cb1-34">I <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.I</span>
<span id="cb1-35">sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>I], [I, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]])</span>
<span id="cb1-36">Phi_star <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[phi10c, phi2m], [phi1mc, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>phi20]])</span>
<span id="cb1-37">tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_star <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> sigma2</span>
<span id="cb1-38">tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sigma2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi.T <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> sigma2</span>
<span id="cb1-39"></span>
<span id="cb1-40">chi_L <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiL], [chiLn]])</span>
<span id="cb1-41">chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiLc, chiLnc]])</span>
<span id="cb1-42">chi_R <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiR], [chiRn]])</span>
<span id="cb1-43">chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[chiRc, chiRnc]])</span>
<span id="cb1-44"></span>
<span id="cb1-45"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Scalar potential ---------------------------------------------------------</span></span>
<span id="cb1-46">V_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-47">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)</span>
<span id="cb1-48">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-49">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi)</span>
<span id="cb1-50">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-51">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam4 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb1-52">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam5 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi)</span>
<span id="cb1-53">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.Rational(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lam6 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi)</span>
<span id="cb1-54">                               <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> trace(tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi))</span>
<span id="cb1-55">)</span>
<span id="cb1-56"></span>
<span id="cb1-57">V_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-58">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R))</span>
<span id="cb1-59">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-60">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_R_dag.dot(chi_R))</span>
<span id="cb1-61">)</span>
<span id="cb1-62"></span>
<span id="cb1-63">V_Phi_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> (</span>
<span id="cb1-64">    alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> trace(Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag.dot(chi_L) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag.dot(chi_R))</span>
<span id="cb1-65">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_L <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_R)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-66">    <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (chi_L_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_L</span>
<span id="cb1-67">                <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> chi_R_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi_dag <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> tilde_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> chi_R)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-68">)</span>
<span id="cb1-69"></span>
<span id="cb1-70">V <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> expand(V_Phi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> V_chi <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> V_Phi_chi)</span>
<span id="cb1-71"></span>
<span id="cb1-72"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Tadpole: verification against Eq. (9) of the paper ---------------------</span></span>
<span id="cb1-73">VEV_all <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-74">    phi10: k1, phi10c: k1, phi20: k2, phi20c: k2,</span>
<span id="cb1-75">    phi1m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi1mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-76">    chiL: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiR: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-77">    chiLn: vL, chiLnc: vL, chiRn: vR, chiRnc: vR</span>
<span id="cb1-78">}</span>
<span id="cb1-79">V0 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> V.subs(VEV_all)</span>
<span id="cb1-80"></span>
<span id="cb1-81">lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam2</span>
<span id="cb1-82">lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam3 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam5 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> lam6</span>
<span id="cb1-83">alpha12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha2</span>
<span id="cb1-84">alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha1 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> alpha3</span>
<span id="cb1-85"></span>
<span id="cb1-86">paper_tadpoles <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-87">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13),</span>
<span id="cb1-88">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k2'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu1sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam1356 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-89">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vL'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-90">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>mu2sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> rho2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vL<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha12),</span>
<span id="cb1-91">}</span>
<span id="cb1-92"></span>
<span id="cb1-93">tadpoles <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-94">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>: sp.diff(V0, k1),</span>
<span id="cb1-95">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k2'</span>: sp.diff(V0, k2),</span>
<span id="cb1-96">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vL'</span>: sp.diff(V0, vL),</span>
<span id="cb1-97">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>: sp.diff(V0, vR),</span>
<span id="cb1-98">}</span>
<span id="cb1-99"></span>
<span id="cb1-100"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> tadpoles:</span>
<span id="cb1-101">    diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> simplify(tadpoles[key] <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> paper_tadpoles[key])</span>
<span id="cb1-102">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> diff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"Tadpole </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>key<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;"> does not match the literature: </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>diff<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span>
<span id="cb1-103"></span>
<span id="cb1-104"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"✓ Tadpole conditions: match Eq. (9) of Zeleny-Mora et al. (2026)</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-105"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> label, key <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"k_1"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"k1"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"k_2"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"k2"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"v_L"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"vL"</span>), (<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"v_R"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"vR"</span>)]:</span>
<span id="cb1-106">    display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">rf"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\f</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">rac</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">{{</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">partial V</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">}}{{</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">partial </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>label<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">}}</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;"> = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(factor(tadpoles[key]))))</span>
<span id="cb1-107"></span>
<span id="cb1-108"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Solve for mu1^2 and mu2^2 in the vL = k2 = 0 limit ----------------------</span></span>
<span id="cb1-109">mu1sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.solve(sp.Eq(tadpoles[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'k1'</span>].subs({k2:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, vL:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>}), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>), mu1sq)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-110">mu2sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> sp.solve(sp.Eq(tadpoles[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'vR'</span>].subs({k2:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, vL:<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>}), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>), mu2sq)[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]</span>
<span id="cb1-111"></span>
<span id="cb1-112"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(mu1sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>lam12 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-113"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(mu2sq_sol <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha13)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-114"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"✓ Mass parameters in the $v_L = k_2 = 0$ limit:</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-115">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">\m</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">u_1</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mu1sq_sol)))</span>
<span id="cb1-116">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">\m</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">u_2</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mu2sq_sol)))</span>
<span id="cb1-117"></span>
<span id="cb1-118"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Charged scalar mass matrix ---------------------------------------------</span></span>
<span id="cb1-119"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Basis c+ = (phi2+, chiL+, phi1+, chiR+)</span></span>
<span id="cb1-120"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Mapping: phi2+ = phi2mc, chiL+ = chiL, phi1+ = phi1mc, chiR+ = chiR</span></span>
<span id="cb1-121">c_plus <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [phi2mc, chiL, phi1mc, chiR]</span>
<span id="cb1-122">c_minus <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [phi2m, chiLc, phi1m, chiRc]</span>
<span id="cb1-123"></span>
<span id="cb1-124">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Matrix([[sp.diff(V, c_plus[i], c_minus[j]) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> j <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)] <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)])</span>
<span id="cb1-125"></span>
<span id="cb1-126">VEV_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-127">    phi10: k1, phi10c: k1, phi20: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi20c: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-128">    phi1m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi1mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2m: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, phi2mc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-129">    chiL: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiR: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>,</span>
<span id="cb1-130">    chiLn: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiLnc: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, chiRn: vR, chiRnc: vR</span>
<span id="cb1-131">}</span>
<span id="cb1-132">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> M_charged.subs(VEV_charged).subs({mu1sq: mu1sq_sol, mu2sq: mu2sq_sol})</span>
<span id="cb1-133">M_charged <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> simplify(M_charged)</span>
<span id="cb1-134"></span>
<span id="cb1-135"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Charged scalar mass matrix (basis $c^+ = (</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">phi_2^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">chi_L^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">phi_1^+, </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">chi_R^+)$):"</span>)</span>
<span id="cb1-136">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"M_</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2 = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(M_charged)))</span>
<span id="cb1-137"></span>
<span id="cb1-138"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Physical verification: masses and Goldstones ---------------------------</span></span>
<span id="cb1-139">alpha23 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> alpha3</span>
<span id="cb1-140">rho21 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> rho2 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho1</span>
<span id="cb1-141"></span>
<span id="cb1-142"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Physical masses expected from Eq. (13)</span></span>
<span id="cb1-143">mH1_sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>alpha23 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>rho21</span>
<span id="cb1-144">mH2_sq <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> alpha23<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span>(k1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> vR<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-145"></span>
<span id="cb1-146"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Physical verification: two Goldstones and two correct physical masses.</span></span>
<span id="cb1-147"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># The characteristic polynomial must be lambda^2 * (lambda - mH1^2) * (lambda - mH2^2).</span></span>
<span id="cb1-148"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># This is more robust than counting zero eigenvalues symbolically,</span></span>
<span id="cb1-149"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># because SymPy may return a complicated expression that simplifies to zero.</span></span>
<span id="cb1-150">lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> symbols(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'lam'</span>)</span>
<span id="cb1-151">char_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> M_charged.charpoly(lam).as_expr()</span>
<span id="cb1-152">expected_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> lam<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> mH1_sq) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lam <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> mH2_sq)</span>
<span id="cb1-153"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">assert</span> simplify(expand(char_poly <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span> expected_poly)) <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span></span>
<span id="cb1-154"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">✓ Characteristic polynomial: $</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda^2 (</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda - m^2_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{H_L}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">)(</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">lambda - m^2_</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{H_R}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">)$"</span>)</span>
<span id="cb1-155"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"  → two zero eigenvalues (Goldstones) and two physical masses</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-156"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Physical charged masses:"</span>)</span>
<span id="cb1-157">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"m</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2_{H_L</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">pm} = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mH1_sq)))</span>
<span id="cb1-158">display(Math(<span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">r"m</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">2_{H_R</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">^</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">pm} = "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> sp.latex(mH2_sq)))</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>✓ Tadpole conditions: match Eq. (9) of Zeleny-Mora et al. (2026)
</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20k_1%7D%20=%202%20k_%7B1%7D%20%5Cleft(%5Calpha_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B2%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%208%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B3%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B5%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B6%7D%20-%20%7B%7B%5Cmu_%7B1%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20k_2%7D%20=%202%20k_%7B2%7D%20%5Cleft(%5Calpha_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%208%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B3%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B5%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B6%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B2%7D%5E%7B2%7D%20%5Clambda_%7B2%7D%20-%20%7B%7B%5Cmu_%7B1%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_L%7D%20=%202%20v_%7BL%7D%20%5Cleft(%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BL%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20-%20%7B%7B%5Cmu_%7B2%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cfrac%7B%5Cpartial%20V%7D%7B%5Cpartial%20v_R%7D%20=%202%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B1%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B2%7D%20k_%7B2%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BL%7D%5E%7B2%7D%20-%20%7B%7B%5Cmu_%7B2%7D%5E2%7D%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>✓ Mass parameters in the $v_L = k_2 = 0$ limit:
</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cmu_1%5E2%20=%20%5Calpha_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20v_%7BR%7D%5E%7B2%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B1%7D%20+%202%20k_%7B1%7D%5E%7B2%7D%20%5Clambda_%7B2%7D"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20%5Cmu_2%5E2%20=%20%5Calpha_%7B1%7D%20k_%7B1%7D%5E%7B2%7D%20+%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20+%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>
Charged scalar mass matrix (basis $c^+ = (\phi_2^+, \chi_L^+, \phi_1^+, \chi_R^+)$):</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20M_+%5E2%20=%20%5Cleft%5B%5Cbegin%7Bmatrix%7Dv_%7BR%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20&amp;%200%20&amp;%200%20&amp;%20k_%7B1%7D%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%5C%5C0%20&amp;%20%5Calpha_%7B2%7D%20k_%7B1%7D%5E%7B2%7D%20-%20%5Calpha_%7B3%7D%20k_%7B1%7D%5E%7B2%7D%20-%202%20%5Crho_%7B1%7D%20v_%7BR%7D%5E%7B2%7D%20+%20%5Crho_%7B2%7D%20v_%7BR%7D%5E%7B2%7D%20&amp;%200%20&amp;%200%5C%5C0%20&amp;%200%20&amp;%200%20&amp;%200%5C%5Ck_%7B1%7D%20v_%7BR%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20&amp;%200%20&amp;%200%20&amp;%20k_%7B1%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%5Cend%7Bmatrix%7D%5Cright%5D"></p>
</div>
<div class="cell-output cell-output-stdout">
<pre><code>
✓ Characteristic polynomial: $\lambda^2 (\lambda - m^2_{H_L})(\lambda - m^2_{H_R})$
  → two zero eigenvalues (Goldstones) and two physical masses

Physical charged masses:</code></pre>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20m%5E2_%7BH_L%5E%5Cpm%7D%20=%20k_%7B1%7D%5E%7B2%7D%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20+%20v_%7BR%7D%5E%7B2%7D%20%5Cleft(-%202%20%5Crho_%7B1%7D%20+%20%5Crho_%7B2%7D%5Cright)"></p>
</div>
<div class="cell-output cell-output-display cell-output-markdown">
<p><img src="https://latex.codecogs.com/png.latex?%5Cdisplaystyle%20m%5E2_%7BH_R%5E%5Cpm%7D%20=%20%5Cleft(%5Calpha_%7B2%7D%20-%20%5Calpha_%7B3%7D%5Cright)%20%5Cleft(k_%7B1%7D%5E%7B2%7D%20+%20v_%7BR%7D%5E%7B2%7D%5Cright)"></p>
</div>
</div>
</section>
<section id="comparing-the-two-arms" class="level2">
<h2 class="anchored" data-anchor-id="comparing-the-two-arms">Comparing the two arms</h2>
<p>The difference is subtle but decisive. The chat model returns an answer that <strong>passes a quick review</strong>: the final masses are correct and the notation matches the paper. However, the answer has the properties that make an LLM dangerous in physics:</p>
<ul>
<li><strong>It is opaque.</strong> There is no reproducible path to it. To know if it is correct, the reader must redo all the algebra.</li>
<li><strong>It is fragile in structure.</strong> Even when the final masses agree, the assignment of fields to physical states (Goldstone vs.&nbsp;Higgs) depends on the exact matrix structure. Without a CAS, a sign, a column swap, or a factor of 2 can go unnoticed.</li>
<li><strong>It is not auditable.</strong> There is no “reproduce” button.</li>
</ul>
<p>In contrast, the LLM+CAS workflow gives:</p>
<ul>
<li><strong>Full transparency.</strong> The code is the calculation; anyone can run it.</li>
<li><strong>Automatic verification.</strong> Every <code>assert</code> is a check the CAS evaluates symbolically. If the LLM had written code with a wrong sign, the cell would have failed with an error message, not produced a plausible-looking answer.</li>
<li><strong>Traceability.</strong> The relation between the potential, the tadpole conditions, the mass matrix, and the physical masses is explicit and readable.</li>
</ul>
</section>
<section id="toward-the-theoretical-physicists-workflow-in-the-llm-era" class="level2">
<h2 class="anchored" data-anchor-id="toward-the-theoretical-physicists-workflow-in-the-llm-era">Toward the theoretical physicist’s workflow in the LLM era</h2>
<div id="cell-fig-workflow" class="cell" data-execution_count="2">
<details class="code-fold">
<summary>Show the figure code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb6-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.patches <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> mpatches</span>
<span id="cb6-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> matplotlib.patches <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> FancyBboxPatch, FancyArrowPatch</span>
<span id="cb6-4"></span>
<span id="cb6-5">paper, ink, accent, grey <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#fcfcfa"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#22262b"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3a5a7a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a8f96"</span></span>
<span id="cb6-6">red, green <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#9e4a4a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#2a6f68"</span></span>
<span id="cb6-7"></span>
<span id="cb6-8">plt.rcParams.update({</span>
<span id="cb6-9">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.family"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serif"</span>,</span>
<span id="cb6-10">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.size"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,</span>
<span id="cb6-11">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.edgecolor"</span>: ink,</span>
<span id="cb6-12">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.linewidth"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>,</span>
<span id="cb6-13">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure.facecolor"</span>: paper,</span>
<span id="cb6-14">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.facecolor"</span>: paper,</span>
<span id="cb6-15">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"savefig.facecolor"</span>: paper,</span>
<span id="cb6-16">})</span>
<span id="cb6-17"></span>
<span id="cb6-18">fig, ax <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.subplots(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>))</span>
<span id="cb6-19">ax.set_xlim(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb6-20">ax.set_ylim(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>)</span>
<span id="cb6-21">ax.axis(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"off"</span>)</span>
<span id="cb6-22"></span>
<span id="cb6-23"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> box(x, y, w, h, text, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, text_color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>paper):</span>
<span id="cb6-24">    rect <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> FancyBboxPatch((x, y), w, h, boxstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"round,pad=0.05,rounding_size=0.2"</span>,</span>
<span id="cb6-25">                          facecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>color, edgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, linewidth<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>)</span>
<span id="cb6-26">    ax.add_patch(rect)</span>
<span id="cb6-27">    ax.text(x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> w<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> h<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, text, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>text_color,</span>
<span id="cb6-28">            fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, wrap<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span>
<span id="cb6-29"></span>
<span id="cb6-30"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> arrow(x1, y1, x2, y2, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"-&gt;"</span>):</span>
<span id="cb6-31">    ax.annotate(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>, xy<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(x2, y2), xytext<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(x1, y1),</span>
<span id="cb6-32">                arrowprops<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(arrowstyle<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>style, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>color, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>))</span>
<span id="cb6-33"></span>
<span id="cb6-34"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Arm A: direct chat answer ----------------------------------------------</span></span>
<span id="cb6-35">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">9.3</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"A. Direct chat answer"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink)</span>
<span id="cb6-36">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Question</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(DLRSM)"</span>, accent)</span>
<span id="cb6-37">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLM"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>)</span>
<span id="cb6-38">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.6</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Answer</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(derivation)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>)</span>
<span id="cb6-39">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"?"</span>, red)</span>
<span id="cb6-40">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-41">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-42">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>)</span>
<span id="cb6-43">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.8</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Manual verification, opaque, prone to silent errors"</span>,</span>
<span id="cb6-44">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>red, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb6-45"></span>
<span id="cb6-46"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Arm B: LLM + CAS -------------------------------------------------------</span></span>
<span id="cb6-47">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.9</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"B. LLM + CAS workflow"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink)</span>
<span id="cb6-48">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Question</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(DLRSM)"</span>, accent)</span>
<span id="cb6-49">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLM →</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">SymPy"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>)</span>
<span id="cb6-50">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"SymPy</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(runs)"</span>, green)</span>
<span id="cb6-51">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.4</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"asserts</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">OK/FAIL"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>)</span>
<span id="cb6-52">box(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Physicist reviews</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">and signs off"</span>, accent)</span>
<span id="cb6-53"></span>
<span id="cb6-54">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-55">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-56">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.3</span>)</span>
<span id="cb6-57"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Feedback loop</span></span>
<span id="cb6-58">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.8</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.9</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.8</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey)</span>
<span id="cb6-59">arrow(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.3</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">2.3</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"&lt;-"</span>)</span>
<span id="cb6-60">ax.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.0</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.1</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Automatic symbolic verification, reproducible, auditable"</span>,</span>
<span id="cb6-61">        ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>green, style<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"italic"</span>)</span>
<span id="cb6-62"></span>
<span id="cb6-63">plt.tight_layout()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-workflow" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-workflow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://moiseszeleny.github.io/posts/llm-cas-workflow/index_files/figure-html/fig-workflow-output-1.png" width="682" height="490" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-workflow-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Workflow comparison. Top: direct chat answer — the physicist must verify by hand, and errors are silent. Bottom: LLM generates SymPy code, the CAS runs symbolic <code>assert</code>s, and the physicist reviews and signs off.
</figcaption>
</figure>
</div>
</div>
</div>
<p>The DLRSM case is a clean example of the broader pattern. The CAS does not replace the physicist; it defines a <strong>division of responsibilities</strong>:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>Task</th>
<th>LLM</th>
<th>CAS</th>
<th>Physicist</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Translate the physics question into a script</td>
<td>Yes</td>
<td>No</td>
<td>Supervise</td>
</tr>
<tr class="even">
<td>Execute exact symbolic algebra</td>
<td>No</td>
<td>Yes</td>
<td>Design the verification harness</td>
</tr>
<tr class="odd">
<td>Decide what to check and what it means physically</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr class="even">
<td>Detect convention, sign, or factor errors</td>
<td>Partially</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr class="odd">
<td>Produce a reproducible derivation</td>
<td>Only as code</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>This pattern scales in several directions. Today SymPy covers the polynomial algebra of the scalar sector; for one-loop calculations with Passarino–Veltman functions, the same workflow points to tools like FeynCalc, Package-X, or LoopTools, with the LLM acting as an <strong>orchestrator</strong> between them. This is where work such as <span class="citation" data-cites="Hell:2026">Hell and Thiele (2026)</span> explores the frontier: not an LLM that solves the problem, but an LLM that writes the code the CAS runs and the physicist verifies.</p>
<p>The deepest change is cultural. In the near future, a PhD student in theoretical physics will likely spend less time rewriting matrix products by hand and more time on:</p>
<ol type="1">
<li>Formulating the <strong>model</strong> and the <strong>verification protocol</strong>.</li>
<li>Asking an LLM to generate the CAS code.</li>
<li>Running the code, checking the <code>assert</code>, and analyzing the limiting cases.</li>
<li>Deciding whether the result makes physical sense.</li>
</ol>
<p>The derivation does not disappear; it becomes code. And code, unlike a chat answer, can be <strong>run, audited, and fixed</strong>.</p>
</section>
<section id="honest-limits" class="level2">
<h2 class="anchored" data-anchor-id="honest-limits">Honest limits</h2>
<p>The workflow is not infallible. The CAS only checks what we ask it to check. If the LLM writes code that <strong>typechecks but encodes the wrong physics</strong>—for example, using the wrong invariant in the potential—the <code>assert</code> will pass and the physical result will be wrong. The CAS does not replace physical judgment; it formalizes it.</p>
<p>There are also practical limitations:</p>
<ul>
<li><strong>Context and length:</strong> for potentials with dozens of parameters, the prompt can become unwieldy.</li>
<li><strong>SymPy performance:</strong> real loop integrals or very large matrices quickly exceed what SymPy can do in reasonable time.</li>
<li><strong>Conventions:</strong> the LLM may mix up sign conventions for <img src="https://latex.codecogs.com/png.latex?%5Ctilde%5CPhi">, <img src="https://latex.codecogs.com/png.latex?%5Ctau">, or charges. The verification harness should include at least a gauge-invariance check or a known limit.</li>
</ul>
<p>The point is not that LLM+CAS does everything. The point is that <strong>it converts the model’s uncertainty into a CAS exception</strong>, which is much easier to diagnose than a plausibly wrong answer.</p>
<div class="callout callout-style-simple callout-note no-icon callout-titled">
<div class="callout-header d-flex align-content-center collapsed" data-bs-toggle="collapse" data-bs-target=".callout-2-contents" aria-controls="callout-2" aria-expanded="false" aria-label="Toggle callout">
<div class="callout-icon-container">
<i class="callout-icon no-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>Reproducibility note
</div>
<div class="callout-btn-toggle d-inline-block border-0 py-1 ps-1 pe-0 float-end"><i class="callout-toggle"></i></div>
</div>
<div id="callout-2" class="callout-2-contents callout-collapse collapse">
<div class="callout-body-container callout-body">
<p>This post contains a <code>{python}</code> cell executed locally with SymPy <span class="citation" data-cites="Meurer:2017">Meurer et al. (2017)</span>. The frozen results are stored in <code>_freeze/posts/llm-cas-workflow/</code> and committed with the <code>.qmd</code>. The CI runner only has Quarto, no Python, so any change to the cell must be re-rendered locally. The full prompt to Gemini 3.1 Pro is in the Appendix; the transcribed response was used as-is on 2026-08-02. No numerical results from ongoing projects are included: the example uses only the published symbolic equations from <span class="citation" data-cites="ZelenyMora:2026">Zeleny-Mora et al. (2026)</span>.</p>
</div>
</div>
</div>
</section>
<section id="appendix-full-prompt-to-gemini-3.1-pro" class="level2">
<h2 class="anchored" data-anchor-id="appendix-full-prompt-to-gemini-3.1-pro">Appendix: full prompt to Gemini 3.1 Pro</h2>
<p>The prompt was sent on 2026-08-02 to the Gemini 3.1 Pro model. The response text was abbreviated in the body of the post; the full prompt is reproduced here so anyone can repeat it:</p>
<blockquote class="blockquote">
<p>Consider the Doublet Left-Right Symmetric Model (DLRSM) with a bidoublet <img src="https://latex.codecogs.com/png.latex?%5CPhi%20=%20%5B%5Cphi_1,%20i%5Csigma_2%5Cphi_2%5E*%5D"> where <img src="https://latex.codecogs.com/png.latex?%5Cphi_i%20=%20(%5Cphi_i%5E0,%20%5Cphi_i%5E-)%5ET">, and <img src="https://latex.codecogs.com/png.latex?%5Clangle%5CPhi%5Crangle%20=%20%5Cmathrm%7Bdiag%7D(k_1,%20k_2)">. The model also contains two doublets <img src="https://latex.codecogs.com/png.latex?%5Cchi_L%20=%20(%5Cchi_L%5E+,%20%5Cchi_L%5E0)%5ET"> and <img src="https://latex.codecogs.com/png.latex?%5Cchi_R%20=%20(%5Cchi_R%5E+,%20%5Cchi_R%5E0)%5ET"> with <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_L%5E0%5Crangle%20=%20v_L"> and <img src="https://latex.codecogs.com/png.latex?%5Clangle%5Cchi_R%5E0%5Crangle%20=%20v_R">. The scalar potential is <img src="https://latex.codecogs.com/png.latex?V%20=%20V_%5CPhi%20+%20V_%5Cchi%20+%20V_%7B%5CPhi%5Cchi%7D"> where <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%5CPhi%20=&amp;%20-%5Cmu_1%5E2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%0A+%20%5Clambda_1%20%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Clambda_2%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5CPhi%20%5C%5C&amp;%0A+%20%5Cfrac%7B%5Clambda_3%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%0A+%20%5Cfrac%7B%5Clambda_4%7D%7B2%7D%5Cleft(%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20-%20%5Cmathrm%7BTr%7D%5Ctilde%5CPhi%5E%5Cdagger%5CPhi%5Cright)%5E2%20%5C%5C&amp;%0A+%20%5Clambda_5%20%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%0A+%20%5Cfrac%7B%5Clambda_6%7D%7B2%7D%5Cleft%5B%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%20+%20%5Cmathrm%7Bh.c.%7D%5Cright%5D,%0A%5Cend%7Baligned%7D%0A"> <img src="https://latex.codecogs.com/png.latex?%0AV_%5Cchi%20=%20-%5Cmu_2%5E2%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%0A+%20%5Crho_1%5Cleft%5B%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%5Cright)%5E2%20+%20%5Cleft(%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%5E2%5Cright%5D%0A+%20%5Crho_2%5C,%5Cchi_L%5E%5Cdagger%5Cchi_L%5C,%5Cchi_R%5E%5Cdagger%5Cchi_R,%0A"> <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Baligned%7D%0AV_%7B%5CPhi%5Cchi%7D%20=&amp;%20%5C;%5Calpha_1%5C,%5Cmathrm%7BTr%7D%5CPhi%5E%5Cdagger%5CPhi%5Cleft(%5Cchi_L%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_2%5Cleft(%5Cchi_L%5E%5Cdagger%5CPhi%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5CPhi%5E%5Cdagger%5CPhi%5Cchi_R%5Cright)%20%5C%5C&amp;%0A+%20%5Calpha_3%5Cleft(%5Cchi_L%5E%5Cdagger%5Ctilde%5CPhi%5Ctilde%5CPhi%5E%5Cdagger%5Cchi_L%20+%20%5Cchi_R%5E%5Cdagger%5Ctilde%5CPhi%5E%5Cdagger%5Ctilde%5CPhi%5Cchi_R%5Cright).%0A%5Cend%7Baligned%7D%0A"> Derive: (a) the four tadpole conditions; (b) the charged scalar mass matrix in the basis <img src="https://latex.codecogs.com/png.latex?(%5Cphi_2%5E+,%20%5Cchi_L%5E+,%20%5Cphi_1%5E+,%20%5Cchi_R%5E+)"> in the limit <img src="https://latex.codecogs.com/png.latex?v_L%20=%20k_2%20=%200">; (c) the physical charged Higgs masses.</p>
</blockquote>



</section>

<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-Hell:2026" class="csl-entry">
Hell, Anamaria, and Leander Thiele. 2026. <span>“<span>LLMs</span> with in-Context Learning for Algorithmic Theoretical Physics.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2605.08212">https://arxiv.org/abs/2605.08212</a>.
</div>
<div id="ref-Meurer:2017" class="csl-entry">
Meurer, Aaron, Christopher P. Smith, Mateusz Paprocki, et al. 2017. <span>“<span>SymPy</span>: Symbolic Computing in <span>Python</span>.”</span> <em>PeerJ Computer Science</em> 3: e103. <a href="https://doi.org/10.7717/peerj-cs.103">https://doi.org/10.7717/peerj-cs.103</a>.
</div>
<div id="ref-Senjanovic:1979" class="csl-entry">
Senjanović, G. 1979. <span>“Spontaneous Breakdown of Parity in a Class of Gauge Theories.”</span> <em>Nucl. Phys. B</em> 153: 334–64. <a href="https://doi.org/10.1016/0550-3213(79)90604-7">https://doi.org/10.1016/0550-3213(79)90604-7</a>.
</div>
<div id="ref-ZelenyMora:2026" class="csl-entry">
Zeleny-Mora, M., R. Gaitán-Lozano, and R. Martinez. 2026. <span>“Lepton Flavor Violating Higgs Decays in a Minimal Doublet Left-Right Symmetric Model with an Inverse Seesaw.”</span> <em>Eur. Phys. J. C</em> 86: 441. <a href="https://doi.org/10.1140/epjc/s10052-026-15669-1">https://doi.org/10.1140/epjc/s10052-026-15669-1</a>.
</div>
</div></section></div> ]]></description>
  <category>English</category>
  <category>workflow</category>
  <category>llms</category>
  <category>cas</category>
  <category>sympy</category>
  <guid>https://moiseszeleny.github.io/posts/llm-cas-workflow/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>LLMs in particle physics: where are they now?</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/llms-in-particle-physics-now/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Versión en español disponible.</strong> Este artículo también está disponible <a href="../../posts/llms-en-fisica-de-particulas/">en español</a>.</p>
</div>
</div>
</div>
<section id="the-calculation-still-done-by-hand" class="level2">
<h2 class="anchored" data-anchor-id="the-calculation-still-done-by-hand">The calculation still done by hand</h2>
<p>Theoretical particle physics is, to nobody’s surprise, a discipline where most calculations are done by hand. This is neither a defect nor nostalgia: it is how a researcher internalizes a model’s behavior, detects subtle cancellations, and develops physical intuition. That skill is not going away, nor should it. Manual derivation remains the core training of the trade.</p>
<p>But it is not the only way to work. For decades, computational tools have existed specifically to automate parts of the process: <code>FeynRules</code> and <code>SARAH</code> for model building and vertex derivation; <code>MadGraph</code> for collider amplitudes and simulations; <code>SPheno</code> and <code>micrOMEGAs</code> for observables; <code>FeynCalc</code> and <code>Package-X</code> for amplitude computation, tensor reduction, and loop calculations. The list is long. And yet, the routine use of these tools is far from universal. Many groups keep doing by hand what a computer could do in seconds, not because they distrust the result, but because the barrier to entry for the tool is higher than the barrier to output of the manual calculation.</p>
<p>The problem, in my experience, is threefold:</p>
<ol type="1">
<li><strong>Scarce or opaque documentation.</strong> Manuals that assume the user already knows the package’s internal architecture; tutorials that break at the first update; examples that cover the trivial case but not the one you need.</li>
<li><strong>Steep learning curves.</strong> Installing, configuring, and producing a first useful result with <code>SARAH</code> or <code>FeynRules</code> can take days. Each tool has its own input language, its own conventions, its own cryptic error messages.</li>
<li><strong>Lack of bridges between tools.</strong> The output of one is manually converted into the input of another, in incompatible formats, through ad-hoc scripts that each group maintains independently.</li>
</ol>
<p>Even when a tool works, its output arrives as a black box — a Lagrangian or a set of Feynman rules produced by an opaque internal pipeline. To use that output in a loop calculation, a theorist needs to trust it down to the sign conventions. The only way to earn that trust is to derive it independently, which erases much of the time the tool was supposed to save. Hand derivation isn’t just pedagogical: it’s a verification step that automated tools don’t replace, they just relocate — now you have to verify the tool’s output against your own derivation anyway.</p>
<p>The cost of <em>learning the tool</em> frequently exceeds the cost of <em>doing the calculation by hand</em> (which is largely clear in the literature and the craft). And so, powerful tools remain underutilized.</p>
</section>
<section id="what-changed-with-llms" class="level2">
<h2 class="anchored" data-anchor-id="what-changed-with-llms">What changed with LLMs</h2>
<p>This is, I believe, the most genuine and least publicized contribution of language models to theoretical physics. It is not — or not yet — that they derive better than a human. It is that they <strong>translate natural-language intent into the concrete invocation of a tool, its documentation, or its input code</strong>. An LLM can:</p>
<ul>
<li>Read a Lagrangian in standard notation and produce the corresponding model file for <code>FeynRules</code> or <code>SARAH</code>, with the correct conventions.</li>
<li>Explain an obscure <code>SPheno</code> error message in terms of the model you are building.</li>
<li>Generate a <code>MadGraph</code> script for a specific process from a natural-language description, including cuts and output formats.</li>
<li>Write the glue between two tools — the <em>script</em> that takes the output of one and converts it into the input of the other — avoiding the phase of reading two separate manuals.</li>
</ul>
<p>The barrier LLMs are lowering is not the one between the physicist and physics, but between the physicist and the computational tools already on their machine. And the evidence that this is happening is not anecdotal: in the last two years a body of literature has emerged that is worth reviewing in some detail.</p>
</section>
<section id="what-has-been-built-20222026" class="level2">
<h2 class="anchored" data-anchor-id="what-has-been-built-20222026">What has been built (2022–2026)</h2>
<p>What follows is a survey of recent work that, in one way or another, uses LLMs to bridge the gap between the theoretical physicist and the computational tools of the trade. It is not exhaustive; it is representative. Figure&nbsp;1 summarizes the timeline: theoretical-physics publications using LLMs (bottom axis) cluster with a two- to three-year lag behind the milestones of the models themselves (top axis) — the time it takes the community to absorb each new capability as a research tool.</p>
<div id="cell-fig-timeline" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Show the code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.dates <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> mdates</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> datetime <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> datetime, timedelta</span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Academic styling to match the site ---------------------------------------</span></span>
<span id="cb1-6">paper, ink, accent, grey <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#fcfcfa"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#22262b"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3a5a7a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a8f96"</span></span>
<span id="cb1-7">colors <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-8">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>:    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#2a6f68"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># teal</span></span>
<span id="cb1-9">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># amber</span></span>
<span id="cb1-10">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>:      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># muted purple</span></span>
<span id="cb1-11">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#9e4a4a"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># muted red</span></span>
<span id="cb1-12">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>:  accent,     <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># slate</span></span>
<span id="cb1-13">}</span>
<span id="cb1-14">plt.rcParams.update({</span>
<span id="cb1-15">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.family"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serif"</span>,</span>
<span id="cb1-16">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.size"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,</span>
<span id="cb1-17">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.edgecolor"</span>: ink,</span>
<span id="cb1-18">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.linewidth"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>,</span>
<span id="cb1-19">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure.facecolor"</span>: paper,</span>
<span id="cb1-20">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.facecolor"</span>: paper,</span>
<span id="cb1-21">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"savefig.facecolor"</span>: paper,</span>
<span id="cb1-22">})</span>
<span id="cb1-23"></span>
<span id="cb1-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Data ---------------------------------------------------------------------</span></span>
<span id="cb1-25">llm_events <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-26">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2020</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GPT-3"</span>),</span>
<span id="cb1-27">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2022</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ChatGPT"</span>),</span>
<span id="cb1-28">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2023</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GPT-4"</span>),</span>
<span id="cb1-29">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2023</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Llama 2"</span>),</span>
<span id="cb1-30">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Claude 3"</span>),</span>
<span id="cb1-31">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Gemini 2 / o1"</span>),</span>
<span id="cb1-32">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># manual label below</span></span>
<span id="cb1-33">]</span>
<span id="cb1-34">phys_events <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-35">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Barman (LPMs)"</span>,          <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>),</span>
<span id="cb1-36">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"v. Hippel (IBP)"</span>,        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>),</span>
<span id="cb1-37">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Albert"</span>,                 <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-38">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Yu (QFT/strings)"</span>,       <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>),</span>
<span id="cb1-39">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Woodward (QFT)"</span>,         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>),</span>
<span id="cb1-40">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Hell &amp; Thiele</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(LLM+CAS)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>),</span>
<span id="cb1-41">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"DarkAgents"</span>,             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-42">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"AgentRivet"</span>,             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>),</span>
<span id="cb1-43">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bom (DE)"</span>,               <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-44">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bsm_agent"</span>,              <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-45">]</span>
<span id="cb1-46">events_2025 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [e <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> e <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> phys_events <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> e[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>].year <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>]</span>
<span id="cb1-47">events_2026 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [e <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> e <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> phys_events <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> e[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>].year <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>]</span>
<span id="cb1-48"></span>
<span id="cb1-49"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Figure: broken axis on the bottom panel ----------------------------------</span></span>
<span id="cb1-50">fig <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.figure(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.4</span>))</span>
<span id="cb1-51">gs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_gridspec(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, height_ratios<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>], width_ratios<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.70</span>])</span>
<span id="cb1-52"></span>
<span id="cb1-53"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Top panel: LLM milestones</span></span>
<span id="cb1-54">ax_top <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, :])</span>
<span id="cb1-55">ax_top.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-56"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i, (date, label) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(llm_events):</span>
<span id="cb1-57">    ax_top.vlines(date, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-58">    ax_top.plot(date, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-59">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>:</span>
<span id="cb1-60">        ax_top.text(date, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">25</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>,</span>
<span id="cb1-61">                    fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-62">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span>:</span>
<span id="cb1-63">        ax_top.text(date, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">25</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>,</span>
<span id="cb1-64">                    fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-65"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Last milestone label, right-aligned so it fits</span></span>
<span id="cb1-66">ax_top.text(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Reasoning</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">models"</span>,</span>
<span id="cb1-67">            rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-68">ax_top.text(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2019</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLMs"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb1-69">            fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-70">ax_top.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>)</span>
<span id="cb1-71">ax_top.set_yticks([])</span>
<span id="cb1-72">ax_top.xaxis.set_major_locator(mdates.YearLocator())</span>
<span id="cb1-73">ax_top.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%Y"</span>))</span>
<span id="cb1-74">ax_top.xaxis.set_minor_locator(mdates.MonthLocator(interval<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>))</span>
<span id="cb1-75">plt.setp(ax_top.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb1-76">ax_top.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-77"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-78">    ax_top.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-79">ax_top.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-80">ax_top.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2019</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-81"></span>
<span id="cb1-82"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Bottom-left panel: 2025</span></span>
<span id="cb1-83">ax_l <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>])</span>
<span id="cb1-84">ax_l.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-85">ax_l.axvspan(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),</span>
<span id="cb1-86">             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.06</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-87"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i, (date, label, cat) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(events_2025):</span>
<span id="cb1-88">    c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> colors[cat]</span>
<span id="cb1-89">    side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-90">    y_dot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.15</span></span>
<span id="cb1-91">    y_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.23</span></span>
<span id="cb1-92">    ax_l.vlines(date, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, y_dot, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-93">    ax_l.plot(date, y_dot, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-94">    va <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span></span>
<span id="cb1-95">    ax_l.text(date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> timedelta(days<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>), y_text, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>va,</span>
<span id="cb1-96">              fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-97">ax_l.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>)</span>
<span id="cb1-98">ax_l.set_yticks([])</span>
<span id="cb1-99">ax_l.xaxis.set_major_locator(mdates.MonthLocator())</span>
<span id="cb1-100">ax_l.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b"</span>))</span>
<span id="cb1-101">plt.setp(ax_l.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>)</span>
<span id="cb1-102">ax_l.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-103">ax_l.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-104"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-105">    ax_l.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-106">ax_l.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-107"></span>
<span id="cb1-108"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Bottom-right panel: 2026 enlarged (with labels)</span></span>
<span id="cb1-109">ax_r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span>
<span id="cb1-110">ax_r.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-111">ax_r.axvspan(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>),</span>
<span id="cb1-112">             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.06</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-113">zoom_levels <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-114">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.20</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Albert</span></span>
<span id="cb1-115">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.20</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Yu</span></span>
<span id="cb1-116">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Woodward</span></span>
<span id="cb1-117">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Hell</span></span>
<span id="cb1-118">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.56</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># DarkAgents</span></span>
<span id="cb1-119">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.56</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># AgentRivet</span></span>
<span id="cb1-120">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Bom</span></span>
<span id="cb1-121">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># bsm_agent</span></span>
<span id="cb1-122">]</span>
<span id="cb1-123"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (date, label, cat), (lvl, side, xoff) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(events_2026, zoom_levels):</span>
<span id="cb1-124">    c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> colors[cat]</span>
<span id="cb1-125">    y_dot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lvl</span>
<span id="cb1-126">    y_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lvl <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>)</span>
<span id="cb1-127">    x_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> timedelta(days<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>xoff)</span>
<span id="cb1-128">    ax_r.vlines(date, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, y_dot, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-129">    ax_r.plot(date, y_dot, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-130">    va <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span></span>
<span id="cb1-131">    ha <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> xoff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span></span>
<span id="cb1-132">    ax_r.text(x_text, y_text, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ha, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>va,</span>
<span id="cb1-133">              fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-134">ax_r.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>)</span>
<span id="cb1-135">ax_r.set_yticks([])</span>
<span id="cb1-136">ax_r.xaxis.set_major_locator(mdates.MonthLocator())</span>
<span id="cb1-137">ax_r.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b"</span>))</span>
<span id="cb1-138">plt.setp(ax_r.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>)</span>
<span id="cb1-139">ax_r.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-140">ax_r.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb1-141"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-142">    ax_r.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-143">ax_r.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-144"></span>
<span id="cb1-145"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Break marks at the junction of the two bottom axes</span></span>
<span id="cb1-146">kw <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(transform<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax_l.transAxes, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, clip_on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb1-147">ax_l.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.96</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.99</span>), (<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-148">ax_l.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.96</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.99</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-149">kw <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(transform<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax_r.transAxes, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, clip_on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb1-150">ax_r.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.01</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>), (<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-151">ax_r.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.01</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-152"></span>
<span id="cb1-153"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Bottom axis label</span></span>
<span id="cb1-154">fig.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.02</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Theoretical physics"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb1-155">         fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">90</span>)</span>
<span id="cb1-156"></span>
<span id="cb1-157"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Category legend</span></span>
<span id="cb1-158"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> matplotlib.lines <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Line2D</span>
<span id="cb1-159">legend_elements <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-160">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>],</span>
<span id="cb1-161">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Model building"</span>),</span>
<span id="cb1-162">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>],</span>
<span id="cb1-163">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Symbolic / CAS"</span>),</span>
<span id="cb1-164">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>],</span>
<span id="cb1-165">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QFT"</span>),</span>
<span id="cb1-166">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>],</span>
<span id="cb1-167">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Experimental analysis"</span>),</span>
<span id="cb1-168">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>],</span>
<span id="cb1-169">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Roadmap"</span>),</span>
<span id="cb1-170">]</span>
<span id="cb1-171">ax_top.legend(handles<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>legend_elements, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"lower left"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.8</span>,</span>
<span id="cb1-172">            frameon<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>, facecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>paper, edgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey,</span>
<span id="cb1-173">            ncol<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, bbox_to_anchor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.31</span>))</span>
<span id="cb1-174"></span>
<span id="cb1-175">fig.tight_layout(rect<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span>
<span id="cb1-176">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-timeline" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-timeline-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://moiseszeleny.github.io/posts/llms-in-particle-physics-now/index_files/figure-html/fig-timeline-output-1.png" width="680" height="508" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-timeline-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Timeline of LLM milestones (top) and theoretical-physics works that adopt them (bottom). The bottom axis uses a break: 2025 events on the left, the dense March–June 2026 cluster enlarged on the right.
</figcaption>
</figure>
</div>
</div>
</div>
<section id="model-building-and-phenomenology-pipelines" class="level3">
<h3 class="anchored" data-anchor-id="model-building-and-phenomenology-pipelines">Model building and phenomenology pipelines</h3>
<p><strong><code>bsm_agent</code></strong> <span class="citation" data-cites="Saad:2026">(Saad 2026)</span> is perhaps the cleanest example of the pattern described above. The user specifies, in natural language, the quantum numbers of new scalar or fermionic particles. An LLM interprets that specification, resolves ambiguities through confirmation steps, and triggers a deterministic symbolic backend — written in Python, with no LLM involvement — that builds the renormalizable Lagrangian, checks gauge anomalies, expands operators into component fields, derives the electroweak symmetry-breaking stationary conditions, and computes tree-level mass matrices. The LLM is the <em>orchestrator</em>; the correct physics is guaranteed by the symbolic code.<sup>1</sup></p>
<p><strong>DarkAgents</strong> <span class="citation" data-cites="Lucente:2026">(Lucente et al. 2026)</span> applies a similar multi-agent scheme to the domain of astroparticle physics. The system builds complete pipelines: it starts from a classically scale-invariant model, computes first-order cosmological phase transitions, and fits the resulting gravitational-wave spectrum to NANOGrav data. What sets it apart is that DarkAgents also produces an <em>audit report</em> of the assumptions and priors entering each stage — a layer of transparency that hand calculations rarely document with this level of systematicity. In its tests, the system identified inconsistencies in previously published fits and produced new ones using dissipative bulk-flow GW templates. The code is publicly available.<sup>2</sup></p>
</section>
<section id="llm-computer-algebra-system" class="level3">
<h3 class="anchored" data-anchor-id="llm-computer-algebra-system">LLM + computer algebra system</h3>
<p>One of the most concrete and least spectacular — in the best sense — results is that of <strong>Hell and Thiele</strong> <span class="citation" data-cites="Hell:2026">(Hell and Thiele 2026)</span>. They couple Claude (a frontier commercial LLM) with Maple (a computer algebra system) and evaluate whether the system solves algorithmic tasks in theoretical physics: cosmological perturbations in modified theories of gravity. The LLM receives worked examples as context (<em>in-context learning</em>) and is then asked to solve analogous problems using Maple as a runtime. The finding is measured but significant: with enough worked examples, the system solves most test problems. Typical errors are not computational (Maple guarantees that) but formal: misinterpreting a convention, applying a template where it does not belong.</p>
<p>The pattern is the same: the LLM does not derive; the LLM translates intent into the language of the tool that does.</p>
</section>
<section id="feynman-integral-reduction" class="level3">
<h3 class="anchored" data-anchor-id="feynman-integral-reduction">Feynman-integral reduction</h3>
<p>Integration-by-parts (IBP) reduction of Feynman integrals is one of the most well-known computational bottlenecks in high-energy theoretical physics and gravitational-wave physics. The efficiency of the reduction depends critically on heuristics for selecting which IBP identities to use first — a combinatorial optimization problem traditionally solved with handcrafted criteria.</p>
<p><strong>von Hippel and Wilhelm</strong> <span class="citation" data-cites="vonHippel:2025">(Hippel and Wilhelm 2025)</span> attacked this problem using <code>funsearch</code>, a genetic-programming variant that generates code via an LLM. The system explores the space of possible heuristics, evaluates each against reduction benchmarks, and evolves the best ones. The authors report that the method rediscovered the state-of-the-art heuristics recently incorporated into IBP solvers and <em>in one case found a small improvement over the state of the art</em>. Again: the LLM does not derive integrals; it generates heuristic candidates that a deterministic solver evaluates.</p>
</section>
<section id="autonomous-theory-space-exploration" class="level3">
<h3 class="anchored" data-anchor-id="autonomous-theory-space-exploration">Autonomous theory-space exploration</h3>
<p><strong>Albert</strong> <span class="citation" data-cites="Alexander:2026">(Alexander et al. 2026)</span> deserves separate mention, although its architecture departs from the “LLM as bridge to tools” pattern. It is a neuro-symbolic framework that encodes particle physics as a formal language — symmetries, particles, interactions — with a rule-based grammar. This eliminates hallucinations: the model generates tokenized sequences that are syntactically valid by construction. A reinforcement-learning environment enforces first-principle theoretical constraints, computes observables with radiative corrections, and evaluates statistical likelihood (<img src="https://latex.codecogs.com/png.latex?%5Cchi%5E2">) against experimental data. Trained only on LEP data — which contain no direct evidence for the top quark — Albert rediscovered the Standard Model and autonomously inferred the necessity and properties of the top quark, predicting its mass at <img src="https://latex.codecogs.com/png.latex?178.9%20%5Cpm%205.0%5C%20%5Ctext%7BGeV%7D">, consistent with the modern LHC measurement.</p>
<p>This work is relevant not because it uses an LLM — it does not, in the conventional sense; it is a transformer trained for a specific task — but because it shows that the BSM theory space, whose combinatorial explosion is the standard argument against systematic exploration, can be navigated with modern architectures as long as physical constraints are imposed as part of the environment, not as part of the generative model.</p>
</section>
<section id="from-papers-to-analysis-code" class="level3">
<h3 class="anchored" data-anchor-id="from-papers-to-analysis-code">From papers to analysis code</h3>
<p>One of the chronic problems of collider phenomenology is the gap between what an ATLAS or CMS paper reports and the code that allows a new model to be compared against that measurement. The <strong>Rivet</strong> system preserves experimental analyses as C++ routines that any Monte Carlo generator can invoke, but coverage is incomplete: only 39% of measurements have a public, documented routine.</p>
<p><strong>AgentRivet</strong> <span class="citation" data-cites="Costa:2026">(Costa et al. 2026)</span> uses a multi-stage workflow with commercial LLMs (OpenAI, Anthropic, Google) to extract the analysis information from a published paper and write the missing Rivet routine, with intermediate code and physics reviews as autonomous quality control. The results are encouraging but nuanced: the routines compile with few syntax errors and the physics fidelity is reasonable, but most implementation errors stem from subtle ambiguities in the publication itself — not from LLM failures. That is, the system is only as good as the clarity of the paper it processes.</p>
</section>
<section id="language-models-fine-tuned-for-qft" class="level3">
<h3 class="anchored" data-anchor-id="language-models-fine-tuned-for-qft">Language models fine-tuned for QFT</h3>
<p>In a more exploratory spirit, <strong>Woodward et al.</strong> <span class="citation" data-cites="Woodward:2026">(Woodward et al. 2026)</span> carried out the first academic fine-tuning study of small reasoning models (7B parameters) dedicated specifically to quantum field theory. They generated over 2,500 synthetic problems and curated human-authored problems from arXiv and standard pedagogical resources. They trained with RL and SFT, and release the data, the pipeline, and ~200M tokens of reasoning traces. The work is valuable above all for what it reveals about the process: reasoning errors do not disappear with fine-tuning; they change character, and generalization to other physics domains is limited.</p>
<p>Two complementary benchmarking works help calibrate expectations. <strong>Yu et al.</strong> <span class="citation" data-cites="Yu:2026">(Yu et al. 2026)</span> built a small expert-curated question set in QFT and string theory and found that current LLMs approach ceiling performance on explicit derivations within stable conceptual frames, but systematically degrade when the task requires reconstructing omitted reasoning steps or reorganizing representations under global consistency constraints.</p>
</section>
<section id="the-roadmap-large-physics-models" class="level3">
<h3 class="anchored" data-anchor-id="the-roadmap-large-physics-models">The roadmap: Large Physics Models</h3>
<p>I close with an article that reports no concrete system but articulates a vision. <strong>Barman et al.</strong> <span class="citation" data-cites="Barman:2025">(Barman et al. 2025)</span> — a large group with authors from particle physics, computer science, and philosophy of science — proposed the concept of <em>Large Physics Models</em> (LPMs): foundation models specific to physics, integrated with symbolic reasoning modules, experimental data analysis, and literature synthesis. The article, published in <em>European Physical Journal C</em>, organizes the discussion into three pillars — Development, Evaluation, and Philosophical Reflection — and proposes an interdisciplinary collaboration structure inspired by experimental particle-physics collaborations.</p>
</section>
</section>
<section id="what-all-of-this-means" class="level2">
<h2 class="anchored" data-anchor-id="what-all-of-this-means">What all of this means</h2>
<p>The common thread of the works above is not “LLMs solve theoretical physics.” It is more specific and, I think, more interesting: <strong>LLMs are turning tools that already existed but were difficult to use into tools accessible via natural language</strong>. The pattern repeats:</p>
<ul>
<li><code>bsm_agent</code>: natural language <img src="https://latex.codecogs.com/png.latex?%5Cto"> symbolic backend.</li>
<li>DarkAgents: natural language <img src="https://latex.codecogs.com/png.latex?%5Cto"> compute pipeline + audit.</li>
<li>Hell &amp; Thiele: natural language + examples <img src="https://latex.codecogs.com/png.latex?%5Cto"> Maple code.</li>
<li><code>funsearch</code> + IBP: natural language (via code generation) <img src="https://latex.codecogs.com/png.latex?%5Cto"> heuristics evaluated by solver.</li>
<li>AgentRivet: published paper <img src="https://latex.codecogs.com/png.latex?%5Cto"> Rivet routine.</li>
</ul>
<p>In each case, the correct physics is guaranteed by a deterministic layer external to the LLM. The LLM solves the <em>interface</em> problem.</p>
<p>This has practical implications. The community does not need, for now, a model that derives on its own — it probably wouldn’t be trustworthy even if it existed. What is needed is <strong>investment in documentation, APIs, and wrappers that make existing tools accessible to an LLM</strong>, because the LLM already knows — in the statistical sense — how to use them. A <code>SARAH</code> with a well-designed API and machine-readable documentation would be immediately more useful, via LLM, than a <code>SARAH</code> without any of that but coupled to a larger generative model.</p>
<p>But lowering the technical barrier is not enough if physicists cannot cross the one that is already low. To the extent that LLMs turn natural language into tool invocations, the next bottleneck is not the interface — it is the user’s ability to read, audit, and correct what the model produces. Theoretical-physics training should include, in the near future, basic software skills: reading source code, version control, debugging symbolic packages. Not to turn physicists into programmers, but so that verification — which remains the central step of the craft — does not depend on a skill set that most theory PhDs do not receive today.</p>
<p>As theoretical physics evolves and new tools, methods, or theories emerge, building a deterministic layer external to the LLM — one that guarantees the correct application of the physics — will be the most important part for the community to reliably harness LLMs.</p>
</section>
<section id="what-is-missing" class="level2">
<h2 class="anchored" data-anchor-id="what-is-missing">What is missing</h2>
<p>I end with three directions that this survey leaves open and that probably deserve their own entries in this log:</p>
<ol type="1">
<li><strong>A concrete case study.</strong> Take one of the patterns above and run it end-to-end on a real BSM model (with unpublished details withheld), measuring time saved and errors encountered.</li>
<li><strong>Operational comparison between models.</strong> All the cited works treat “the LLM” as an interchangeable black box. The reality is that different models fail in different ways, and characterizing that for theoretical-physics tasks is a pending contribution.</li>
<li><strong>The verification problem.</strong> Almost all the systems described delegate correctness to a deterministic layer. But what happens when the deterministic layer does not exist or is itself hard to verify? That is the hardest use case, and it is only beginning to be explored.</li>
</ol>
</section>
<section id="references" class="level2">
<h2 class="anchored" data-anchor-id="references">References</h2>
<div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-Alexander:2026" class="csl-entry">
Alexander, Stephon, Benjamin Bradley, Loukas Gouskos, and Cooper Niu. 2026. <span>“Autonomous Discovery of Particle Physics Theories from Experimental Data.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2603.28935">https://arxiv.org/abs/2603.28935</a>.
</div>
<div id="ref-Barman:2025" class="csl-entry">
Barman, Kristian G., Sascha Caron, Emily Sullivan, et al. 2025. <span>“Large Physics Models: Towards a Collaborative Approach with <span>Large Language Models</span> and <span>Foundation Models</span>.”</span> <em>Eur. Phys. J. C</em> 85: 1066. <a href="https://doi.org/10.1140/epjc/s10052-025-14707-8">https://doi.org/10.1140/epjc/s10052-025-14707-8</a>.
</div>
<div id="ref-Costa:2026" class="csl-entry">
Costa, Antonio J., Caterina Doglioni, Christian Gütschow, Andrew D. Pilkington, and Sukanya Sinha. 2026. <span>“<span>AgentRivet</span>: An Automated System for Producing <span>Rivet</span> Routines from Journal Publications.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2606.13535">https://arxiv.org/abs/2606.13535</a>.
</div>
<div id="ref-Hell:2026" class="csl-entry">
Hell, Anamaria, and Leander Thiele. 2026. <span>“<span>LLMs</span> with in-Context Learning for Algorithmic Theoretical Physics.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2605.08212">https://arxiv.org/abs/2605.08212</a>.
</div>
<div id="ref-vonHippel:2025" class="csl-entry">
Hippel, Matt von, and Matthias Wilhelm. 2025. <span>“Refining Integration-by-Parts Reduction of <span>Feynman</span> Integrals with Machine Learning.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2502.05121">https://arxiv.org/abs/2502.05121</a>.
</div>
<div id="ref-Lucente:2026" class="csl-entry">
Lucente, Michele, Silvia Pascoli, Filippo Sala, and Matteo Zandi. 2026. <span>“<span>DarkAgents</span>.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2606.11157">https://arxiv.org/abs/2606.11157</a>.
</div>
<div id="ref-Saad:2026" class="csl-entry">
Saad, Shaikh. 2026. <span>“Large Language Model-Assisted Framework for <span>BSM</span> Model Building.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2606.21316">https://arxiv.org/abs/2606.21316</a>.
</div>
<div id="ref-Woodward:2026" class="csl-entry">
Woodward, Nathaniel S., Zhiqi Gao, Yurii Kvasiuk, Kendrick M. Smith, Frederic Sala, and Moritz Münchmeyer. 2026. <span>“Fine-Tuning Small Reasoning Models for <span>Quantum Field Theory</span>.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2604.18936">https://arxiv.org/abs/2604.18936</a>.
</div>
<div id="ref-Yu:2026" class="csl-entry">
Yu, Xingyang, Yinghuan Zhang, Yufei Zhang, and Zijun Cui. 2026. <span>“Grading the Unspoken: Evaluating Tacit Reasoning in <span>Quantum Field Theory</span> and <span>String Theory</span> with <span>LLMs</span>.”</span> <em>arXiv Preprint</em>. <a href="https://arxiv.org/abs/2604.14188">https://arxiv.org/abs/2604.14188</a>.
</div>
</div>


</section>


<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p><a href="https://github.com/saad-hep/bsm_agent">github.com/saad-hep/bsm_agent</a>.↩︎</p></li>
<li id="fn2"><p><a href="https://github.com/PhysicsZandi/DarkAgents">github.com/PhysicsZandi/DarkAgents</a>.↩︎</p></li>
</ol>
</section></div> ]]></description>
  <category>English</category>
  <category>reflection</category>
  <category>llms</category>
  <category>meta</category>
  <guid>https://moiseszeleny.github.io/posts/llms-in-particle-physics-now/</guid>
  <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>LLMs en física teórica: ¿dónde están ahora?</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/llms-en-fisica-de-particulas/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>English version available.</strong> This post is also available <a href="../../posts/llms-in-particle-physics-now/">in English</a>.</p>
</div>
</div>
</div>
<section id="la-cuenta-que-todavía-se-hace-a-mano" class="level2">
<h2 class="anchored" data-anchor-id="la-cuenta-que-todavía-se-hace-a-mano">La cuenta que todavía se hace a mano</h2>
<p>La física teórica de partículas es, para sorpresa de nadie, una disciplina donde la mayor parte de los cálculos se hacen a mano. Esto no es un defecto ni una nostalgia: es la forma en que un investigador internaliza el comportamiento de un modelo, detecta cancelaciones sutiles y desarrolla intuición física. Esa habilidad no va a desaparecer, ni debería. La derivación a pulso sigue siendo el entrenamiento central del oficio.</p>
<p>Pero no es la única forma de trabajar. Desde hace décadas existen herramientas computacionales diseñadas precisamente para automatizar partes del proceso: <code>FeynRules</code> y <code>SARAH</code> para construir modelos y derivar vértices; <code>MadGraph</code> para amplitudes y simulaciones en colisionadores; <code>SPheno</code> y <code>micrOMEGAs</code> para observables; <code>FeynCalc</code> y <code>Package-X</code> para computo de amplitudes, reducción tensorial y de lazos. La lista es larga. Y sin embargo, el uso rutinario de estas herramientas está lejos de ser universal. Muchos grupos siguen haciendo a mano lo que una computadora podría hacer en segundos, no porque desconfíen del resultado, sino porque la barrera de entrada a la herramienta es más alta que la barrera de salida del cálculo manual.</p>
<p>El problema, en mi experiencia, es triple:</p>
<ol type="1">
<li><strong>Documentación escasa u opaca.</strong> Manuales que asumen que el usuario ya conoce la arquitectura interna del paquete; tutoriales que se rompen con la primera actualización; ejemplos que cubren el caso trivial pero no el que uno necesita.</li>
<li><strong>Curvas de aprendizaje empinadas.</strong> Instalar, configurar y producir un primer resultado útil con <code>SARAH</code> o <code>FeynRules</code> puede tomar días. Cada herramienta tiene su propio lenguaje de entrada, sus propias convenciones, sus propios mensajes de error crípticos.</li>
<li><strong>Falta de puentes entre herramientas.</strong> El resultado de una se convierte manualmente en la entrada de otra, en formatos incompatibles, mediante scripts ad-hoc que cada grupo mantiene por separado.</li>
</ol>
<p>Incluso cuando una herramienta funciona, su resultado llega como caja negra —un Lagrangiano o un conjunto de reglas de Feynman producido por un pipeline interno opaco—. Para usar ese resultado en un cálculo a lazos, un teórico necesita creerlo hasta en las convenciones de signos. La única forma de conseguir esa confianza es derivarlo independientemente, lo cual borra buena parte del tiempo que la herramienta debía ahorrar. La derivación a mano no es solo pedagógica: es un paso de verificación que las herramientas automatizadas no reemplazan, solo reubican —ahora hay que verificar la salida de la herramienta contra la derivación propia de todas formas—.</p>
<p>El costo de <em>aprender la herramienta</em> frecuentemente supera el costo de <em>hacer la cuenta a mano</em> (lo que se encuentra mayormente claro en la literatura y el oficio). Y así, herramientas poderosas se subutilizan.</p>
</section>
<section id="lo-que-cambió-con-los-llms" class="level2">
<h2 class="anchored" data-anchor-id="lo-que-cambió-con-los-llms">Lo que cambió con los LLMs</h2>
<p>Esta es, creo, la contribución más genuina y menos publicitada de los modelos de lenguaje a la física teórica. No es —o no es todavía— que deriven mejor que un humano. Es que <strong>traducen la intención en lenguaje natural a la invocación concreta de una herramienta, su documentación o su código de entrada</strong>. Un LLM puede:</p>
<ul>
<li>Leer un Lagrangiano en notación estándar y producir el archivo de modelo correspondiente para <code>FeynRules</code> o <code>SARAH</code>, con las convenciones correctas.</li>
<li>Explicar un mensaje de error oscuro de <code>SPheno</code> en términos del modelo que uno está construyendo.</li>
<li>Generar el script de <code>MadGraph</code> para un proceso específico a partir de una descripción en lenguaje natural, incluyendo cortes y formatos de salida.</li>
<li>Escribir el pegamento entre dos herramientas —el <em>script</em> que toma la salida de una y la convierte en la entrada de la otra— evitando la fase de leer dos manuales distintos.</li>
</ul>
<p>La barrera que los LLMs están bajando no es entre el físico y la física, sino entre el físico y las herramientas computacionales que ya están en su máquina. Y la evidencia de que esto está ocurriendo no es anecdótica: en los últimos dos años ha aparecido un cuerpo de literatura que vale la pena repasar con algún detalle.</p>
</section>
<section id="lo-que-se-ha-construido-20222026" class="level2">
<h2 class="anchored" data-anchor-id="lo-que-se-ha-construido-20222026">Lo que se ha construido (2022–2026)</h2>
<p>Lo que sigue es un recorrido por trabajos recientes que, de una forma u otra, usan LLMs para tender puentes entre el físico teórico y las herramientas computacionales del oficio. No es exhaustivo; es representativo. La Figura&nbsp;1 resume la cronología: las publicaciones de física teórica con LLMs (eje inferior) se agrupan con un retraso de dos a tres años respecto a los hitos de los propios modelos (eje superior) —el tiempo que tarda la comunidad en asimilar cada nueva capacidad como herramienta de investigación—.</p>
<div id="cell-fig-timeline" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Mostrar el código</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.dates <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> mdates</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> datetime <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> datetime, timedelta</span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Estilo académico, paleta del sitio ---------------------------------------</span></span>
<span id="cb1-6">paper, ink, accent, grey <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#fcfcfa"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#22262b"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3a5a7a"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8a8f96"</span></span>
<span id="cb1-7">colors <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> {</span>
<span id="cb1-8">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>:    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#2a6f68"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># teal</span></span>
<span id="cb1-9">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#b45f06"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># amber</span></span>
<span id="cb1-10">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>:      <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6b4c7a"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># muted purple</span></span>
<span id="cb1-11">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#9e4a4a"</span>,  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># muted red</span></span>
<span id="cb1-12">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>:  accent,     <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># slate</span></span>
<span id="cb1-13">}</span>
<span id="cb1-14">plt.rcParams.update({</span>
<span id="cb1-15">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.family"</span>: <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"serif"</span>,</span>
<span id="cb1-16">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"font.size"</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,</span>
<span id="cb1-17">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.edgecolor"</span>: ink,</span>
<span id="cb1-18">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.linewidth"</span>: <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>,</span>
<span id="cb1-19">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"figure.facecolor"</span>: paper,</span>
<span id="cb1-20">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"axes.facecolor"</span>: paper,</span>
<span id="cb1-21">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"savefig.facecolor"</span>: paper,</span>
<span id="cb1-22">})</span>
<span id="cb1-23"></span>
<span id="cb1-24"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Datos --------------------------------------------------------------------</span></span>
<span id="cb1-25">llm_events <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-26">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2020</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GPT-3"</span>),</span>
<span id="cb1-27">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2022</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ChatGPT"</span>),</span>
<span id="cb1-28">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2023</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"GPT-4"</span>),</span>
<span id="cb1-29">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2023</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Llama 2"</span>),</span>
<span id="cb1-30">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">14</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Claude 3"</span>),</span>
<span id="cb1-31">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">12</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Gemini 2 / o1"</span>),</span>
<span id="cb1-32">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># etiqueta manual más abajo</span></span>
<span id="cb1-33">]</span>
<span id="cb1-34">phys_events <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-35">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Barman (LPMs)"</span>,          <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>),</span>
<span id="cb1-36">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">7</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"v. Hippel (IBP)"</span>,        <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>),</span>
<span id="cb1-37">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Albert"</span>,                 <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-38">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Yu (QFT/strings)"</span>,       <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>),</span>
<span id="cb1-39">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Woodward (QFT)"</span>,         <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>),</span>
<span id="cb1-40">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Hell &amp; Thiele</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">(LLM+CAS)"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>),</span>
<span id="cb1-41">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>),  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"DarkAgents"</span>,             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-42">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"AgentRivet"</span>,             <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>),</span>
<span id="cb1-43">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bom (DE)"</span>,               <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-44">    (datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">19</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bsm_agent"</span>,              <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>),</span>
<span id="cb1-45">]</span>
<span id="cb1-46">events_2025 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [e <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> e <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> phys_events <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> e[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>].year <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>]</span>
<span id="cb1-47">events_2026 <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [e <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> e <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> phys_events <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> e[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>].year <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>]</span>
<span id="cb1-48"></span>
<span id="cb1-49"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># --- Figura: eje quiebrado en el panel inferior -------------------------------</span></span>
<span id="cb1-50">fig <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> plt.figure(figsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.2</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">5.4</span>))</span>
<span id="cb1-51">gs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_gridspec(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, height_ratios<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.7</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.3</span>], width_ratios<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.70</span>])</span>
<span id="cb1-52"></span>
<span id="cb1-53"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Panel superior: hitos de LLMs</span></span>
<span id="cb1-54">ax_top <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, :])</span>
<span id="cb1-55">ax_top.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-56"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i, (date, label) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(llm_events):</span>
<span id="cb1-57">    ax_top.vlines(date, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-58">    ax_top.plot(date, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-59">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>:</span>
<span id="cb1-60">        ax_top.text(date, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">25</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>,</span>
<span id="cb1-61">                    fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-62">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span>:</span>
<span id="cb1-63">        ax_top.text(date, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">25</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>,</span>
<span id="cb1-64">                    fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-65"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Etiqueta del último hito arriba, alineada a la derecha para no salirse</span></span>
<span id="cb1-66">ax_top.text(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">17</span>), <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.12</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Modelos de</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">razonamiento"</span>,</span>
<span id="cb1-67">            rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">8.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-68">ax_top.text(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2019</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"LLMs"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb1-69">            fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>)</span>
<span id="cb1-70">ax_top.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>)</span>
<span id="cb1-71">ax_top.set_yticks([])</span>
<span id="cb1-72">ax_top.xaxis.set_major_locator(mdates.YearLocator())</span>
<span id="cb1-73">ax_top.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%Y"</span>))</span>
<span id="cb1-74">ax_top.xaxis.set_minor_locator(mdates.MonthLocator(interval<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>))</span>
<span id="cb1-75">plt.setp(ax_top.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>)</span>
<span id="cb1-76">ax_top.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-77"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-78">    ax_top.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-79">ax_top.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-80">ax_top.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2019</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">9</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-81"></span>
<span id="cb1-82"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Panel inferior izquierdo: 2025</span></span>
<span id="cb1-83">ax_l <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>])</span>
<span id="cb1-84">ax_l.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-85">ax_l.axvspan(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>),</span>
<span id="cb1-86">             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.06</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-87"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> i, (date, label, cat) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">enumerate</span>(events_2025):</span>
<span id="cb1-88">    c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> colors[cat]</span>
<span id="cb1-89">    side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> i <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span></span>
<span id="cb1-90">    y_dot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.15</span></span>
<span id="cb1-91">    y_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.23</span></span>
<span id="cb1-92">    ax_l.vlines(date, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, y_dot, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-93">    ax_l.plot(date, y_dot, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-94">    va <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span></span>
<span id="cb1-95">    ax_l.text(date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> timedelta(days<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>), y_text, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>va,</span>
<span id="cb1-96">              fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.5</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-97">ax_l.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>)</span>
<span id="cb1-98">ax_l.set_yticks([])</span>
<span id="cb1-99">ax_l.xaxis.set_major_locator(mdates.MonthLocator())</span>
<span id="cb1-100">ax_l.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b"</span>))</span>
<span id="cb1-101">plt.setp(ax_l.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>)</span>
<span id="cb1-102">ax_l.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-103">ax_l.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2024</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2025</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>))</span>
<span id="cb1-104"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-105">    ax_l.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-106">ax_l.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-107"></span>
<span id="cb1-108"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Panel inferior derecho: 2026 ampliado (con etiquetas)</span></span>
<span id="cb1-109">ax_r <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> fig.add_subplot(gs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span>
<span id="cb1-110">ax_r.axhline(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>)</span>
<span id="cb1-111">ax_r.axvspan(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>),</span>
<span id="cb1-112">             color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, alpha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.06</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)</span>
<span id="cb1-113">zoom_levels <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-114">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.20</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Albert</span></span>
<span id="cb1-115">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.20</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Yu</span></span>
<span id="cb1-116">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Woodward</span></span>
<span id="cb1-117">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.38</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Hell</span></span>
<span id="cb1-118">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.56</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># DarkAgents</span></span>
<span id="cb1-119">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.56</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># AgentRivet</span></span>
<span id="cb1-120">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Bom</span></span>
<span id="cb1-121">    (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.74</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>,  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>),  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># bsm_agent</span></span>
<span id="cb1-122">]</span>
<span id="cb1-123"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (date, label, cat), (lvl, side, xoff) <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">zip</span>(events_2026, zoom_levels):</span>
<span id="cb1-124">    c <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> colors[cat]</span>
<span id="cb1-125">    y_dot <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> lvl</span>
<span id="cb1-126">    y_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> (lvl <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.08</span>)</span>
<span id="cb1-127">    x_text <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> date <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> timedelta(days<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>xoff)</span>
<span id="cb1-128">    ax_r.vlines(date, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, y_dot, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.2</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span>
<span id="cb1-129">    ax_r.plot(date, y_dot, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">3.5</span>, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-130">    va <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> side <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span></span>
<span id="cb1-131">    ha <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> xoff <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span></span>
<span id="cb1-132">    ax_r.text(x_text, y_text, label, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ha, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>va,</span>
<span id="cb1-133">              fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">7.0</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>c, zorder<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-134">ax_r.set_ylim(<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.95</span>)</span>
<span id="cb1-135">ax_r.set_yticks([])</span>
<span id="cb1-136">ax_r.xaxis.set_major_locator(mdates.MonthLocator())</span>
<span id="cb1-137">ax_r.xaxis.set_major_formatter(mdates.DateFormatter(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b"</span>))</span>
<span id="cb1-138">plt.setp(ax_r.get_xticklabels(), rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>)</span>
<span id="cb1-139">ax_r.tick_params(axis<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>, colors<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, length<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)</span>
<span id="cb1-140">ax_r.set_xlim(datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>), datetime(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2026</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb1-141"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> s <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"top"</span>]:</span>
<span id="cb1-142">    ax_r.spines[s].set_visible(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>)</span>
<span id="cb1-143">ax_r.spines[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bottom"</span>].set_color(ink)</span>
<span id="cb1-144"></span>
<span id="cb1-145"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Marcas de quiebre en la unión de los dos ejes inferiores</span></span>
<span id="cb1-146">kw <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(transform<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax_l.transAxes, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, clip_on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb1-147">ax_l.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.96</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.99</span>), (<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-148">ax_l.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.96</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.99</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-149">kw <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">dict</span>(transform<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ax_r.transAxes, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>ink, clip_on<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">False</span>, lw<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.8</span>)</span>
<span id="cb1-150">ax_r.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.01</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>), (<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-151">ax_r.plot((<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.01</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>), (<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.012</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.018</span>), <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">**</span>kw)</span>
<span id="cb1-152"></span>
<span id="cb1-153"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Etiqueta del eje inferior</span></span>
<span id="cb1-154">fig.text(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.02</span>, <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.30</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Física teórica"</span>, ha<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"left"</span>, va<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"center"</span>,</span>
<span id="cb1-155">         fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>accent, weight<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bold"</span>, rotation<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">90</span>)</span>
<span id="cb1-156"></span>
<span id="cb1-157"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Leyenda de categorías (a nivel de figura, centrada entre paneles inferiores)</span></span>
<span id="cb1-158"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> matplotlib.lines <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> Line2D</span>
<span id="cb1-159">legend_elements <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [</span>
<span id="cb1-160">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"model"</span>],</span>
<span id="cb1-161">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Model building"</span>),</span>
<span id="cb1-162">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"symbolic"</span>],</span>
<span id="cb1-163">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Simbólico/ CAS"</span>),</span>
<span id="cb1-164">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"qft"</span>],</span>
<span id="cb1-165">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"QFT"</span>),</span>
<span id="cb1-166">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"analysis"</span>],</span>
<span id="cb1-167">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Análisis experimental"</span>),</span>
<span id="cb1-168">    Line2D([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>], marker<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"o"</span>, color<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"w"</span>, markerfacecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>colors[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"roadmap"</span>],</span>
<span id="cb1-169">           markersize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span>, label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Roadmap"</span>),</span>
<span id="cb1-170">]</span>
<span id="cb1-171">ax_top.legend(handles<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>legend_elements, loc<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"lower left"</span>, fontsize<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">6.8</span>,</span>
<span id="cb1-172">            frameon<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>, facecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>paper, edgecolor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>grey,</span>
<span id="cb1-173">            ncol<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, bbox_to_anchor<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.0</span>, <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.31</span>))</span>
<span id="cb1-174"></span>
<span id="cb1-175">fig.tight_layout(rect<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>[<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.04</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>])</span>
<span id="cb1-176">plt.show()</span></code></pre></div></div>
</details>
<div class="cell-output cell-output-display">
<div id="fig-timeline" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-timeline-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://moiseszeleny.github.io/posts/llms-en-fisica-de-particulas/index_files/figure-html/fig-timeline-output-1.png" width="680" height="508" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-timeline-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figura&nbsp;1: Cronología de hitos en LLMs (arriba) y de trabajos de física teórica que los adoptan (abajo). El eje inferior usa un quiebre: a la izquierda, los dos trabajos de 2025; a la derecha, el grupo denso de marzo–junio de 2026 ampliado.
</figcaption>
</figure>
</div>
</div>
</div>
<section id="construcción-de-modelos-y-pipelines-fenomenológicos" class="level3">
<h3 class="anchored" data-anchor-id="construcción-de-modelos-y-pipelines-fenomenológicos">Construcción de modelos y pipelines fenomenológicos</h3>
<p><strong><code>bsm_agent</code></strong> <span class="citation" data-cites="Saad:2026">(Saad 2026)</span> es quizá el ejemplo más limpio del patrón que describo arriba. El usuario especifica, en lenguaje natural, los números cuánticos de nuevas partículas escalares o fermiónicas. Un LLM interpreta esa especificación, resuelve ambigüedades mediante pasos de confirmación, y dispara un <em>backend</em> simbólico determinista —escrito en Python, sin participación del LLM— que construye el Lagrangiano renormalizable, verifica anomalías de <em>gauge</em>, expande operadores en campos componentes, deriva las condiciones estacionarias de rompimiento electrodébil y calcula matrices de masa a nivel árbol. El LLM es el <em>orquestador</em>; la física correcta la garantiza el código simbólico.<sup>1</sup></p>
<p><strong>DarkAgents</strong> <span class="citation" data-cites="Lucente:2026">(Lucente et&nbsp;al. 2026)</span> aplica un esquema similar de múltiples agentes al dominio de física de astropartículas. El sistema construye pipelines completos: parte de un modelo con invariancia de escala clásica, calcula transiciones de fase de primer orden cosmológicas, y ajusta el espectro de ondas gravitacionales resultante a los datos de NANOGrav. Lo distintivo es que DarkAgents produce además un <em>reporte de auditoría</em> de los supuestos y <em>priors</em> que entran en cada etapa —una capa de transparencia que el cálculo hecho puramente a mano rara vez documenta con ese nivel de sistematicidad—. En sus pruebas, el sistema identificó inconsistencias en ajustes publicados previamente y produjo ajustes nuevos usando plantillas de ondas gravitacionales por flujo disipativo. El código está disponible públicamente.<sup>2</sup></p>
</section>
<section id="llm-sistema-de-álgebra-computacional" class="level3">
<h3 class="anchored" data-anchor-id="llm-sistema-de-álgebra-computacional">LLM + sistema de álgebra computacional</h3>
<p>Uno de los resultados más concretos y menos espectaculares —en el buen sentido— es el de <strong>Hell y Thiele</strong> <span class="citation" data-cites="Hell:2026">(Hell y Thiele 2026)</span>. Acoplan Claude (un LLM comercial de frontera) con Maple (un sistema de álgebra computacional) y evalúan si el sistema resuelve tareas algorítmicas de física teórica: perturbaciones cosmológicas en teorías modificadas de gravedad. El LLM recibe ejemplos resueltos como contexto (<em>in-context learning</em>) y luego se le pide resolver problemas análogos usando Maple como <em>runtime</em>. El hallazgo es mesurado pero significativo: con suficientes ejemplos trabajados, el sistema resuelve la mayoría de los problemas de prueba. Los errores típicos no son de cálculo (eso lo garantiza Maple) sino de <em>formulación</em>: interpretar mal una convención, aplicar una plantilla donde no corresponde.</p>
<p>El patrón es el mismo: el LLM no deriva; el LLM traduce la intención al lenguaje de la herramienta que sí deriva.</p>
</section>
<section id="reducción-de-integrales-de-feynman" class="level3">
<h3 class="anchored" data-anchor-id="reducción-de-integrales-de-feynman">Reducción de integrales de Feynman</h3>
<p>La reducción por integración por partes (IBP) de integrales de Feynman es uno de los cuellos de botella computacionales más conocidos en física teórica de altas energías y en física de ondas gravitacionales. La eficiencia de la reducción depende críticamente de heurísticas para seleccionar qué identidades de IBP usar primero —un problema de optimización combinatoria que tradicionalmente se resuelve con criterios artesanales—.</p>
<p><strong>von Hippel y Wilhelm</strong> <span class="citation" data-cites="vonHippel:2025">(Hippel y Wilhelm 2025)</span> atacaron este problema usando <code>funsearch</code>, una variante de programación genética que genera código mediante un LLM. El sistema explora el espacio de heurísticas posibles, evalúa cada una contra <em>benchmarks</em> de reducción, y evoluciona las mejores. Los autores reportan que el método redescubrió las heurísticas de vanguardia incorporadas recientemente en solvers de IBP <em>y en un caso encontró una pequeña mejora sobre el estado del arte</em>. De nuevo: el LLM no deriva integrales; genera candidatos de heurística que un solucionador determinista evalúa.</p>
</section>
<section id="exploración-autónoma-de-espacios-de-teorías" class="level3">
<h3 class="anchored" data-anchor-id="exploración-autónoma-de-espacios-de-teorías">Exploración autónoma de espacios de teorías</h3>
<p><strong>Albert</strong> <span class="citation" data-cites="Alexander:2026">(Alexander et&nbsp;al. 2026)</span> merece una mención aparte, aunque su arquitectura se distancia del patrón “LLM como puente a herramientas”. Es un marco neuro-simbólico que codifica la física de partículas como un lenguaje formal —simetrías, partículas, interacciones— con una gramática basada en reglas. Esto elimina las alucinaciones: el modelo genera secuencias tokenizadas que son sintácticamente válidas por construcción. Un entorno de aprendizaje por refuerzo impone restricciones teóricas de primeros principios, calcula observables con correcciones radiativas y evalúa la verosimilitud estadística (<img src="https://latex.codecogs.com/png.latex?%5Cchi%5E2">) contra datos experimentales. Entrenado únicamente con datos del LEP —que no contienen evidencia directa del quark top—, Albert redescubrió el Modelo Estándar e infirió autónomamente la necesidad y propiedades del quark top, prediciendo su masa en <img src="https://latex.codecogs.com/png.latex?178.9%20%5Cpm%205.0%5C%20%5Ctext%7BGeV%7D">, consistente con la medición moderna del LHC.</p>
<p>Este trabajo es relevante no porque use un LLM —no lo usa en el sentido convencional; es un transformer entrenado para una tarea específica— sino porque demuestra que el espacio de teorías BSM, cuya explosión combinatoria es el argumento estándar contra la exploración sistemática, puede navegarse con arquitecturas modernas siempre que las restricciones físicas se impongan como parte del entorno, no como parte del modelo generativo.</p>
</section>
<section id="de-papers-a-código-de-análisis" class="level3">
<h3 class="anchored" data-anchor-id="de-papers-a-código-de-análisis">De <em>papers</em> a código de análisis</h3>
<p>Uno de los problemas crónicos de la fenomenología de colisionadores es la brecha entre lo que un <em>paper</em> del ATLAS o CMS reporta y el código que permite comparar un modelo nuevo contra esa medición. El sistema <strong>Rivet</strong> preserva análisis experimentales como rutinas de C++ que cualquier generador de Monte Carlo puede invocar, pero la cobertura es incompleta: solo el 39% de las mediciones tiene una rutina pública documentada.</p>
<p><strong>AgentRivet</strong> <span class="citation" data-cites="Costa:2026">(Costa et&nbsp;al. 2026)</span> usa un flujo multi-etapa con LLMs comerciales (OpenAI, Anthropic, Google) para extraer la información del análisis de un <em>paper</em> publicado y escribir la rutina de Rivet faltante, con revisiones intermedias de código y física como control de calidad autónomo. Los resultados son alentadores pero con matices importantes: las rutinas compilan con pocos errores de sintaxis y la fidelidad física es razonable, pero la mayoría de los errores de implementación provienen de ambigüedades sutiles en la propia publicación —no de fallos del LLM—. Es decir, el sistema es tan bueno como la claridad del <em>paper</em> que procesa.</p>
</section>
<section id="modelos-de-lenguaje-afinados-para-qft" class="level3">
<h3 class="anchored" data-anchor-id="modelos-de-lenguaje-afinados-para-qft">Modelos de lenguaje afinados para QFT</h3>
<p>En un espíritu más exploratorio, <strong>Woodward et al.</strong> <span class="citation" data-cites="Woodward:2026">(Woodward et&nbsp;al. 2026)</span> realizaron el primer estudio académico de <em>fine-tuning</em> de modelos pequeños de razonamiento (7B parámetros) específicamente para teoría cuántica de campos. Generaron más de 2500 problemas sintéticos y curaron problemas de autoría humana desde arXiv y recursos pedagógicos estándar. Entrenaron con RL y SFT, y liberan los datos, el pipeline y ~200M tokens de trazas de razonamiento. El trabajo es valioso sobre todo por lo que muestra del proceso: los errores de razonamiento no desaparecen con el ajuste fino, cambian de carácter, y la generalización a otros dominios de la física es limitada.</p>
<p>Dos trabajos complementarios de <em>benchmarking</em> ayudan a calibrar expectativas. <strong>Yu et al.</strong> <span class="citation" data-cites="Yu:2026">(Yu et&nbsp;al. 2026)</span> construyeron un conjunto pequeño de preguntas curadas por expertos en QFT y teoría de cuerdas y encontraron que los LLMs actuales bordean el techo en derivaciones explícitas dentro de marcos conceptuales estables, pero se degradan sistemáticamente cuando la tarea requiere reconstruir pasos omitidos o reorganizar representaciones bajo restricciones globales de consistencia.</p>
</section>
<section id="la-hoja-de-ruta-large-physics-models" class="level3">
<h3 class="anchored" data-anchor-id="la-hoja-de-ruta-large-physics-models">La hoja de ruta: Large Physics Models</h3>
<p>Cierro con un artículo que no reporta un sistema concreto sino que articula una visión. <strong>Barman et al.</strong> <span class="citation" data-cites="Barman:2025">(Barman et&nbsp;al. 2025)</span> —un grupo grande con autores de física de partículas, ciencia de la computación y filosofía de la ciencia— propusieron el concepto de <em>Large Physics Models</em> (LPMs): modelos fundacionales específicos para física, integrados con módulos de razonamiento simbólico, análisis de datos experimentales y sintesis de literatura. El artículo, publicado en <em>European Physical Journal C</em>, organiza la discusión en tres pilares —Desarrollo, Evaluación y Reflexión Filosófica— y propone una estructura de colaboración interdisciplinaria inspirada en las colaboraciones experimentales de física de partículas.</p>
</section>
</section>
<section id="qué-significa-todo-esto" class="level2">
<h2 class="anchored" data-anchor-id="qué-significa-todo-esto">Qué significa todo esto</h2>
<p>El hilo conductor de los trabajos anteriores no es “los LLMs resuelven física teórica”. Es más específico y, creo, más interesante: <strong>los LLMs están convirtiendo herramientas que ya existían pero eran difíciles de usar en herramientas accesibles mediante lenguaje natural</strong>. El patrón se repite:</p>
<ul>
<li><code>bsm_agent</code>: lenguaje natural <img src="https://latex.codecogs.com/png.latex?%5Cto"> backend simbólico.</li>
<li>DarkAgents: lenguaje natural <img src="https://latex.codecogs.com/png.latex?%5Cto"> pipeline de cómputo + auditoría.</li>
<li>Hell &amp; Thiele: lenguaje natural + ejemplos <img src="https://latex.codecogs.com/png.latex?%5Cto"> código de Maple.</li>
<li><code>funsearch</code> + IBP: lenguaje natural (vía generación de código) <img src="https://latex.codecogs.com/png.latex?%5Cto"> heurísticas evaluadas por solver.</li>
<li>AgentRivet: <em>paper</em> publicado <img src="https://latex.codecogs.com/png.latex?%5Cto"> rutina de Rivet.</li>
</ul>
<p>En todos los casos, la física correcta la garantiza una capa determinista externa al LLM. El LLM resuelve el problema de <em>interfaz</em>.</p>
<p>Esto tiene implicaciones prácticas. La comunidad no necesita, por ahora, un modelo que derive de manera autónoma —probablemente no sería confiable aunque existiera—. Lo que se requiere es inversión en documentación, APIs y <em>wrappers</em> que hagan accesibles las herramientas existentes a un LLM, porque el LLM ya sabe —en el sentido estadístico— cómo utilizarlas. Un <code>SARAH</code> con una API bien diseñada y documentación <em>legible para la máquina</em> sería inmediatamente más útil, vía LLM, que un <code>SARAH</code> sin esos recursos pero acoplado a un modelo generativo más grande.</p>
<p>Pero bajar la barrera técnica no basta si los físicos no pueden cruzar la que ya está baja. En la medida en que los LLMs convierten el lenguaje natural en invocaciones de herramientas, el siguiente cuello de botella no es la interfaz — es la capacidad del usuario para leer, auditar y corregir lo que el modelo produce. La formación en física teórica deberá incluir, en el futuro cercano, habilidades básicas de software: lectura de código fuente, control de versiones, depuración de paquetes simbólicos. No para convertir a los físicos en programadores, sino para que la verificación —que sigue siendo el paso central del oficio— no dependa de habilidades que la mayoría de los doctorados en teoría no reciben hoy.</p>
<p>A medida que la física teórica evolucione y surjan nuevas herramientas, métodos o teorías, la construcción de una capa determinista externa al LLM —que garantice la correcta aplicación de la física— será la parte más importante para que la comunidad pueda aprovechar los LLMs de manera confiable.</p>
</section>
<section id="lo-que-falta" class="level2">
<h2 class="anchored" data-anchor-id="lo-que-falta">Lo que falta</h2>
<p>Termino con tres direcciones que este recorrido deja abiertas y que probablemente merezcan entradas propias en esta bitácora:</p>
<ol type="1">
<li><strong>Un estudio de caso concreto.</strong> Tomar uno de los patrones anteriores y ejecutarlo de extremo a extremo en un modelo BSM real (con los detalles no publicados reservados), midiendo tiempo ahorrado y errores encontrados.</li>
<li><strong>Comparación operativa entre modelos.</strong> Todos los trabajos citados usan “el LLM” como una caja negra intercambiable. La realidad es que modelos distintos fallan de modos distintos, y caracterizar eso para tareas de física teórica es una contribución pendiente.</li>
<li><strong>El problema de la verificación.</strong> Casi todos los sistemas descritos delegan la corrección a una capa determinista. Pero ¿qué pasa cuando la capa determinista no existe o es ella misma difícil de verificar? Ése es el caso de uso más duro, y apenas empieza a explorarse.</li>
</ol>
</section>
<section id="referencias" class="level2">
<h2 class="anchored" data-anchor-id="referencias">Referencias</h2>
<div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-Alexander:2026" class="csl-entry">
Alexander, Stephon, Benjamin Bradley, Loukas Gouskos, y Cooper Niu. 2026. <span>«Autonomous Discovery of Particle Physics Theories from Experimental Data»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2603.28935">https://arxiv.org/abs/2603.28935</a>.
</div>
<div id="ref-Barman:2025" class="csl-entry">
Barman, Kristian G., Sascha Caron, Emily Sullivan, et&nbsp;al. 2025. <span>«Large Physics Models: Towards a collaborative approach with <span>Large Language Models</span> and <span>Foundation Models</span>»</span>. <em>Eur. Phys. J. C</em> 85: 1066. <a href="https://doi.org/10.1140/epjc/s10052-025-14707-8">https://doi.org/10.1140/epjc/s10052-025-14707-8</a>.
</div>
<div id="ref-Costa:2026" class="csl-entry">
Costa, Antonio J., Caterina Doglioni, Christian Gütschow, Andrew D. Pilkington, y Sukanya Sinha. 2026. <span>«<span>AgentRivet</span>: an automated system for producing <span>Rivet</span> routines from journal publications»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2606.13535">https://arxiv.org/abs/2606.13535</a>.
</div>
<div id="ref-Hell:2026" class="csl-entry">
Hell, Anamaria, y Leander Thiele. 2026. <span>«<span>LLMs</span> with in-context learning for Algorithmic Theoretical Physics»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2605.08212">https://arxiv.org/abs/2605.08212</a>.
</div>
<div id="ref-vonHippel:2025" class="csl-entry">
Hippel, Matt von, y Matthias Wilhelm. 2025. <span>«Refining Integration-by-Parts Reduction of <span>Feynman</span> Integrals with Machine Learning»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2502.05121">https://arxiv.org/abs/2502.05121</a>.
</div>
<div id="ref-Lucente:2026" class="csl-entry">
Lucente, Michele, Silvia Pascoli, Filippo Sala, y Matteo Zandi. 2026. <span>«<span>DarkAgents</span>»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2606.11157">https://arxiv.org/abs/2606.11157</a>.
</div>
<div id="ref-Saad:2026" class="csl-entry">
Saad, Shaikh. 2026. <span>«Large Language Model-Assisted Framework for <span>BSM</span> Model Building»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2606.21316">https://arxiv.org/abs/2606.21316</a>.
</div>
<div id="ref-Woodward:2026" class="csl-entry">
Woodward, Nathaniel S., Zhiqi Gao, Yurii Kvasiuk, Kendrick M. Smith, Frederic Sala, y Moritz Münchmeyer. 2026. <span>«Fine-Tuning Small Reasoning Models for <span>Quantum Field Theory</span>»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2604.18936">https://arxiv.org/abs/2604.18936</a>.
</div>
<div id="ref-Yu:2026" class="csl-entry">
Yu, Xingyang, Yinghuan Zhang, Yufei Zhang, y Zijun Cui. 2026. <span>«Grading the Unspoken: Evaluating Tacit Reasoning in <span>Quantum Field Theory</span> and <span>String Theory</span> with <span>LLMs</span>»</span>. <em>arXiv preprint</em>. <a href="https://arxiv.org/abs/2604.14188">https://arxiv.org/abs/2604.14188</a>.
</div>
</div>


</section>


<div id="quarto-appendix" class="default"><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Notas</h2>

<ol>
<li id="fn1"><p><a href="https://github.com/saad-hep/bsm_agent">github.com/saad-hep/bsm_agent</a>.↩︎</p></li>
<li id="fn2"><p><a href="https://github.com/PhysicsZandi/DarkAgents">github.com/PhysicsZandi/DarkAgents</a>.↩︎</p></li>
</ol>
</section></div> ]]></description>
  <category>Español</category>
  <category>reflexión</category>
  <category>llms</category>
  <category>meta</category>
  <guid>https://moiseszeleny.github.io/posts/llms-en-fisica-de-particulas/</guid>
  <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Por qué existe esta bitácora</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/por-que-existe-esta-bitacora/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Versión en inglés disponible.</strong> Esta entrada también está disponible <a href="../../posts/why-this-log-exists/">en inglés</a>.</p>
</div>
</div>
</div>
<section id="por-qué-inicio-esta-bitácora" class="level2">
<h2 class="anchored" data-anchor-id="por-qué-inicio-esta-bitácora">Por qué inicio esta bitácora</h2>
<p>Uso modelos de lenguaje en mi investigación cotidiana, y me he cansado de dos narrativas igualmente inútiles: la que dice que los LLMs están a punto de hacer física por nosotros, y la que los trata como loros estocásticos inútiles para cualquier cosa seria. Ninguna corresponde con lo que realmente experimento en el escritorio.</p>
<p>Lo que experimento es más interesante y más mundano: una herramienta <strong>genuinamente útil para ciertas subtareas</strong>, poco fiable para otras, y ocasionalmente equivocada con seguridad de formas que cuestan tiempo real. La única manera de saber cuál es cuál es llevar un registro. Así que esto es ese registro — una libreta de laboratorio para un tipo particular de instrumento.</p>
<p>El público que tengo en mente son otros investigadores, particularmente en física teórica y de partículas. Si trabajas en <strong>fenomenología BSM</strong> — sectores escalar o de gauge extendidos, mecanismos de masa de neutrinos, materia oscura, sabor, signaturas en colisionadores — espero que algunas de estas notas te ahorren el trabajo de redescubrir los mismos modos de fallo que yo.</p>
</section>
<section id="dónde-ayudan-los-llms-actualmente-y-dónde-no" class="level2">
<h2 class="anchored" data-anchor-id="dónde-ayudan-los-llms-actualmente-y-dónde-no">Dónde ayudan los LLMs actualmente (y dónde no)</h2>
<p>Esta es una instantánea de mi opinión actual y revisable. Parte del punto de la bitácora es hacer estos reclamos responsables con el tiempo.</p>
<p><strong>Dónde me ayudan hoy:</strong></p>
<ul>
<li><strong>Código <em>boilerplate</em> y de pegamento.</strong> Parsear salida <code>SLHA</code>, cablear barridos, reorganizar datos para gráficas, andamiaje de <code>matplotlib</code>/<code>pandas</code>. Rápido de escribir, rápido de verificar.</li>
<li><strong>Traducir entre herramientas y formalismos.</strong> Bosquejar un fragmento de modelo en <code>FeynRules</code> o <code>SARAH</code>, convertir un término del Lagrangiano en un vértice aproximado, mover un fragmento entre Mathematica y Python.</li>
<li><strong>Triaje y orientación en la literatura.</strong> Obtener un primer mapa de un rincón desconocido de la literatura, o reformular un resultado recordado a medias en términos buscables — siempre como un <em>apuntador</em>, nunca como una cita.</li>
<li><strong>Rubber-ducking de derivaciones.</strong> Recorrer verbalmente una contracción de índices, una reducción de integral de lazo o un argumento de simetría, donde sigo siendo yo quien revisa cada línea.</li>
</ul>
<p><strong>Dónde (aún) no ayudan:</strong></p>
<ul>
<li><strong>Cualquier cosa que requiera una derivación garantidamente correcta.</strong> Signos, factores de 2, convenciones de <img src="https://latex.codecogs.com/png.latex?%5Cgamma%5E5"> y sutilezas de <img src="https://latex.codecogs.com/png.latex?%5Coverline%7B%5Ctext%7BMS%7D%7D"> son justamente donde la salida que suena fluida es más peligrosa.</li>
<li><strong>Valores numéricos y citas.</strong> Razones de ramificación o listas de referencias fabricadas con seguridad siguen siendo un riesgo real.</li>
<li><strong>Construcción de modelos genuinamente novedosa.</strong> Recombinan lo conocido bien; no producen de forma fiable la restricción en la que no había pensado.</li>
</ul>
<p>Un ejemplo concreto de la trampa: un LLM producirá felizmente una contribución a un lazo que <em>parece</em> correcta — estructura correcta, prefactor plausible — y estará mal por un signo o un <img src="https://latex.codecogs.com/png.latex?1/(4%5Cpi)%5E2">. La expresión se compone bonitamente:</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5CDelta%20a_%5Cmu%20%5C;%5Csim%5C;%20%5Cfrac%7Bm_%5Cmu%5E2%7D%7B16%5Cpi%5E2%20M%5E2%7D%5C,%20%5Csum_i%20c_i%5C,%20F(x_i),%0A"></p>
<p>y la única defensa es derivarla uno mismo y tratar la versión del modelo como una hipótesis a verificar, no como una respuesta.</p>
</section>
<section id="qué-esperar-aquí" class="level2">
<h2 class="anchored" data-anchor-id="qué-esperar-aquí">Qué esperar aquí</h2>
<ul>
<li><strong>Tareas reales, no demos de juguete.</strong> Cada entrada es algo que realmente necesitaba hacer.</li>
<li><strong>El flujo de trabajo completo</strong>, incluyendo los prompts y los callejones sin salida — no una selección de momentos estelares limpiada.</li>
<li><strong>Reportes honestos de fracasos.</strong> Cuando un modelo pierde una hora, eso también es una entrada; a menudo son las más útiles.</li>
<li><strong>Estimaciones de tiempo ahorrado</strong>, declaradas tan honestamente como pueda, con la salvedad de que el tiempo de verificación es parte del balance.</li>
<li><strong>Notas de reproducibilidad.</strong> Donde puedo, cada entrada enlaza a código o un cuaderno para que puedas ejecutarlo tú mismo. Donde no puedo, diré por qué.</li>
<li><strong>Sin exageraciones.</strong> Si un LLM no ayudó, la entrada lo dirá claramente.</li>
</ul>
</section>
<section id="una-nota-sobre-resultados-no-publicados" class="level2">
<h2 class="anchored" data-anchor-id="una-nota-sobre-resultados-no-publicados">Una nota sobre resultados no publicados</h2>
<p>Parte de este trabajo toca proyectos en curso. <strong>Los detalles ligados a resultados no publicados — modelos específicos, puntos de parámetro, hallazgos numéricos — se reservarán hasta que el <em>preprint</em> correspondiente sea público.</strong> En esos casos documentaré el <em>método y flujo de trabajo</em> (que es la parte transferible) reteniendo el resultado en sí, y actualizaré la entrada con un enlace una vez que el preprint salga. El material de reproducibilidad solo apuntará a cosas que esté en libertad de compartir.</p>
<p>Esa es la carta de intención. La siguiente entrada será una tarea real.</p>
<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Nota de reproducibilidad.</strong> Esta entrada inaugural es una declaración de intenciones y no tiene código asociado. Las entradas futuras enlazarán a un repositorio o cuaderno aquí.</p>
</div>
</div>
</div>


</section>

 ]]></description>
  <category>Español</category>
  <category>meta</category>
  <category>flujo-de-trabajo</category>
  <guid>https://moiseszeleny.github.io/posts/por-que-existe-esta-bitacora/</guid>
  <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Why this log exists</title>
  <dc:creator>Moises Zeleny</dc:creator>
  <link>https://moiseszeleny.github.io/posts/why-this-log-exists/</link>
  <description><![CDATA[ 




<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Versión en español disponible.</strong> Este artículo también está disponible <a href="../../posts/por-que-existe-esta-bitacora/">en español</a>.</p>
</div>
</div>
</div>
<section id="why-im-starting-this-log" class="level2">
<h2 class="anchored" data-anchor-id="why-im-starting-this-log">Why I’m starting this log</h2>
<p>I use large language models in my day-to-day research, and I’ve grown tired of two equally unhelpful narratives: the one where LLMs are about to do physics for us, and the one where they’re stochastic parrots useless for anything serious. Neither matches what I actually experience at the desk.</p>
<p>What I experience is more interesting and more mundane: a tool that is <strong>genuinely useful for specific sub-tasks</strong>, unreliable for others, and occasionally confidently wrong in ways that cost real time. The only way to know which is which is to keep records. So this is that record — a lab notebook for a particular kind of instrument.</p>
<p>The audience I have in mind is other researchers, particularly in theoretical and particle physics. If you work in <strong>BSM phenomenology</strong> — extended scalar or gauge sectors, neutrino mass mechanisms, dark matter, flavour, collider signatures — I hope some of these notes save you the trouble of rediscovering the same failure modes I do.</p>
</section>
<section id="where-llms-currently-help-and-where-they-dont" class="level2">
<h2 class="anchored" data-anchor-id="where-llms-currently-help-and-where-they-dont">Where LLMs currently help (and where they don’t)</h2>
<p>This is a snapshot of my current, revisable opinion. Part of the point of the log is to hold these claims accountable over time.</p>
<p><strong>Where they help me today:</strong></p>
<ul>
<li><strong>Boilerplate and glue code.</strong> Parsing <code>SLHA</code> output, wiring up scans, reshaping data for plots, <code>matplotlib</code>/<code>pandas</code> scaffolding. Fast to write, fast to verify.</li>
<li><strong>Translating between tools and formalisms.</strong> Sketching a <code>FeynRules</code> or <code>SARAH</code> model fragment, converting a Lagrangian term to a rough vertex, moving a snippet between Mathematica and Python.</li>
<li><strong>Literature triage and orientation.</strong> Getting a first map of an unfamiliar corner of the literature, or rephrasing a half-remembered result into searchable terms — always as a <em>pointer</em>, never as a citation.</li>
<li><strong>Rubber-ducking derivations.</strong> Talking through an index contraction, a loop integral reduction, or a symmetry argument, where I remain the one who checks every line.</li>
</ul>
<p><strong>Where they don’t (yet):</strong></p>
<ul>
<li><strong>Anything requiring a guaranteed-correct derivation.</strong> Signs, factors of 2, <img src="https://latex.codecogs.com/png.latex?%5Cgamma%5E5"> conventions, and <img src="https://latex.codecogs.com/png.latex?%5Coverline%7B%5Ctext%7BMS%7D%7D"> subtleties are exactly where fluent-sounding output is most dangerous.</li>
<li><strong>Numerical values and citations.</strong> Confidently fabricated branching ratios or reference lists remain a real hazard.</li>
<li><strong>Genuinely novel model building.</strong> They recombine the known well; they do not reliably produce the constraint I hadn’t thought of.</li>
</ul>
<p>A concrete example of the trap: an LLM will happily produce a one-loop contribution that <em>looks</em> right — correct structure, plausible prefactor — and be wrong by a sign or a <img src="https://latex.codecogs.com/png.latex?1/(4%5Cpi)%5E2">. The expression typesets beautifully:</p>
<p><img src="https://latex.codecogs.com/png.latex?%0A%5CDelta%20a_%5Cmu%20%5C;%5Csim%5C;%20%5Cfrac%7Bm_%5Cmu%5E2%7D%7B16%5Cpi%5E2%20M%5E2%7D%5C,%20%5Csum_i%20c_i%5C,%20F(x_i),%0A"></p>
<p>and the only defence is to derive it yourself and treat the model’s version as a hypothesis to be checked, not an answer.</p>
</section>
<section id="what-you-can-expect-here" class="level2">
<h2 class="anchored" data-anchor-id="what-you-can-expect-here">What you can expect here</h2>
<ul>
<li><strong>Real tasks, not toy demos.</strong> Every post is something I actually needed done.</li>
<li><strong>The whole workflow</strong>, including the prompts and the dead ends — not a cleaned-up highlight reel.</li>
<li><strong>Honest failure reports.</strong> When a model wastes an hour, that’s a post too; those are often the most useful ones.</li>
<li><strong>Time-saved estimates</strong>, stated as honestly as I can, with the caveat that verification time is part of the accounting.</li>
<li><strong>Reproducibility notes.</strong> Where I can, each post links to code or a notebook so you can run it yourself. Where I can’t, I’ll say why.</li>
<li><strong>No hype.</strong> If an LLM didn’t help, the post will say so plainly.</li>
</ul>
</section>
<section id="a-note-on-unpublished-results" class="level2">
<h2 class="anchored" data-anchor-id="a-note-on-unpublished-results">A note on unpublished results</h2>
<p>Some of this work touches ongoing projects. <strong>Details tied to unpublished results — specific models, parameter points, numerical findings — will be withheld until the corresponding preprint is public.</strong> In those cases I’ll document the <em>method and workflow</em> (which is the transferable part) while holding back the result itself, and I’ll update the post with a link once the preprint is out. Reproducibility material will only ever point to things I’m free to share.</p>
<p>That’s the charter. The next post will be an actual task.</p>
<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><strong>Reproducibility note.</strong> This inaugural post is a statement of intent and has no associated code. Future posts will link to a repository or notebook here.</p>
</div>
</div>
</div>


</section>

 ]]></description>
  <category>English</category>
  <category>meta</category>
  <category>workflow</category>
  <guid>https://moiseszeleny.github.io/posts/why-this-log-exists/</guid>
  <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
