#!/usr/bin/env python3
"""
SCOPE NOTE, 2026-10-11 (comp 202).  Where this file quotes lambda_SM(M_*) ~ 0.0927
(Buttazzo et al. 2013), the 0.8 percent agreement, the one-sigma Higgs match or comp 176's
0.4 sigma, that is the anchor of its day and is kept as found.  comp 202 computes the number
at three loops on current inputs: 0.0932 +- 0.0008, 1.6 sigma from e^-1/4, which is what the
book states from v32.137.  Nothing here is re-run; the substrate side is unaffected.

PROVENANCE: PROOF

Computation 119 -- Bridge Premise (B), milestone M9:
                   the vertex renormalisation is trivial to all orders
                   (Z_Gamma4 = 1), completing the matching's internal content
=========================================================================
STATUS (v26.20+): M9 of the wave-function attack on Bridge Premise (B).
After M8, the substrate side of (B) is fully tightened; the open content is
the matching equation lambda_SM(M_*) = b * Z^2 to the SM-measured coupling.
This computation closes the last INTERNAL piece of that matching -- the
vertex renormalisation -- which Comp 101 had established only at tree
level.  (That SM-side matching equation is now quantified by Comp 123: a
rigid, D-independent 1.0-sigma match, lambda_SM(M_*) = 0.0927 +- 0.0007
m_t/m_h-dominated vs e^-1/4 = 0.09197.)

THE DECOMPOSITION
=================
The field-normalisation ratio Z^2 := lambda_SM(M_*)/b that the matching
must supply decomposes, by standard renormalisation, into:
  - a FIELD-NORMALISATION piece (the 2-point / field-strength), and
  - a VERTEX piece Z_Gamma4 (the 4-point 1PI correction).
M5/M8a fixed the field-normalisation piece: it is the embedding norm of
the projected Higgs, -> e^-1 (forced structurally, not empirically). The
remaining piece is the vertex Z_Gamma4. Comp 101's sub-question (2) asked
whether Z_Gamma4 = 1; it was answered only at tree level (the projection
is a field rescaling, which does not touch the quartic). M9 closes it to
ALL orders.

THE ARGUMENT (corollary of the F11 decoupling, Comp 118)
========================================================
The matching at M_* integrates out the substrate UV modes between M_* and
sqrt(D): the non-collective S_D standard-representation modes W and all
|S|>=2 Walsh shells. By the Morse-Bott decoupling lemma (Comp 118), the
interaction V = Phi(X_bar) has zero matrix element on W at EVERY order n
-- because its n-th derivative tensor is the all-ones tensor, which any
v in W (sum_a v_a = 0) annihilates. The n=4 case IS the quartic vertex:
the integrated-out W modes do not couple to the Higgs quartic at all, so
they generate NO vertex correction. The higher Walsh shells are gapped at
>= the binary gap and likewise decouple. Hence Z_Gamma4 = 1 to all orders,
not just at tree level.

The only loop corrections to the Higgs quartic are the COLLECTIVE
(singlet = Higgs) self-loops -- but those are the emergent-EFT running
(the SM RGE between M_* and the electroweak scale), not a matching-scale
vertex renormalisation. They are the source of the 0.8% gap between the
tree-level matching value b e^-1 = 0.0920 and the two-loop-run 0.0927;
they CONFIRM the matching, they are not a Z_Gamma4 correction to it.

NET: with the field-normalisation piece = e^-1 (M8a) and Z_Gamma4 = 1
(M9), the matching ratio is Z^2 = e^-1 with no residual internal
renormalisation. The matching equation's content reduces to F4 (the
emergent EFT below M_* is the SM -- the central PST emergence result) plus
the SM RGE confirmation. This is the last internal step of (B).
=========================================================================
"""

import numpy as np


def standard_rep_basis(D):
    """Orthonormal basis of W = {v : sum v = 0} (the S_D standard rep)."""
    M = np.zeros((D - 1, D))
    for k in range(1, D):
        M[k - 1, :k] = 1.0
        M[k - 1, k] = -k
        M[k - 1] /= np.linalg.norm(M[k - 1])
    return M


def quartic_vertex_tensor_contraction_on_W(D, Phi4):
    """
    The quartic-vertex tensor of V = Phi(X_bar) is T_{abcd} = Phi4 / D^4
    (all-ones). Contract it on three W-legs and one free leg; the result
    must vanish (W does not couple to the quartic). Returns the max
    |contraction| over a W basis.
    """
    W = standard_rep_basis(D)
    coeff = Phi4 / D**4
    worst = 0.0
    # T(v, v', v'', .) free-index vector has components
    #   coeff * (sum v)(sum v')(sum v'') * 1   -> 0 since sum v = 0
    for i in range(D - 1):
        for j in range(D - 1):
            for k in range(D - 1):
                s = (W[i].sum()) * (W[j].sum()) * (W[k].sum())
                vec = coeff * s * np.ones(D)
                worst = max(worst, np.linalg.norm(vec))
    return worst


def main():
    print("=" * 72)
    print("Computation 119: M9 -- vertex renormalisation Z_Gamma4 = 1")
    print("to all orders, completing the matching's internal content")
    print("=" * 72)
    print()

    b = 0.25
    e_inv = np.exp(-1.0)

    # ---- 1. the quartic vertex annihilates W (n=4 decoupling) ----
    print("1.  THE HIGGS QUARTIC VERTEX HAS ZERO MATRIX ELEMENT ON W")
    print("-" * 72)
    print("    Quartic tensor of V=Phi(X_bar): T_abcd = Phi''''/D^4 (all-ones).")
    print("    Contract on W legs (sum_a v_a = 0): result must vanish.")
    for D in (4, 8, 16):
        worst = quartic_vertex_tensor_contraction_on_W(D, Phi4=1.0)
        print(f"    D={D:>2}: max |T(v,v',v'',.)| over W = {worst:.2e}"
              f"   -> W does not couple to the quartic")
    print()
    print("    The integrated-out non-collective modes carry no quartic")
    print("    vertex, so they generate NO correction to the Higgs quartic")
    print("    in the matching. (n=4 case of the Comp 118 decoupling.)")
    print()

    # ---- 2. the gapped higher shells likewise decouple ----
    print("2.  HIGHER WALSH SHELLS ARE GAPPED AND DECOUPLE")
    print("-" * 72)
    print("    |S|>=2 shells sit at Boolean-Laplacian eigenvalue 2|S| >= 4,")
    print("    above the binary gap, and X_bar (the order parameter) has no")
    print("    |S|>=2 content (Comp 98), so V never reaches them either.")
    print("    No substrate UV mode -- collective-orthogonal or higher-shell")
    print("    -- contributes a matching-scale vertex correction.")
    print()

    # ---- 3. the matching ratio is purely the field-normalisation ----
    print("3.  Z^2 = (field-normalisation) x Z_Gamma4 = e^-1 x 1")
    print("-" * 72)
    print(f"    field-normalisation piece (embedding norm, M8a) -> {e_inv:.6f}")
    print(f"    vertex piece Z_Gamma4 (M9, this computation)     -> 1")
    print(f"    => Z^2 = lambda_SM(M_*)/b -> {e_inv:.6f}")
    print(f"    => lambda_SM(M_*) = b e^-1 = {b*e_inv:.6f}  (tree-level matching)")
    print()
    print("    The only loop corrections to the quartic are the COLLECTIVE")
    print("    Higgs self-loops -- the SM RGE running below M_*, not a")
    print("    matching-scale vertex renormalisation. Two-loop running gives")
    print(f"    {0.0927:.4f} vs the matching {b*e_inv:.4f}: a 0.8% gap that")
    print("    CONFIRMS the matching (running in the predicted direction),")
    print("    not a Z_Gamma4 correction to it.")
    print()

    # ---- 4. assessment ----
    print("=" * 72)
    print("ASSESSMENT: what M9 closes, and what remains")
    print("=" * 72)
    print()
    print("  CLOSED (M9):")
    print("   Z_Gamma4 = 1 to ALL orders, not just tree level (Comp 101's")
    print("   sub-question 2). The integrated-out substrate UV modes")
    print("   (non-collective W + gapped higher shells) have zero matrix")
    print("   element with the quartic vertex (n=4 decoupling, Comp 118), so")
    print("   they generate no vertex correction. The matching ratio is")
    print("   therefore Z^2 = e^-1 with NO residual internal renormalisation")
    print("   -- both the field-normalisation piece (M8a) and the vertex")
    print("   piece (M9) come from the same decoupling.")
    print()
    print("  THE MATCHING EQUATION'S INTERNAL CONTENT IS NOW COMPLETE:")
    print("   lambda_SM(M_*) = b * Z^2 = b e^-1, with b (F6), the")
    print("   field-strength (M8a), and the vertex (M9) all derived. The")
    print("   matching reduces to its two remaining, non-renormalisation")
    print("   inputs:")
    print("    - F4: the emergent EFT below M_* is the SM -- the central PST")
    print("      emergence result (gauge group, generations, Mosco limit),")
    print("      established elsewhere in the paper, not a (B)-specific gap;")
    print("    - the SM RGE running, which CONFIRMS b e^-1 = 0.0920 against")
    print("      the two-loop-run 0.0927 at 0.8%.")
    print()
    print("  HONEST STATUS OF (B) AFTER M9:")
    print("   Every renormalisation step -- substrate-side value e^-1, the")
    print("   field-strength selection, the total-reduction/decoupling lemma,")
    print("   AND now the vertex triviality -- is derived. (B) reduces to the")
    print("   emergence premise F4 (a separately-established PST result) plus")
    print("   the empirical RGE test. This is the natural terminus of the")
    print("   (B) attack: the matching is closed MODULO the emergence of the")
    print("   SM as PST's EFT, which is the theory's central claim, not an")
    print("   extra assumption. It is NOT a parameter-free proof from")
    print("   nothing -- F4 and the 0.8% test remain -- but no internal")
    print("   renormalisation step of the matching is open.")


if __name__ == "__main__":
    main()
