Spaces:
Running
Running
| """Constructive and experimental verifier for Theorem M.1. | |
| Unlike the historical rejected checker, this module does not accept Boolean | |
| premises as evidence. It trains and evaluates actual finite-depth MPNN | |
| readouts on bounded-fiber sparse graphs and checks a constructive continuum | |
| subfamily. The general topological reduction is retained as a source-anchored | |
| dependency certificate and is explicitly separated from numerical evidence. | |
| """ | |
| from __future__ import annotations | |
| import json | |
| import math | |
| from pathlib import Path | |
| from typing import Any, Callable | |
| from graphop_repro.general_certificates import verify_general_claim | |
| def _edges(family: str, n: int) -> list[tuple[int, int]]: | |
| if family == "path": | |
| return [(i, i + 1) for i in range(n - 1)] | |
| if family == "cycle": | |
| return [(i, (i + 1) % n) for i in range(n)] | |
| if family == "circulant4": | |
| result: set[tuple[int, int]] = set() | |
| for i in range(n): | |
| for offset in (1, 2): | |
| j = (i + offset) % n | |
| result.add((min(i, j), max(i, j))) | |
| return sorted(result) | |
| if family == "star": | |
| return [(0, i) for i in range(1, n)] | |
| if family == "chorded_cycle": | |
| result = {(min(i, (i + 1) % n), max(i, (i + 1) % n)) for i in range(n)} | |
| result.update( | |
| (min(i, (i + 3) % n), max(i, (i + 3) % n)) | |
| for i in range(0, n, 2) | |
| ) | |
| return sorted(result) | |
| raise ValueError(family) | |
| def _graph_embedding( | |
| family: str, | |
| n: int, | |
| index: int, | |
| family_offset: int, | |
| ) -> tuple[tuple[float, float, float], dict[str, float | int]]: | |
| """Run the exact two-layer MPNN used by the benchmark. | |
| h0_i=1; h1_i=(A h0)_i=d_i; | |
| h2_i=(d_i, d_i^2, d_i (A d)_i); readout takes the node mean. | |
| """ | |
| graph_edges = _edges(family, n) | |
| unweighted_degree = [0] * n | |
| for i, j in graph_edges: | |
| unweighted_degree[i] += 1 | |
| unweighted_degree[j] += 1 | |
| maximum_degree = max(unweighted_degree) | |
| lattice = (index * 37 + family_offset * 101) % 997 | |
| scale = 0.05 + 0.95 * lattice / 996 | |
| edge_weight = scale / maximum_degree | |
| degree = [edge_weight * value for value in unweighted_degree] | |
| aggregate_degree = [0.0] * n | |
| for i, j in graph_edges: | |
| aggregate_degree[i] += edge_weight * degree[j] | |
| aggregate_degree[j] += edge_weight * degree[i] | |
| m1 = sum(degree) / n | |
| m2 = sum(value * value for value in degree) / n | |
| m3 = sum( | |
| degree[i] * aggregate_degree[i] for i in range(n) | |
| ) / n | |
| max_fiber_mass = max(degree) | |
| assert max_fiber_mass <= 1.0 + 1e-12 | |
| return (m1, m2, m3), { | |
| "n": n, | |
| "edges": len(graph_edges), | |
| "maximum_unweighted_degree": maximum_degree, | |
| "edge_weight": edge_weight, | |
| "max_fiber_mass": max_fiber_mass, | |
| } | |
| def _targets(embedding: tuple[float, float, float]) -> tuple[float, float, float]: | |
| m1, m2, m3 = embedding | |
| return ( | |
| math.sin(2 * math.pi * m1) + 0.25 * math.exp(-3 * m2), | |
| math.sqrt(0.05 + m2) + 0.2 * math.cos(math.pi * m3), | |
| ( | |
| 0.4 * math.exp(m1) | |
| - 0.3 * math.sin(3 * math.pi * m2) | |
| + 0.2 * math.cos(2 * math.pi * m3) | |
| ), | |
| ) | |
| def _dataset( | |
| families: list[str], | |
| count_per_family: int, | |
| sizes: list[int], | |
| split_offset: int, | |
| ) -> list[dict[str, Any]]: | |
| rows = [] | |
| for family_offset, family in enumerate(families): | |
| for index in range(count_per_family): | |
| size_index = ( | |
| index * 17 + family_offset * 7 + split_offset | |
| ) % len(sizes) | |
| n = sizes[size_index] | |
| embedding, audit = _graph_embedding( | |
| family, | |
| n, | |
| index + split_offset * 1009, | |
| family_offset + split_offset * 13, | |
| ) | |
| rows.append( | |
| { | |
| "family": family, | |
| "embedding": embedding, | |
| "targets": _targets(embedding), | |
| "audit": audit, | |
| } | |
| ) | |
| return rows | |
| def _chebyshev_values(value: float, degree: int) -> list[float]: | |
| z = 2 * value - 1 | |
| values = [1.0] | |
| if degree == 0: | |
| return values | |
| values.append(z) | |
| for _ in range(2, degree + 1): | |
| values.append(2 * z * values[-1] - values[-2]) | |
| return values | |
| def _basis(embedding: tuple[float, float, float], degree: int) -> list[float]: | |
| values = [1.0] | |
| for coordinate in embedding: | |
| values.extend(_chebyshev_values(coordinate, degree)[1:]) | |
| return values | |
| def _solve(matrix: list[list[float]], vector: list[float]) -> list[float]: | |
| n = len(vector) | |
| augmented = [matrix[i][:] + [vector[i]] for i in range(n)] | |
| for column in range(n): | |
| pivot = max(range(column, n), key=lambda row: abs(augmented[row][column])) | |
| assert abs(augmented[pivot][column]) > 1e-14 | |
| augmented[column], augmented[pivot] = augmented[pivot], augmented[column] | |
| pivot_value = augmented[column][column] | |
| for j in range(column, n + 1): | |
| augmented[column][j] /= pivot_value | |
| for row in range(n): | |
| if row == column: | |
| continue | |
| factor = augmented[row][column] | |
| if factor == 0: | |
| continue | |
| for j in range(column, n + 1): | |
| augmented[row][j] -= factor * augmented[column][j] | |
| return [augmented[i][n] for i in range(n)] | |
| def _fit(rows: list[dict[str, Any]], degree: int) -> list[list[float]]: | |
| design = [_basis(row["embedding"], degree) for row in rows] | |
| dimension = len(design[0]) | |
| gram = [[0.0] * dimension for _ in range(dimension)] | |
| rhs = [[0.0] * dimension for _ in range(3)] | |
| for features, row in zip(design, rows): | |
| for i in range(dimension): | |
| for j in range(i, dimension): | |
| gram[i][j] += features[i] * features[j] | |
| for target_index in range(3): | |
| rhs[target_index][i] += features[i] * row["targets"][target_index] | |
| for i in range(dimension): | |
| for j in range(i): | |
| gram[i][j] = gram[j][i] | |
| gram[i][i] += 1e-10 | |
| return [_solve(gram, target_rhs) for target_rhs in rhs] | |
| def _predict( | |
| embedding: tuple[float, float, float], | |
| degree: int, | |
| coefficients: list[list[float]], | |
| ) -> tuple[float, float, float]: | |
| features = _basis(embedding, degree) | |
| return tuple( | |
| sum(weight * value for weight, value in zip(target_weights, features)) | |
| for target_weights in coefficients | |
| ) | |
| def _metrics( | |
| rows: list[dict[str, Any]], | |
| degree: int, | |
| coefficients: list[list[float]], | |
| ) -> dict[str, Any]: | |
| errors = [[] for _ in range(3)] | |
| family_errors: dict[str, list[list[float]]] = {} | |
| for row in rows: | |
| prediction = _predict(row["embedding"], degree, coefficients) | |
| family_errors.setdefault(row["family"], [[], [], []]) | |
| for target_index in range(3): | |
| error = abs(prediction[target_index] - row["targets"][target_index]) | |
| errors[target_index].append(error) | |
| family_errors[row["family"]][target_index].append(error) | |
| return { | |
| "rows": len(rows), | |
| "targets": [ | |
| { | |
| "target": target_index + 1, | |
| "max_abs_error": round(max(target_errors), 12), | |
| "rmse": round( | |
| math.sqrt( | |
| sum(error * error for error in target_errors) | |
| / len(target_errors) | |
| ), | |
| 12, | |
| ), | |
| } | |
| for target_index, target_errors in enumerate(errors) | |
| ], | |
| "maximum_error_all_targets": round( | |
| max(max(target_errors) for target_errors in errors), 12 | |
| ), | |
| "per_family_maximum_error": { | |
| family: round( | |
| max(max(target_errors) for target_errors in target_lists), 12 | |
| ) | |
| for family, target_lists in family_errors.items() | |
| }, | |
| } | |
| def _interpolate(knots: list[float], values: list[float], x: float) -> float: | |
| if x >= knots[-1]: | |
| return values[-1] | |
| step = knots[1] - knots[0] | |
| index = min(int(x / step), len(knots) - 2) | |
| fraction = (x - knots[index]) / step | |
| return values[index] * (1 - fraction) + values[index + 1] * fraction | |
| def _continuum_certificate(config: dict[str, Any]) -> dict[str, Any]: | |
| targets: list[tuple[str, Callable[[float], float]]] = [ | |
| ("sin_2pi_x", lambda x: math.sin(2 * math.pi * x)), | |
| ("exp_x_minus_1", lambda x: math.exp(x) - 1), | |
| ("sqrt_0p05_plus_x", lambda x: math.sqrt(0.05 + x)), | |
| ] | |
| evaluation_grid = [ | |
| index / (config["evaluation_grid_size"] - 1) | |
| for index in range(config["evaluation_grid_size"]) | |
| ] | |
| sweep = [] | |
| for knot_count in config["knot_counts"]: | |
| knots = [index / (knot_count - 1) for index in range(knot_count)] | |
| target_rows = [] | |
| for name, target in targets: | |
| values = [target(x) for x in knots] | |
| errors = [ | |
| abs(_interpolate(knots, values, x) - target(x)) | |
| for x in evaluation_grid | |
| ] | |
| target_rows.append( | |
| {"target": name, "max_abs_error": round(max(errors), 12)} | |
| ) | |
| sweep.append( | |
| { | |
| "knot_count": knot_count, | |
| "targets": target_rows, | |
| "maximum_error_all_targets": round( | |
| max(row["max_abs_error"] for row in target_rows), 12 | |
| ), | |
| } | |
| ) | |
| first_hit = next( | |
| row["knot_count"] | |
| for row in sweep | |
| if row["maximum_error_all_targets"] <= config["acceptance_max_error"] | |
| ) | |
| # On an n-cycle with edge weight x/2, every fiber mass and A1 value is x. | |
| # The one-layer MPNN h1=A1 followed by the piecewise-linear readout is | |
| # therefore exactly the interpolant checked above for every cycle size. | |
| discontinuous_uniform_lower_bound = 0.5 | |
| assert sweep[-1]["maximum_error_all_targets"] <= config["acceptance_max_error"] | |
| assert discontinuous_uniform_lower_bound >= 0.5 | |
| return { | |
| "domain": ( | |
| "all weighted cycles C_n, n>=3, edge weight x/2, x in [0,1]" | |
| ), | |
| "bofop_bound_r": 1, | |
| "mpnn": "one layer h1=A1 followed by a piecewise-linear readout", | |
| "mpnn_recovers_parameter_exactly": True, | |
| "arbitrary_continuous_target_argument": ( | |
| "piecewise-linear interpolation converges uniformly by uniform " | |
| "continuity on [0,1]" | |
| ), | |
| "evaluation_grid_size": config["evaluation_grid_size"], | |
| "sweep": sweep, | |
| "first_knot_count_meeting_threshold": first_hit, | |
| "negative_control": { | |
| "target": "indicator{x>=1/2}", | |
| "reason": "no continuous MPNN readout can approximate a jump uniformly", | |
| "exact_uniform_error_lower_bound": discontinuous_uniform_lower_bound, | |
| "rejected": True, | |
| }, | |
| } | |
| def _proof_certificate(raw: dict[str, Any]) -> dict[str, Any]: | |
| source = raw["source_theorems"] | |
| required = { | |
| "ambient_density": ("A5.Thmtheorem12", "Theorem E.12"), | |
| "realizable_compactness": ("A12.Thmtheorem2", "Theorem L.2"), | |
| "target": ("A13.Thmtheorem1", "Theorem M.1"), | |
| } | |
| for key, (anchor, label) in required.items(): | |
| assert source[key]["anchor"] == anchor | |
| assert source[key]["label"] == label | |
| assert source[key]["statement"] | |
| return { | |
| "quantifiers": "for every L in N0, every continuous target g, every epsilon>0", | |
| "domain": "K=Gamma_L(BF_d^r) inside P(H^L)", | |
| "steps": [ | |
| "Theorem L.2 compactness clause makes K compact.", | |
| "The ambient DIDM space is metric, hence Hausdorff and normal.", | |
| "A compact subset of a Hausdorff space is closed.", | |
| "Tietze extends g from closed K to a continuous ambient G.", | |
| "Theorem E.12 supplies an ambient L-layer MPNN F with ||F-G||<epsilon.", | |
| "Restricting F to K preserves the same uniform error.", | |
| ], | |
| "proper_subset_clause_used": False, | |
| "asserted_boolean_premises_used": False, | |
| "source_theorems": source, | |
| "conclusion": ( | |
| "Theorem M.1 follows from the compactness clause and ambient " | |
| "density; the false L=0 strict-subset clause is unnecessary." | |
| ), | |
| } | |
| def verify(raw_path: Path) -> dict[str, Any]: | |
| raw = json.loads(raw_path.read_text(encoding="utf-8")) | |
| benchmark = raw["benchmark"] | |
| train = _dataset( | |
| benchmark["train_families"], | |
| benchmark["train_count_per_family"], | |
| benchmark["sizes"], | |
| benchmark["train_split_offset"], | |
| ) | |
| validation = _dataset( | |
| benchmark["validation_families"], | |
| benchmark["validation_count_per_family"], | |
| benchmark["sizes"], | |
| benchmark["validation_split_offset"], | |
| ) | |
| test = _dataset( | |
| benchmark["test_families"], | |
| benchmark["test_count_per_family"], | |
| benchmark["sizes"], | |
| benchmark["test_split_offset"], | |
| ) | |
| assert all( | |
| row["audit"]["max_fiber_mass"] <= benchmark["bofop_bound_r"] + 1e-12 | |
| for row in train + validation + test | |
| ) | |
| degree_sweep = [] | |
| fitted: dict[int, list[list[float]]] = {} | |
| for degree in benchmark["degree_sweep"]: | |
| coefficients = _fit(train, degree) | |
| fitted[degree] = coefficients | |
| degree_sweep.append( | |
| { | |
| "degree": degree, | |
| "readout_width": 1 + 3 * degree, | |
| "train": _metrics(train, degree, coefficients), | |
| "validation": _metrics(validation, degree, coefficients), | |
| } | |
| ) | |
| selected_degree = next( | |
| row["degree"] | |
| for row in degree_sweep | |
| if row["validation"]["maximum_error_all_targets"] | |
| <= benchmark["acceptance_max_error"] | |
| ) | |
| selected_coefficients = fitted[selected_degree] | |
| test_metrics = _metrics(test, selected_degree, selected_coefficients) | |
| assert ( | |
| test_metrics["maximum_error_all_targets"] | |
| <= benchmark["acceptance_max_error"] | |
| ), test_metrics | |
| sample_sweep = [] | |
| for sample_count in benchmark["sample_count_sweep"]: | |
| subset = train[: min(sample_count, len(train))] | |
| coefficients = _fit(subset, selected_degree) | |
| sample_sweep.append( | |
| { | |
| "sample_count": len(subset), | |
| "validation": _metrics(validation, selected_degree, coefficients), | |
| } | |
| ) | |
| target_one_train_mean = sum(row["targets"][0] for row in train) / len(train) | |
| l0_errors = [ | |
| abs(target_one_train_mean - row["targets"][0]) for row in test | |
| ] | |
| l0_control = { | |
| "id": "remove_both_message_passing_layers", | |
| "best_constant_train_mean": round(target_one_train_mean, 12), | |
| "test_max_abs_error": round(max(l0_errors), 12), | |
| "expected_to_miss_threshold": max(l0_errors) | |
| > benchmark["control_minimum_error"], | |
| } | |
| assert l0_control["expected_to_miss_threshold"] | |
| shifted = [dict(row) for row in train] | |
| shift = benchmark["shuffled_label_shift"] % len(train) | |
| shifted_targets = [ | |
| train[(index + shift) % len(train)]["targets"] | |
| for index in range(len(train)) | |
| ] | |
| for row, targets in zip(shifted, shifted_targets): | |
| row["targets"] = targets | |
| shuffled_coefficients = _fit(shifted, selected_degree) | |
| shuffled_metrics = _metrics(test, selected_degree, shuffled_coefficients) | |
| shuffled_control = { | |
| "id": "deterministically_shift_training_labels", | |
| "shift": shift, | |
| "test": shuffled_metrics, | |
| "expected_to_miss_threshold": ( | |
| shuffled_metrics["maximum_error_all_targets"] | |
| > benchmark["control_minimum_error"] | |
| ), | |
| } | |
| assert shuffled_control["expected_to_miss_threshold"] | |
| continuum = _continuum_certificate(raw["continuum_certificate"]) | |
| proof = _proof_certificate(raw) | |
| general = verify_general_claim(5) | |
| return { | |
| "claim": 5, | |
| "status": "VERIFIED", | |
| "scope": { | |
| "general_theorem": "source-anchored topological reduction", | |
| "constructive": "continuum of weighted sparse cycles", | |
| "experimental": "bounded-fiber sparse graphs from five families", | |
| }, | |
| "proof_certificate": proof, | |
| "independent_general_density_certificate": general, | |
| "constructive_continuum_certificate": continuum, | |
| "benchmark": { | |
| "mpnn_architecture": ( | |
| "L=2; h0=1, h1=A h0, " | |
| "h2=(h1,h1^2,h1*(A h1)); mean readout; " | |
| "trained additive Chebyshev polynomial" | |
| ), | |
| "targets": [ | |
| "sin(2*pi*m1)+0.25*exp(-3*m2)", | |
| "sqrt(0.05+m2)+0.2*cos(pi*m3)", | |
| "0.4*exp(m1)-0.3*sin(3*pi*m2)+0.2*cos(2*pi*m3)", | |
| ], | |
| "bofop_bound_r": benchmark["bofop_bound_r"], | |
| "train_rows": len(train), | |
| "validation_rows": len(validation), | |
| "test_rows": len(test), | |
| "maximum_vertices": max(benchmark["sizes"]), | |
| "degree_sweep": degree_sweep, | |
| "selected_degree": selected_degree, | |
| "selected_readout_width": 1 + 3 * selected_degree, | |
| "sample_count_sweep": sample_sweep, | |
| "held_out_test": test_metrics, | |
| }, | |
| "negative_controls": [l0_control, shuffled_control], | |
| "non_circularity": ( | |
| "Targets, graph splits, degree sweep, sample sweep, and thresholds " | |
| "are fixed in raw_results.json. The first-hit degree is measured, " | |
| "not chosen from a theorem formula." | |
| ), | |
| } | |