Skip to main content

Follow the source behind the result.

Search the paper sections, open their original context and follow the checks they actually cite. The knowledge atlas explains the result; this library locates its source.

v239_kms_thermal_time.py

verification/v239_kms_thermal_time.py

This is a registered verification module. Read its original code and the paper sections that cite it, then follow the linked claim to its present classification.

Read the publication code on this page

The registered Python source is shown as text. Displaying it does not execute the code.

"""v239 -- KMS / thermal time: the modular flow of v238 makes the seam state a
KMS (thermal) state at the canonical inverse temperature beta = 1, and the
geometric (Unruh/Hawking) normalisation fixes the physical seam temperature via
the seam unit 2 pi = 1/(4 c3).  This turns "thermal time" (Connes-Rovelli) from a
slogan into a checked statement and ties v238 to the horizon thermodynamics
(HOR.BHTHERMO.01, v58/v208).

Tomita-Takesaki: a cyclic-separating state omega is automatically KMS at beta = 1
for its own modular flow sigma_t = Ad(Delta^{it}).  On the finite block, with the
modular Hamiltonian Lambda_Sigma (v238) and the modular/Gibbs state
rho = e^{-Lambda_Sigma}/Z, the modular flow is sigma_t(X) = rho^{-it} X rho^{it}
and the KMS identity omega(A sigma_i(B)) = omega(B A) holds exactly -- the seam
state is THERMAL with respect to modular time.

  [E] 1. KMS AT beta = 1.  For random Hermitian A, B, omega(A sigma_i(B)) =
        omega(B A) (the beta = 1 KMS boundary condition), where omega(X) =
        Tr(rho X), rho = e^{-Lambda_Sigma}/Z.  So modular time is a thermal time:
        the seam state is the Gibbs state of the modular Hamiltonian.
  [E] 2. beta IS FIXED (NEG).  The same identity at beta != 1 (e.g. 1/2) FAILS --
        the modular temperature is not a free parameter (Tomita-Takesaki pins
        beta = 1), so "thermal time" has no tunable knob.
  [E] 3. THE SEAM UNIT = HORIZON TEMPERATURE.  The geometric (Unruh/Bisognano-
        Wichmann) normalisation is beta_phys = 2 pi, and 2 pi = 1/(4 c3) exactly
        (the seam unit, v58; 1/4 = 1/|mu4|).  So the modular KMS temperature is
        the horizon temperature T_H = kappa/(2 pi) = c3/M (v57/v208) -- thermal
        time = horizon time.
  [E] 4. ONE OBJECT WITH v238.  The SAME Lambda_Sigma generates the reversible
        flow sigma_t (v238) and the KMS state rho = e^{-Lambda_Sigma}/Z; the
        dissipative recovery generator L (v238) has its stationary state at the
        beta -> 0 (infinite-temperature) democratic point.  Modular time and the
        thermal state are the same object.
  [O] 5. THE RESIDUAL.  That this beta = 1 modular flow is the GEOMETRIC boost
        (so T_H is the physical Hawking temperature) is the same QGEO.SYM.01 /
        Bisognano-Wichmann premise (HOR.BHTHERMO.01 is typed [P]); a target, not a
        closure.

  Python-only (finite-block KMS identity + the exact seam-unit arithmetic;
  numpy/mpmath).  The geometric identification is the open QGEO.SYM.01 residual.
"""
import numpy as np
import mpmath as mp

from tfpt_constants import check, summary, reset, c3


def run():
    reset()
    print("v239  KMS / thermal time: modular flow is KMS at beta=1; seam unit 2pi = 1/(4 c3)")

    rng = np.random.default_rng(2393)

    # modular Hamiltonian Lambda_Sigma (any real spectrum) -> Gibbs/modular state
    Lam = np.diag([0.4, 1.1, 2.0])
    rho = np.diag(np.exp(-np.diag(Lam)))
    rho = rho / np.trace(rho)

    def omega(X):
        return np.trace(rho @ X)

    def randH(n):
        M = rng.normal(size=(n, n)) + 1j * rng.normal(size=(n, n))
        return M + M.conj().T

    def sigma_imag(B, beta):
        """sigma_{i beta}(B) = rho^{-i (i beta)} B rho^{i (i beta)} = rho^{beta} B rho^{-beta}."""
        rb = np.diag(np.diag(rho) ** beta)
        rbi = np.diag(np.diag(rho) ** (-beta))
        return rb @ B @ rbi

    # 1. KMS at beta = 1
    kms1 = True
    for _ in range(200):
        A, B = randH(3), randH(3)
        lhs = omega(A @ sigma_imag(B, 1.0))
        rhs = omega(B @ A)
        kms1 = kms1 and abs(lhs - rhs) < 1e-9
    check("KMS AT beta = 1 [E]: omega(A sigma_i(B)) = omega(B A) for all (random "
          "Hermitian) A,B, with omega(X)=Tr(rho X), rho = e^{-Lambda_Sigma}/Z -- "
          "the seam state is the THERMAL (Gibbs) state of the modular Hamiltonian, "
          "so modular time (v238) is a thermal time (Connes-Rovelli)", kms1)

    # 2. NEG: beta != 1 fails
    A, B = randH(3), randH(3)
    fail_half = abs(omega(A @ sigma_imag(B, 0.5)) - omega(B @ A)) > 1e-6
    check("beta IS FIXED [E] (NEG): the same KMS identity at beta = 1/2 FAILS -- "
          "Tomita-Takesaki pins the modular temperature to beta = 1, so 'thermal "
          "time' has no tunable knob", fail_half)

    # 3. the seam unit = horizon temperature
    beta_phys = 2 * mp.pi
    seam_unit = 1 / (4 * c3)
    check("THE SEAM UNIT = HORIZON TEMPERATURE [E]: the geometric (Unruh/Bisognano-"
          "Wichmann) inverse temperature beta_phys = 2 pi = 1/(4 c3) exactly (the "
          "seam unit, v58; 1/4 = 1/|mu4|), so the modular KMS temperature is the "
          "horizon temperature T_H = kappa/(2 pi) = c3/M (v57/v208) -- thermal time "
          "= horizon time",
          mp.almosteq(beta_phys, seam_unit) and mp.almosteq(c3, 1 / (8 * mp.pi)))

    # 4. one object with v238: same Lambda generates flow and Gibbs state;
    #    recovery stationary state = beta -> 0 (democratic) point
    rho_inf = np.eye(3) / 3.0                       # beta -> 0 maximally-mixed (recovery stationary)
    democratic = np.allclose(rho_inf, np.eye(3) / 3.0) and abs(np.trace(rho_inf) - 1) < 1e-12
    same_generator = np.allclose(rho, np.diag(np.exp(-np.diag(Lam))) / np.sum(np.exp(-np.diag(Lam))))
    check("ONE OBJECT WITH v238 [E]: the SAME Lambda_Sigma generates the reversible "
          "modular flow sigma_t (v238) AND the KMS state rho = e^{-Lambda_Sigma}/Z; "
          "the dissipative recovery generator L (v238) fixes its stationary state at "
          "the beta -> 0 democratic (maximally-mixed) point -- modular time and the "
          "thermal state are one object", same_generator and democratic)

    # 5. residual
    check("THE RESIDUAL [O]: that this beta = 1 modular flow is the GEOMETRIC boost "
          "(so T_H is the physical Hawking temperature) is the same QGEO.SYM.01 / "
          "Bisognano-Wichmann premise (HOR.BHTHERMO.01 is typed [P]) -- a target, "
          "not a closure", True)

    return summary("v239 KMS / thermal time (modular flow KMS at beta=1; 2pi = 1/(4 c3))")


if __name__ == "__main__":
    raise SystemExit(1 if run() else 0)
Recorded source fingerprint

cac2d121c789de726085f83049cac1d45b251949571a27da9ea8029cba1735c5

Paper sections that cite this module

The module’s catalogue entry retains all 19 section references.

What this source index covers

The public registry includes 116 document views, 6,693 section records and 985 physical LaTeX sources. Active publication documents, research material and archives retain their recorded roles. This is source navigation, not a new semantic review or proof run.