#!/usr/bin/env python3 """Clean-room exact audit of the three WIRE automatic claims.""" from __future__ import annotations import hashlib import json import platform import time from pathlib import Path import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt import numpy as np import scipy from numpy.polynomial.hermite import hermgauss np.seterr(all="ignore") HERE = Path(__file__).resolve().parent OUTPUT_DIR = HERE / "outputs" / "wire" RESULTS = OUTPUT_DIR / "wire_results.json" FIGURE = OUTPUT_DIR / "wire_audit.png" PAPER_SHA = "3eb6899ac0da995483dfba1eafe1ed625a1673d638d498882bcf741709f3415f" OFFICIAL_COMMIT = "4ac067eb38272543b0cdd7591d630399ff37bce4" def laplacian_from_edges(n, edges): a = np.zeros((n, n), dtype=float) for i, j in edges: a[i, j] = a[j, i] = 1.0 return np.diag(a.sum(axis=1)) - a def path_laplacian(n): return laplacian_from_edges(n, [(i, i + 1) for i in range(n - 1)]) def cycle_laplacian(n): return laplacian_from_edges(n, [(i, (i + 1) % n) for i in range(n)]) def star_laplacian(n): return laplacian_from_edges(n, [(0, i) for i in range(1, n)]) def grid_laplacian(nx, ny): edges = [] for y in range(ny): for x in range(nx): i = y * nx + x if x + 1 < nx: edges.append((i, i + 1)) if y + 1 < ny: edges.append((i, i + nx)) return laplacian_from_edges(nx * ny, edges) def random_connected_laplacian(n, rng, p=0.25): edges = {(i, i + 1) for i in range(n - 1)} for i in range(n): for j in range(i + 2, n): if rng.random() < p: edges.add((i, j)) return laplacian_from_edges(n, sorted(edges)) def graph_library(): rng = np.random.default_rng(2606) out = [] for n in [6, 9, 13]: out.extend([(f"path-{n}", path_laplacian(n)), (f"cycle-{n}", cycle_laplacian(n)), (f"star-{n}", star_laplacian(n))]) for nx, ny in [(3, 3), (3, 5), (4, 6)]: out.append((f"grid-{nx}x{ny}", grid_laplacian(nx, ny))) for n in [8, 12, 18]: out.append((f"random-{n}", random_connected_laplacian(n, rng))) return out def spectral_coordinates(L, resistance_scaled=False): vals, vecs = np.linalg.eigh(L) keep = vals > 1e-10 vals, vecs = vals[keep], vecs[:, keep] if resistance_scaled: vecs = vecs / np.sqrt(vals)[None, :] return vals, vecs def rotate_rows(x, theta): """Apply independent 2D rotations to consecutive feature pairs.""" pairs = x.reshape(x.shape[0], -1, 2) c, s = np.cos(theta), np.sin(theta) out = np.empty_like(pairs) out[..., 0] = pairs[..., 0] * c - pairs[..., 1] * s out[..., 1] = pairs[..., 0] * s + pairs[..., 1] * c return out.reshape(x.shape) def claim1_spectral_structure(): rows = [] rng = np.random.default_rng(1807) for name, L in graph_library(): vals, vecs = spectral_coordinates(L) m = min(5, vecs.shape[1]) coords = vecs[:, :m] omega = np.linspace(0.7, 1.3, m) theta = coords @ omega score = np.cos(theta[:, None] - theta[None, :]) perm = rng.permutation(len(L)) P = np.eye(len(L))[perm] Lp = P @ L @ P.T vp = P @ vecs[:, :m] residual = np.linalg.norm(Lp @ vp - vp * vals[:m][None, :], ord="fro") score_p = np.cos((P @ theta)[:, None] - (P @ theta)[None, :]) equivariance_error = np.max(np.abs(score_p - P @ score @ P.T)) q = np.tile([1.0, 0.0], (len(L), 1)) q_rot = rotate_rows(q, theta[:, None]) direct_score = q_rot @ q_rot.T relative_rotation_error = np.max(np.abs(direct_score - score)) offdiag = score[~np.eye(len(L), dtype=bool)] rows.append( { "graph": name, "nodes": len(L), "spectral_dimensions": m, "permuted_eigen_residual_fro": float(residual), "permutation_equivariance_error": float(equivariance_error), "absolute_vs_relative_rotation_error": float(relative_rotation_error), "offdiagonal_score_standard_deviation": float(np.std(offdiag)), "distinct_scores_rounded_1e-10": int(len(np.unique(np.round(offdiag, 10)))), } ) return { "protocol": "15 connected graphs; Laplacian eigenfeatures drive pairwise rotary logits; fixed node permutations are checked algebraically", "rows": rows, "graphs": len(rows), "max_permuted_eigen_residual_fro": max(r["permuted_eigen_residual_fro"] for r in rows), "max_permutation_equivariance_error": max(r["permutation_equivariance_error"] for r in rows), "max_relative_rotation_error": max(r["absolute_vs_relative_rotation_error"] for r in rows), "min_offdiagonal_score_standard_deviation": min(r["offdiagonal_score_standard_deviation"] for r in rows), "min_distinct_scores": min(r["distinct_scores_rounded_1e-10"] for r in rows), } def claim2_grids_and_resistance(): path_rows = [] for n in [4, 5, 8, 13, 21, 34, 55, 64]: vals, vecs = np.linalg.eigh(path_laplacian(n)) analytic = -np.cos(np.pi * (np.arange(n) + 0.5) / n) analytic /= np.linalg.norm(analytic) corr = abs(float(analytic @ vecs[:, 1])) eigenvalue_error = abs(vals[1] - (2.0 - 2.0 * np.cos(np.pi / n))) path_rows.append({"n": n, "absolute_mode_correlation": corr, "eigenvalue_error": float(eigenvalue_error)}) grid_rows = [] for nx, ny in [(3, 4), (3, 7), (4, 4), (4, 9), (5, 6), (6, 8), (7, 9), (8, 10)]: L = grid_laplacian(nx, ny) xx = np.tile(np.arange(nx), ny) yy = np.repeat(np.arange(ny), nx) ux = np.cos(np.pi * (xx + 0.5) / nx) uy = np.cos(np.pi * (yy + 0.5) / ny) lamx = 2.0 - 2.0 * np.cos(np.pi / nx) lamy = 2.0 - 2.0 * np.cos(np.pi / ny) rx = np.linalg.norm(L @ ux - lamx * ux) / np.linalg.norm(ux) ry = np.linalg.norm(L @ uy - lamy * uy) / np.linalg.norm(uy) grid_rows.append({"grid": f"{nx}x{ny}", "x_mode_residual": float(rx), "y_mode_residual": float(ry)}) hx, hw = hermgauss(80) resistance_rows, slopes = [], [] omega_grid = np.asarray([0.01, 0.02, 0.04, 0.08, 0.16]) for name, L in graph_library(): vals, coords = spectral_coordinates(L, resistance_scaled=True) pinv = np.linalg.pinv(L, hermitian=True) diag = np.diag(pinv) R_pinv = diag[:, None] + diag[None, :] - 2.0 * pinv R_coords = np.sum((coords[:, None, :] - coords[None, :, :]) ** 2, axis=2) resistance_error = np.max(np.abs(R_pinv - R_coords)) pairs = [(i, j) for i in range(len(L)) for j in range(i + 1, len(L))] # Cover low, median, and high resistance pairs deterministically. pairs.sort(key=lambda ij: R_pinv[ij]) selected = [pairs[0], pairs[len(pairs) // 2], pairs[-1]] for i, j in selected: R = float(R_pinv[i, j]) exact = np.exp(-0.5 * omega_grid**2 * R) leading = 1.0 - 0.5 * omega_grid**2 * R residuals = np.abs(exact - leading) slope = float(np.polyfit(np.log(omega_grid), np.log(residuals), 1)[0]) slopes.append(slope) # Independent Gauss-Hermite expectation E cos(omega*sqrt(R)*Z). gh = np.array([np.sum(hw * np.cos(w * np.sqrt(R) * np.sqrt(2) * hx)) / np.sqrt(np.pi) for w in omega_grid]) resistance_rows.append( { "graph": name, "pair": [i, j], "effective_resistance": R, "spectral_vs_pseudoinverse_max_error_graph": float(resistance_error), "small_omega_remainder_loglog_slope": slope, "max_gauss_hermite_vs_exact_expectation_error": float(np.max(np.abs(gh - exact))), "remainder_over_omega4_at_smallest_omega": float(residuals[0] / omega_grid[0] ** 4), } ) return { "path_grid_protocol": "closed-form first path/grid Laplacian modes, up to sign and normalization", "path_rows": path_rows, "grid_rows": grid_rows, "min_path_mode_correlation": min(r["absolute_mode_correlation"] for r in path_rows), "max_path_eigenvalue_error": max(r["eigenvalue_error"] for r in path_rows), "max_grid_mode_residual": max(max(r["x_mode_residual"], r["y_mode_residual"]) for r in grid_rows), "resistance_protocol": "Laplacian-pseudoinverse resistance vs squared resistance-scaled spectral distance; exact Gaussian WIRE expectation and independent 80-node Gauss-Hermite oracle", "resistance_rows": resistance_rows, "pairs": len(resistance_rows), "max_spectral_vs_pseudoinverse_resistance_error": max(r["spectral_vs_pseudoinverse_max_error_graph"] for r in resistance_rows), "remainder_slope_range": [min(slopes), max(slopes)], "max_gauss_hermite_expectation_error": max(r["max_gauss_hermite_vs_exact_expectation_error"] for r in resistance_rows), } def claim3_linear_attention(): rng = np.random.default_rng(314159) rows = [] for n in [8, 32, 128, 512, 1024, 2048]: d, dv, m = 32, 7, 6 q, k, v = rng.normal(size=(n, d)), rng.normal(size=(n, d)), rng.normal(size=(n, dv)) coords, omega = rng.normal(size=(n, m)), rng.normal(size=(d // 2, m)) theta = coords @ omega.T qr, kr = rotate_rows(q, theta), rotate_rows(k, theta) associative = qr @ (kr.T @ v) pairwise = (qr @ kr.T) @ v relerr = np.linalg.norm(associative - pairwise) / np.linalg.norm(pairwise) dense_elements = n * n associative_elements = d * dv rows.append( { "tokens": n, "feature_dim": d, "value_dim": dv, "relative_associativity_error": float(relerr), "dense_attention_elements": dense_elements, "associative_intermediate_elements": associative_elements, "intermediate_memory_ratio": dense_elements / associative_elements, "dense_leading_multiply_adds": int(2 * n * n * d), "associative_leading_multiply_adds": int(2 * n * d * dv), } ) return { "identity": "(Q_rot K_rot^T)V = Q_rot(K_rot^T V); WIRE acts on Q and K before the associative linear-attention contraction", "rows": rows, "max_relative_associativity_error": max(r["relative_associativity_error"] for r in rows), "largest_n_memory_ratio": rows[-1]["intermediate_memory_ratio"], "largest_n_operation_ratio": rows[-1]["dense_leading_multiply_adds"] / rows[-1]["associative_leading_multiply_adds"], } def make_figure(c2, c3): fig, axes = plt.subplots(1, 3, figsize=(15, 4.4)) ns = [r["n"] for r in c2["path_rows"]] corr_err = [1 - r["absolute_mode_correlation"] for r in c2["path_rows"]] axes[0].semilogy(ns, np.maximum(corr_err, 1e-17), "o-") axes[0].set(xlabel="path nodes", ylabel="1 − |mode correlation|", title="Grid modes recover RoPE coordinates") axes[0].grid(alpha=0.25) slopes = [r["small_omega_remainder_loglog_slope"] for r in c2["resistance_rows"]] axes[1].hist(slopes, bins=10, color="#6d5dfc", alpha=0.85) axes[1].axvline(4, color="black", linestyle="--", label="O(ω⁴)") axes[1].set(xlabel="fitted remainder exponent", ylabel="graph-pair count", title="Effective-resistance expansion") axes[1].legend() nr = [r["tokens"] for r in c3["rows"]] mr = [r["intermediate_memory_ratio"] for r in c3["rows"]] axes[2].loglog(nr, mr, "o-", color="#e45756") axes[2].set(xlabel="tokens N", ylabel="dense / associative intermediate", title="WIRE keeps linear attention associative") axes[2].grid(alpha=0.25, which="both") fig.tight_layout() fig.savefig(FIGURE, dpi=180) def main(): OUTPUT_DIR.mkdir(parents=True, exist_ok=True) t0 = time.time() c1 = claim1_spectral_structure() c2 = claim2_grids_and_resistance() c3 = claim3_linear_attention() assertions = { "claim1_all_graphs_structurally_nonconstant": c1["min_offdiagonal_score_standard_deviation"] > 1e-5 and c1["min_distinct_scores"] >= 3, "claim1_equivariance_and_rotation_identities": c1["max_permutation_equivariance_error"] < 1e-12 and c1["max_relative_rotation_error"] < 1e-12, "claim2_path_and_grid_modes": c2["min_path_mode_correlation"] > 1 - 1e-12 and c2["max_grid_mode_residual"] < 1e-12, "claim2_resistance_identity": c2["max_spectral_vs_pseudoinverse_resistance_error"] < 1e-11, "claim2_omega4_remainder": c2["remainder_slope_range"][0] > 3.94 and c2["remainder_slope_range"][1] < 4.01, "claim2_expectation_oracle": c2["max_gauss_hermite_expectation_error"] < 1e-12, "claim3_linear_attention_associativity": c3["max_relative_associativity_error"] < 1e-11, "claim3_subquadratic_intermediate": c3["largest_n_memory_ratio"] > 10000, } assert all(assertions.values()), assertions make_figure(c2, c3) payload = { "paper": { "title": "Rotary Position Encodings for Graphs", "openreview": "trn64znfNx", "arxiv": "2509.22259", "paper_pdf_sha256": PAPER_SHA, "official_repository": "https://github.com/cederikhoefs/Graph-RoPE", "official_commit": OFFICIAL_COMMIT, "relationship": "clean-room NumPy/SciPy implementation of paper equations; author code not executed", }, "automatic_claims": { "claim_1_spectral_structural_rotation": c1, "claim_2_grid_rope_and_effective_resistance": c2, "claim_3_linear_attention_compatibility": c3, }, "assertions": assertions, "limitations": [ "Claims are audited at the mathematical operator level; this does not retrain the paper's more than 200 graph models.", "The effective-resistance statement is the paper's random-frequency small-omega expectation, not exact invariance for one learned frequency draw.", "The linear-attention check targets the bilinear numerator factorization; normalization can be computed separately as in standard linear attention.", ], "environment": {"python": platform.python_version(), "numpy": np.__version__, "scipy": scipy.__version__}, "runtime_seconds": time.time() - t0, } RESULTS.write_text(json.dumps(payload, indent=2) + "\n") print(json.dumps({"assertions": assertions, "runtime_seconds": payload["runtime_seconds"]}, indent=2)) if __name__ == "__main__": main()