This notebook is a self-contained mathematical and computational companion to the Book Ramsey numbers section in the paper.
The task templates, including the prompts given to the agents, are available for the first Station and the second Station.
The outline is as follows:
- 1. Problem Definitions
- 2. S1. A conference-graph family.
- 3. S2. A doubled Legendre family.
- 4. S3. A Yamada–Pott family.
- 5. Additional findings
- 6. Appendix: coverage for
The required packages are:
NumPy
1. Problem Definitions
Given graphs , the Ramsey number is the smallest such that every red-blue edge coloring of forces either a red copy of or a blue copy of . Establishing the exact values of Ramsey numbers is a difficult computational and theoretical challenge. The most famous Ramsey numbers are those where and are complete graphs, but many other choices have been studied extensively. The book graph consists of triangles that share a common edge. An open problem is whether
holds for every positive integer . Rousseau and Sheehan (1978) established the upper bound, proving for all . It therefore remains to prove the matching lower bound. For a given , this amounts to constructing a red–blue edge coloring of containing neither a red nor a blue .
Let be the red graph on vertices. Its edge-positive Seidel matrix is , where on red edges, on blue edges, and .
Lemma 1.1 (Seidel certificate). If , then is -regular. For a red edge having common red neighbors and a blue pair having common blue neighbors,
respectively. Hence nonpositive off-diagonal entries of certify that contains no red and its complement contains no blue .
Proof. The row-sum equation gives , hence . For a red pair, partition the other vertices according to their two incident colors. There are of type red–red, of each mixed type, and of type blue–blue. Adding for equal signs and for unequal signs gives the first formula. For a blue pair, the red–red and blue–blue classes have the same size , and each mixed class has size , giving the second formula.
These shared routines are used by all verification cells below. The next cell authenticates the certificate bundle and defines exact adjacency, codegree, and Seidel checks.
Show code
Code cell 3 · In [1]
from __future__ import annotations
import hashlib
import itertools
from dataclasses import dataclass
from math import isqrt
from pathlib import Path
from typing import Iterable
import numpy as np
DATA_FILE = Path("book_ramsey_certificates.npz")
assert DATA_FILE.is_file(), f"Missing public certificate bundle: {DATA_FILE}"
CERTIFICATES = np.load(DATA_FILE, allow_pickle=False)
def matrix_to_masks(matrix: np.ndarray) -> tuple[int, ...]:
matrix = np.asarray(matrix, dtype=np.uint8)
assert matrix.ndim == 2 and matrix.shape[0] == matrix.shape[1]
assert np.array_equal(matrix, matrix.T)
assert not np.any(np.diag(matrix))
assert set(np.unique(matrix)).issubset({0, 1})
return tuple(
sum(int(matrix[i, j]) << j for j in range(len(matrix)))
for i in range(len(matrix))
)
def masks_to_matrix_public(masks: tuple[int, ...]) -> np.ndarray:
return np.array(
[[(masks[i] >> j) & 1 for j in range(len(masks))] for i in range(len(masks))],
dtype=np.uint8,
)
def matrix_adjacency_string(matrix: np.ndarray) -> str:
return "".join(
"1" if matrix[i, j] else "0"
for j in range(1, len(matrix)) for i in range(j)
)
def verify_matrix(matrix: np.ndarray, n: int) -> dict[str, object]:
masks = matrix_to_masks(matrix)
N = len(masks)
assert N == 4 * n - 2
universe = (1 << N) - 1
blue = tuple(universe ^ (1 << i) ^ masks[i] for i in range(N))
degrees = tuple(row.bit_count() for row in masks)
red_max = blue_max = -1
red_bad = blue_bad = 0
square_values = set()
for j in range(1, N):
for i in range(j):
red_common = (masks[i] & masks[j]).bit_count()
blue_common = (blue[i] & blue[j]).bit_count()
mixed = N - 2 - red_common - blue_common
square_values.add(red_common + blue_common - mixed)
if (masks[j] >> i) & 1:
red_max = max(red_max, red_common)
red_bad += int(red_common > n - 2)
else:
blue_max = max(blue_max, blue_common)
blue_bad += int(blue_common > n - 1)
return {
"n": n,
"vertices": N,
"degree_values": sorted(set(degrees)),
"seidel_row_sums": sorted({2 * d - (N - 1) for d in degrees}),
"seidel_square_off_diagonal": sorted(square_values),
"red_max": red_max,
"red_cap": n - 2,
"blue_max": blue_max,
"blue_cap": n - 1,
"bad_pairs": red_bad + blue_bad,
"valid": red_bad == blue_bad == 0,
"sha256": hashlib.sha256(
matrix_adjacency_string(matrix).encode("ascii")
).hexdigest(),
}
def parse_adjacency_string(text: str, expected_vertices: int) -> tuple[int, ...]:
"""Decode an upper-triangular adjacency string into bit masks."""
bits = "".join(str(text).split())
assert set(bits) <= {"0", "1"}
assert len(bits) == expected_vertices * (expected_vertices - 1) // 2
masks = [0] * expected_vertices
index = 0
for j in range(1, expected_vertices):
for i in range(j):
if bits[index] == "1":
masks[i] |= 1 << j
masks[j] |= 1 << i
index += 1
return tuple(masks)
print("Loaded public arrays:", sorted(CERTIFICATES.files))
Saved output 1
Loaded public arrays: ['conference_n46', 'conference_n6', 'conference_n66', 'conference_source_q45', 'conference_source_q65', 'doubled_n6', 'doubled_n70', 'finite_n67', 'yamada_pott_n11', 'yamada_pott_n127', 'yamada_pott_n86']
2. S1. A conference-graph family.
A conference graph of order is a strongly regular graph with parameters
Let be its adjacency matrix and put . The defining intersection numbers give
Theorem 2.1 (conference lift). Every conference graph of order produces a graph on vertices with no red and no blue . Consequently
Proof. Form four -vertex chambers and the bulk matrix
With and , attach two endpoints by
Every off-diagonal entry of is . Equation (1) gives . More explicitly, if
direct block multiplication yields
Because is zero on the diagonal and off it, (2) has diagonal and every off-diagonal entry lies in . Apply the Seidel certificate with , then combine the resulting lower bound with the universal upper bound.
Paley conference graphs supply every prime-power . Beyond the Paley case, Seberry and Whiteman constructed symmetric conference matrices of order for every using Mathon’s construction. The resulting conference graphs have order , so the theorem also proves the Book Ramsey conjecture whenever
The first member has and . The public data file contains this source and the additional known conference graph of order , which supplies .
The next cell defines finite-field sources and the four-chamber conference lift.
Show code
Code cell 5 · In [2]
from __future__ import annotations
import hashlib
import itertools
from dataclasses import dataclass
from math import isqrt
from typing import Iterable
CHAMBERS = ('BB', 'BR', 'RB', 'RR')
CHAMBER_INDEX = {name: i for i, name in enumerate(CHAMBERS)}
CHAMBER_RULES = {
'BB|BB': {'R': (1, 0), 'not_R': (-1, 1)},
'BB|BR': {'diag': (1, 0), 'R': (-1, 0), 'not_R': (1, 0)},
'BB|RB': {'diag': (1, 0), 'R': (1, 0), 'not_R': (-1, 0)},
'BB|RR': {'diag': (-1, 1), 'R': (-1, 1), 'not_R': (1, 0)},
'BR|BR': {'R': (-1, 0), 'not_R': (1, 1)},
'BR|RB': {'diag': (-1, 0), 'R': (-1, 0), 'not_R': (1, 1)},
'BR|RR': {'diag': (-1, 0), 'R': (-1, 0), 'not_R': (1, 0)},
'RB|RB': {'R': (-1, 0), 'not_R': (1, 1)},
'RB|RR': {'diag': (-1, 0), 'R': (1, 0), 'not_R': (-1, 0)},
'RR|RR': {'R': (1, 0), 'not_R': (-1, 1)},
}
ENDPOINT_RULES = {
'u': {'BB': (-1, 0), 'BR': (-1, 1), 'RB': (1, 0), 'RR': (1, 0)},
'v': {'BB': (-1, 0), 'BR': (1, 0), 'RB': (-1, 1), 'RR': (1, 0)},
'u|v': (-1, 0),
}
def is_prime(value: int) -> bool:
if value < 2:
return False
if value % 2 == 0:
return value == 2
for divisor in range(3, isqrt(value) + 1, 2):
if value % divisor == 0:
return False
return True
def prime_power_decomposition(value: int) -> tuple[int, int] | None:
if value < 2:
return None
if is_prime(value):
return value, 1
for p in range(2, isqrt(value) + 1):
if value % p != 0 or not is_prime(p):
continue
remaining = value
exponent = 0
while remaining % p == 0:
remaining //= p
exponent += 1
if remaining == 1:
return p, exponent
return None
def _trim(poly: list[int]) -> list[int]:
while len(poly) > 1 and poly[-1] == 0:
poly.pop()
return poly
def _poly_mod(poly: list[int], divisor: list[int], p: int) -> list[int]:
out = [coeff % p for coeff in poly]
divisor = _trim([coeff % p for coeff in divisor[:]])
if divisor == [0]:
raise ZeroDivisionError('zero polynomial divisor')
while len(out) >= len(divisor) and out != [0]:
coeff = out[-1] % p
offset = len(out) - len(divisor)
if coeff:
for i, div_coeff in enumerate(divisor):
out[offset + i] = (out[offset + i] - coeff * div_coeff) % p
_trim(out)
return out
def _is_irreducible_monic(poly: list[int], p: int) -> bool:
degree = len(poly) - 1
if degree <= 0 or poly[-1] % p != 1 or poly[0] % p == 0:
return False
for divisor_degree in range(1, degree // 2 + 1):
for coeffs in itertools.product(range(p), repeat=divisor_degree):
divisor = list(coeffs) + [1]
if divisor[0] % p == 0:
continue
if _poly_mod(poly, divisor, p) == [0]:
return False
return True
def find_irreducible_polynomial(p: int, degree: int) -> tuple[int, ...]:
if degree == 1:
return (0, 1)
for coeffs in itertools.product(range(p), repeat=degree):
candidate = list(coeffs) + [1]
if _is_irreducible_monic(candidate, p):
return tuple(candidate)
raise RuntimeError(f'No irreducible polynomial found over F_{p} of degree {degree}')
@dataclass(frozen=True)
class FiniteField:
p: int
degree: int
modulus: tuple[int, ...]
@classmethod
def of_size(cls, q: int) -> FiniteField:
decomposition = prime_power_decomposition(q)
if decomposition is None:
raise ValueError(f'{q} is not a prime power')
p, degree = decomposition
return cls(p, degree, find_irreducible_polynomial(p, degree))
@property
def size(self) -> int:
return self.p ** self.degree
def coeffs(self, value: int) -> tuple[int, ...]:
out = []
x = value
for _ in range(self.degree):
out.append(x % self.p)
x //= self.p
return tuple(out)
def encode(self, coeffs: Iterable[int]) -> int:
value = 0
factor = 1
for coeff in coeffs:
value += (coeff % self.p) * factor
factor *= self.p
return value
def sub(self, a: int, b: int) -> int:
if self.degree == 1:
return (a - b) % self.p
a_coeffs = self.coeffs(a)
b_coeffs = self.coeffs(b)
return self.encode((a_coeffs[i] - b_coeffs[i]) % self.p for i in range(self.degree))
def mul(self, a: int, b: int) -> int:
if self.degree == 1:
return (a * b) % self.p
a_coeffs = self.coeffs(a)
b_coeffs = self.coeffs(b)
product = [0] * (2 * self.degree - 1)
for i, ai in enumerate(a_coeffs):
for j, bj in enumerate(b_coeffs):
product[i + j] = (product[i + j] + ai * bj) % self.p
for deg in range(len(product) - 1, self.degree - 1, -1):
coeff = product[deg] % self.p
if coeff:
offset = deg - self.degree
for r in range(self.degree):
product[offset + r] = (product[offset + r] - coeff * self.modulus[r]) % self.p
return self.encode(product[: self.degree])
def paley_conference_relation(q: int) -> tuple[int, ...]:
if q % 4 != 1:
raise ValueError(f'q must be congruent to 1 mod 4, got {q}')
field = FiniteField.of_size(q)
squares = {field.mul(x, x) for x in range(1, q)}
masks = [0] * q
for j in range(1, q):
for i in range(j):
if field.sub(j, i) in squares:
masks[i] |= 1 << j
masks[j] |= 1 << i
return tuple(masks)
KNOWN_NON_PRIME_POWER_CONFERENCE_MASKS = {}
KNOWN_NON_PRIME_POWER_CONFERENCE_SOURCES = {
45: 'Mathon PC strongly regular graph with parameters (45,22,10,11)',
65: 'Gritsenko strongly regular graph with parameters (65,32,15,16)',
}
def known_conference_relation(q: int) -> tuple[int, ...]:
if q in KNOWN_NON_PRIME_POWER_CONFERENCE_MASKS:
return KNOWN_NON_PRIME_POWER_CONFERENCE_MASKS[q]
if q % 4 == 1 and prime_power_decomposition(q) is not None:
return paley_conference_relation(q)
raise ValueError(
'automatic construction requires n - 1 to be either a prime power congruent to 1 mod 4 '
'or one of the embedded non-prime-power conference cases q=45,65'
)
def conference_relation_source(q: int) -> str:
if q in KNOWN_NON_PRIME_POWER_CONFERENCE_SOURCES:
return KNOWN_NON_PRIME_POWER_CONFERENCE_SOURCES[q]
if q % 4 == 1 and prime_power_decomposition(q) is not None:
return f'Paley conference graph over GF({q})'
return 'not available in this notebook'
def conference_relation_stats(r_masks: tuple[int, ...]) -> dict[str, object]:
q = len(r_masks)
expected_degree = (q - 1) // 2
expected_lambda = (q - 5) // 4
expected_mu = (q - 1) // 4
loop_count = 0
symmetry_mismatches = 0
degrees = []
adjacent_common = []
nonadjacent_common = []
for i, mask_i in enumerate(r_masks):
loop_count += (mask_i >> i) & 1
degrees.append((mask_i & ~(1 << i)).bit_count())
for j in range(i + 1, q):
symmetry_mismatches += int(((r_masks[i] >> j) & 1) != ((r_masks[j] >> i) & 1))
for j in range(1, q):
for i in range(j):
common = (r_masks[i] & r_masks[j]).bit_count()
if (r_masks[i] >> j) & 1:
adjacent_common.append(common)
else:
nonadjacent_common.append(common)
ok = (
q % 4 == 1
and loop_count == 0
and symmetry_mismatches == 0
and set(degrees) == {expected_degree}
and set(adjacent_common) == {expected_lambda}
and set(nonadjacent_common) == {expected_mu}
)
return {
'ok': ok,
'q': q,
'degree_values': sorted(set(degrees)),
'adjacent_common_values': sorted(set(adjacent_common)),
'nonadjacent_common_values': sorted(set(nonadjacent_common)),
'expected': (expected_degree, expected_lambda, expected_mu),
'loop_count': loop_count,
'symmetry_mismatches': symmetry_mismatches,
}
def _decode_vertex(index: int, q: int) -> tuple[str, str | None, int | None]:
if index < 4 * q:
return 'chamber', CHAMBERS[index // q], index % q
return 'endpoint', 'u' if index == 4 * q else 'v', None
def sk_rule_for_pair(i: int, j: int, q: int, r_masks: tuple[int, ...]) -> tuple[int, int]:
type_i, label_i, coord_i = _decode_vertex(i, q)
type_j, label_j, coord_j = _decode_vertex(j, q)
if type_i == 'endpoint' and type_j == 'endpoint':
return ENDPOINT_RULES['u|v']
if type_i == 'endpoint' or type_j == 'endpoint':
endpoint = label_i if type_i == 'endpoint' else label_j
chamber = label_j if type_i == 'endpoint' else label_i
return ENDPOINT_RULES[endpoint][chamber]
if CHAMBER_INDEX[label_i] > CHAMBER_INDEX[label_j]:
label_i, label_j = label_j, label_i
coord_i, coord_j = coord_j, coord_i
key = f'{label_i}|{label_j}'
if coord_i == coord_j:
status = 'diag'
else:
status = 'R' if (r_masks[coord_i] >> coord_j) & 1 else 'not_R'
return CHAMBER_RULES[key][status]
def adjacency_string_from_masks(masks: tuple[int, ...] | list[int]) -> str:
return ''.join('1' if (int(masks[j]) >> i) & 1 else '0' for j in range(1, len(masks)) for i in range(j))
def build_sk_adjacency_from_relation(r_masks: tuple[int, ...], *, strict: bool = True) -> str:
check = conference_relation_stats(r_masks)
if strict and not check['ok']:
raise ValueError(f'R does not have the required conference parameters: {check}')
q = len(r_masks)
vertex_count = 4 * q + 2
masks = [0] * vertex_count
for j in range(1, vertex_count):
for i in range(j):
sign, _slack = sk_rule_for_pair(i, j, q, r_masks)
if sign == 1:
masks[i] |= 1 << j
masks[j] |= 1 << i
return adjacency_string_from_masks(masks)
def construct_book_ramsey_witness(n: int) -> str:
q = n - 1
if q <= 1 or q % 4 != 1:
raise ValueError('automatic construction requires n - 1 > 1 and congruent to 1 mod 4')
return build_sk_adjacency_from_relation(known_conference_relation(q))
def accepted_n_values(max_n: int) -> list[int]:
return [
n for n in range(1, max_n + 1)
if n - 1 > 1
and (n - 1) % 4 == 1
and (
prime_power_decomposition(n - 1) is not None
or (n - 1) in KNOWN_NON_PRIME_POWER_CONFERENCE_MASKS
)
]
The next cell authenticates the two non-prime-power conference sources and verifies every conference-family value with .
Show code
Code cell 7 · In [3]
# Replace the two embedded non-prime-power sources by the public data arrays,
# and verify their source parameters before they can be used.
for q in (45, 65):
source_matrix = CERTIFICATES[f"conference_source_q{q}"]
source_masks = matrix_to_masks(source_matrix)
expected_source_hash = {
45: "7eb2f051b14be393d037f1d6afc460f35eae1cab6b13ca113d71da754c497029",
65: "a8d866eaf0fe0a79f2da94518cd40a6b0c717e17311fe4038e37f53e3d34c85a",
}[q]
assert hashlib.sha256(matrix_adjacency_string(source_matrix).encode()).hexdigest() == expected_source_hash
stats = conference_relation_stats(source_masks)
assert stats["ok"], stats
KNOWN_NON_PRIME_POWER_CONFERENCE_MASKS[q] = source_masks
conference_values = accepted_n_values(200)
assert len(conference_values) == 30
conference_checks = {}
for n in conference_values:
adjacency = construct_book_ramsey_witness(n)
matrix = masks_to_matrix_public(parse_adjacency_string(adjacency, 4 * n - 2))
result = verify_matrix(matrix, n)
assert result["valid"]
assert result["seidel_row_sums"] == [-1]
assert set(result["seidel_square_off_diagonal"]).issubset({-4, 0})
conference_checks[n] = result
assert conference_checks[46]["sha256"] == "383f12d0f85f5b689d1c7509828c8bf57dc67345e336f6a88fc9b0eb5867e904"
assert conference_checks[66]["sha256"] == "8bdce7706cb90625b64eb0941c94242092704b52d9dc0af440d0f6e300e84a71"
print(f"Conference family: verified all {len(conference_checks)} values n <= 200.")
print("Values:", conference_values)
Saved output 1
Conference family: verified all 30 values n <= 200. Values: [6, 10, 14, 18, 26, 30, 38, 42, 46, 50, 54, 62, 66, 74, 82, 90, 98, 102, 110, 114, 122, 126, 138, 150, 158, 170, 174, 182, 194, 198]
Station Reference. Archive #41 found the Paley subfamily; Archive #89 gives the general conference lift; Archive #104 identified equivalent presentations. The principal checks are Evals #4148, #4156, #4161, and #4171.
Related Work. Conference graphs and Paley conference graphs are classical. Mathon (1978) and Seberry and Whiteman (1988) constructed the non-prime-power conference-matrix family used here, and Gritsenko (2021) supplied the order- graph. Concurrently, Dai and Lin (2026) used conference matrices in a different construction for diagonal book Ramsey numbers on vertices. The four-chamber lift here treats the near-diagonal pair on vertices and appears to be new.
3. S2. A doubled Legendre family.
Let be a prime power with , let , and put . If is the quadratic character, define
Lemma 3.1 (periodic Legendre source). The functions and have sums and , , and, for in ,
Proof. Since every is a square, . The subgroup indicator gives
because the ordinary and character-weighted sums are both . Hence . Similarly,
changing the zero value at to gives . For (3), the exceptional value in contributes two seam corrections, which cancel because . The remaining two polynomials are
Both have square leading coefficient and nonzero square discriminant , so . Inserting , the two character-weighted sums cancel under because and . The remaining half-sum is , proving (3).
Enumerate cyclically, let be the developed matrices, and set
The correlation identity says
Since is symmetric and the developed matrices commute, block multiplication has zero cross blocks and gives the square identity below. The two row sums give the stated actions on and . Thus, with , , and , (3) gives
Here is binary with zero diagonal; the cross blocks vanish because developed matrices over the abelian group commute.
Theorem 3.2 (two-endpoint lift). Let be a prime power with . There is a coloring on vertices with no red and no blue . Consequently,
Proof. Define
and . The diagonal correction makes every off-diagonal entry of signed, and (4) gives . The bulk-square calculation is
After adding , each diagonal -block is , and the cross contribution consists of and . All their off-diagonal entries are or . The two bulk-to-endpoint columns of are and , also valued, while the endpoint block equals . The Seidel certificate with completes the proof.
The next cell defines the periodic Legendre source and its two-endpoint lift.
Show code
Code cell 10 · In [4]
from __future__ import annotations
import hashlib
import itertools
from dataclasses import dataclass
from math import isqrt
from typing import Iterable
def is_prime(value: int) -> bool:
if value < 2:
return False
if value % 2 == 0:
return value == 2
for divisor in range(3, isqrt(value) + 1, 2):
if value % divisor == 0:
return False
return True
def prime_power_decomposition(value: int) -> tuple[int, int] | None:
if value < 2:
return None
if is_prime(value):
return value, 1
for p in range(2, isqrt(value) + 1):
if value % p != 0 or not is_prime(p):
continue
remaining = value
exponent = 0
while remaining % p == 0:
remaining //= p
exponent += 1
if remaining == 1:
return p, exponent
return None
def _trim(poly: list[int]) -> list[int]:
while len(poly) > 1 and poly[-1] == 0:
poly.pop()
return poly
def _poly_mod(poly: list[int], divisor: list[int], p: int) -> list[int]:
output = [coefficient % p for coefficient in poly]
divisor = _trim([coefficient % p for coefficient in divisor[:]])
while len(output) >= len(divisor) and any(output):
coefficient = output[-1]
offset = len(output) - len(divisor)
for i, divisor_coefficient in enumerate(divisor):
output[offset + i] = (
output[offset + i] - coefficient * divisor_coefficient
) % p
_trim(output)
return output
def _is_irreducible_monic(poly: list[int], p: int) -> bool:
degree = len(poly) - 1
if degree <= 0 or poly[-1] % p != 1 or poly[0] % p == 0:
return False
for divisor_degree in range(1, degree // 2 + 1):
for coefficients in itertools.product(range(p), repeat=divisor_degree):
if coefficients[0] == 0:
continue
divisor = list(coefficients) + [1]
if _poly_mod(poly, divisor, p) == [0]:
return False
return True
def find_irreducible_polynomial(p: int, degree: int) -> tuple[int, ...]:
if degree == 1:
return (0, 1)
for coefficients in itertools.product(range(p), repeat=degree):
candidate = list(coefficients) + [1]
if _is_irreducible_monic(candidate, p):
return tuple(candidate)
raise RuntimeError(f'No irreducible polynomial over F_{p} of degree {degree}.')
@dataclass(frozen=True)
class FiniteField:
p: int
degree: int
modulus: tuple[int, ...]
@classmethod
def of_size(cls, size: int) -> 'FiniteField':
decomposition = prime_power_decomposition(size)
if decomposition is None:
raise ValueError(f'{size} is not a prime power.')
p, degree = decomposition
return cls(p, degree, find_irreducible_polynomial(p, degree))
@property
def size(self) -> int:
return self.p ** self.degree
def coefficients(self, value: int) -> tuple[int, ...]:
output = []
for _ in range(self.degree):
output.append(value % self.p)
value //= self.p
return tuple(output)
def encode(self, coefficients: Iterable[int]) -> int:
value = 0
factor = 1
for coefficient in coefficients:
value += (coefficient % self.p) * factor
factor *= self.p
return value
def add(self, a: int, b: int) -> int:
return self.encode(
(x + y) % self.p
for x, y in zip(self.coefficients(a), self.coefficients(b))
)
def sub(self, a: int, b: int) -> int:
return self.encode(
(x - y) % self.p
for x, y in zip(self.coefficients(a), self.coefficients(b))
)
def mul(self, a: int, b: int) -> int:
if self.degree == 1:
return (a * b) % self.p
a_coefficients = self.coefficients(a)
b_coefficients = self.coefficients(b)
product = [0] * (2 * self.degree - 1)
for i, ai in enumerate(a_coefficients):
for j, bj in enumerate(b_coefficients):
product[i + j] = (product[i + j] + ai * bj) % self.p
for degree in range(len(product) - 1, self.degree - 1, -1):
coefficient = product[degree]
offset = degree - self.degree
for i, modulus_coefficient in enumerate(self.modulus):
product[offset + i] = (
product[offset + i] - coefficient * modulus_coefficient
) % self.p
return self.encode(product[:self.degree])
def pow(self, a: int, exponent: int) -> int:
result = 1
while exponent:
if exponent & 1:
result = self.mul(result, a)
a = self.mul(a, a)
exponent //= 2
return result
def distinct_prime_divisors(value: int) -> tuple[int, ...]:
divisors = []
divisor = 2
while divisor * divisor <= value:
if value % divisor == 0:
divisors.append(divisor)
while value % divisor == 0:
value //= divisor
divisor += 1
if value > 1:
divisors.append(value)
return tuple(divisors)
def primitive_element(field: FiniteField) -> int:
order = field.size - 1
divisors = distinct_prime_divisors(order)
for candidate in range(2, field.size):
if all(
field.pow(candidate, order // divisor) != 1
for divisor in divisors
):
return candidate
raise RuntimeError(f'No primitive element found in GF({field.size}).')
def doubled_skew_paley_source(Q: int) -> dict[str, object]:
if Q <= 3 or Q % 8 != 3 or prime_power_decomposition(Q) is None:
raise ValueError('Q must be a prime power greater than 3 and congruent to 3 mod 8.')
field = FiniteField.of_size(Q)
generator = primitive_element(field)
square_generator = field.mul(generator, generator)
q = (Q - 1) // 2
subgroup = []
value = 1
for _ in range(q):
subgroup.append(value)
value = field.mul(value, square_generator)
assert value == 1 and len(set(subgroup)) == q
def chi(a: int) -> int:
if a == 0:
return 0
return 1 if field.pow(a, q) == 1 else -1
x = tuple(-chi(field.add(1, t)) for t in subgroup)
y = tuple(-1 if t == 1 else -chi(field.sub(1, t)) for t in subgroup)
return {
'Q': Q,
'q': q,
'field': field,
'primitive_element': generator,
'square_subgroup_generator': square_generator,
'x': x,
'y': y,
}
def periodic_legendre_audit(x: tuple[int, ...], y: tuple[int, ...]) -> dict[str, object]:
q = len(x)
correlations = [
sum(
x[t] * x[(t + shift) % q]
+ y[t] * y[(t + shift) % q]
for t in range(q)
)
for shift in range(1, q)
]
audit = {
'q': q,
'x0': x[0],
'x_sum': sum(x),
'y_sum': sum(y),
'x_inverse_symmetric': all(x[d] == x[-d % q] for d in range(q)),
'correlation_values': sorted(set(correlations)),
}
audit['valid'] = (
audit['x0'] == 1
and audit['x_sum'] == 1
and audit['y_sum'] == -1
and audit['x_inverse_symmetric']
and audit['correlation_values'] == [-2]
)
return audit
def periodic_legendre_source_matrix(
x: tuple[int, ...],
y: tuple[int, ...],
) -> tuple[tuple[int, ...], ...]:
q = len(x)
A = tuple(
tuple(x[(j - i) % q] - int(i == j) for j in range(q))
for i in range(q)
)
B = tuple(
tuple(y[(j - i) % q] for j in range(q))
for i in range(q)
)
T = [[0] * (2 * q) for _ in range(2 * q)]
for i in range(q):
for j in range(q):
T[i][j] = A[i][j]
T[i][q + j] = B[i][j]
T[q + i][j] = B[j][i]
T[q + i][q + j] = -A[i][j]
return tuple(tuple(row) for row in T)
def compile_two_endpoint_graph(
T: tuple[tuple[int, ...], ...],
) -> tuple[int, ...]:
q = len(T) // 2
source_order = 2 * q
vertex_count = 4 * q + 2
grading = (1,) * q + (-1,) * q
masks = [0] * vertex_count
def sign(i: int, j: int) -> int:
if j < 4 * q:
super_i, source_i = divmod(i, source_order)
super_j, source_j = divmod(j, source_order)
if super_i == super_j:
return T[source_i][source_j] if super_i == 0 else -T[source_i][source_j]
correction = grading[source_i] if source_i == source_j else 0
return T[source_i][source_j] + correction
if i < 4 * q:
super_i, source_i = divmod(i, source_order)
if j == 4 * q:
return -grading[source_i]
return 1 if super_i == 0 else -1
return -1
for j in range(1, vertex_count):
for i in range(j):
if sign(i, j) == 1:
masks[i] |= 1 << j
masks[j] |= 1 << i
return tuple(masks)
def adjacency_string_from_masks(masks: tuple[int, ...]) -> str:
return ''.join(
'1' if (masks[j] >> i) & 1 else '0'
for j in range(1, len(masks))
for i in range(j)
)
def construct_doubled_skew_paley_witness(Q: int) -> str:
source = doubled_skew_paley_source(Q)
audit = periodic_legendre_audit(source['x'], source['y'])
if not audit['valid']:
raise AssertionError(f'Periodic Legendre audit failed: {audit}')
T = periodic_legendre_source_matrix(source['x'], source['y'])
return adjacency_string_from_masks(compile_two_endpoint_graph(T))
def family_n_values(
minimum_n: int = 1,
maximum_n_exclusive: int = 200,
) -> list[int]:
values = []
for Q in range(3, 2 * maximum_n_exclusive):
if Q <= 3 or Q % 8 != 3 or prime_power_decomposition(Q) is None:
continue
n = (Q + 1) // 2
if minimum_n <= n < maximum_n_exclusive:
values.append(n)
return values
KNOWN_NON_PRIME_POWER_CONFERENCE_ORDERS = {45, 65}
KNOWN_FINITE_OVERLAPS = {22, 34}
The next cell constructs and verifies every doubled-Legendre family member with .
Show code
Code cell 12 · In [5]
doubled_values = family_n_values(1, 201)
assert len(doubled_values) == 21
doubled_checks = {}
for n in doubled_values:
adjacency = construct_doubled_skew_paley_witness(2 * n - 1)
matrix = masks_to_matrix_public(parse_adjacency_string(adjacency, 4 * n - 2))
result = verify_matrix(matrix, n)
assert result["valid"]
assert result["seidel_row_sums"] == [-1]
assert set(result["seidel_square_off_diagonal"]).issubset({-4, 0})
doubled_checks[n] = result
print(f"Doubled Legendre family: verified all {len(doubled_checks)} values n <= 200.")
print("Values:", doubled_values)
Saved output 1
Doubled Legendre family: verified all 21 values n <= 200. Values: [6, 10, 14, 22, 30, 34, 42, 54, 66, 70, 82, 90, 106, 114, 122, 126, 142, 154, 166, 174, 190]
Station Reference. Archive #50 supplies the periodic-Legendre source identity, and Archive #51 supplies the two-endpoint compiler and family. The principal executable records are Evals #1657, #1681, and #1702.
Related Work. Periodic Legendre pairs and their Hadamard-matrix applications are classical; see Fletcher, Gysin, and Seberry (2001). Turturean (2026) used a different lift from the same type of source, reaching . The two-endpoint lift verified here reaches and appears to be new. Its member was independently announced by Epoch AI (2026) later in July.
4. S3. A Yamada–Pott family.
Let be a prime power with , put , choose a square generator of , and let be the quadratic character. On define
Then , , , and . For , put
Lemma 4.1 (Yamada–Pott correlation identity). For every ,
Proof. Since , . With , the sum of this correlation and is the sum over nonzero squares of
Replace the square-subgroup sum by one half of the sum over weighted by . Each unweighted quadratic has square leading coefficient, nonzero discriminant , and sum over ; the two weighted sums cancel under because . The displayed sum is therefore , which rearranges to (5).
Set and . Then , . The square and nonsquare parts of cannot intersect, so . Inclusion–exclusion gives
Thus (5) is equivalent to
Work in the additive group . For a difference define
Let be the graph on whose within-fibre difference sets are and in the two respective fibres and whose cross-fibre difference set is .
Theorem 4.2 (Yamada–Pott lift). With , the graph has vertices and proves
Proof. Write . For , the row indicators in (7) are
Expanding their correlations and using for gives, when ,
To derive (9), write and . For , a pair determines an admissible precisely when lies in one prescribed nonzero quadratic-character coset. The involution exchanges the two cosets, while the excluded zero differences are exactly the pairs with . Therefore
If , each of those pairs has choices of ; if and , the same involution excludes the diagonal pairs. Together with the indicator expansion (writing the exceptional rows separately), this gives
Equations (6), (8)–(10) show that a same-fibre red edge has at most common red neighbors, while a same-fibre red nonedge has at most .
For a cross-fibre difference , note that . Every nonzero column of has entries and its zero column is empty. Convolving the displayed identity with therefore gives the common-red count
Hence it is on a red cross edge and at most otherwise. Finally, and , so the graph is regular of degree . For a red nonedge, regularity makes its red and blue common-neighbor counts equal. Thus every red and blue book bound holds. The universal upper bound gives equality.
The next cell defines the Yamada–Pott source, checks its correlation identity, and constructs the lifted graphs.
Show code
Code cell 15 · In [6]
from __future__ import annotations
import hashlib
from math import isqrt
def is_prime(value: int) -> bool:
if value < 2:
return False
if value % 2 == 0:
return value == 2
return all(value % divisor for divisor in range(3, isqrt(value) + 1, 2))
def distinct_prime_divisors(value: int) -> tuple[int, ...]:
divisors = []
candidate = 2
while candidate * candidate <= value:
if value % candidate == 0:
divisors.append(candidate)
while value % candidate == 0:
value //= candidate
candidate += 1
if value > 1:
divisors.append(value)
return tuple(divisors)
def yamada_pott_source(Q: int) -> dict[str, object]:
"""Construct the compact, search-free source over the field of order Q."""
if Q < 7 or Q % 4 != 3 or prime_power_decomposition(Q) is None:
raise ValueError('Q must be a prime power at least 7 and congruent to 3 mod 4.')
field = FiniteField.of_size(Q)
m = (Q - 1) // 2
rho = primitive_element(field)
g = field.mul(rho, rho)
powers_list = [1]
for _ in range(1, m):
powers_list.append(field.mul(powers_list[-1], g))
powers = tuple(powers_list)
assert field.mul(powers[-1], g) == 1 and len(set(powers)) == m
def chi(value: int) -> int:
if value == 0:
return 0
return 1 if field.pow(value, m) == 1 else -1
u = tuple(chi(field.add(1, value)) for value in powers)
h = tuple(chi(field.sub(1, value)) for value in powers)
X = {r for r, sign in enumerate(u) if sign == 1}
E = {0}
for r in X:
E.update((powers[r], field.sub(0, powers[r])))
D = set(range(Q)) - E
return {
'Q': Q,
'field': field,
'm': m,
'carrier_size': m * Q,
'n': (Q * Q - Q + 2) // 4,
'rho': rho,
'g': g,
'powers': powers,
'chi': chi,
'u': u,
'h': h,
'X': X,
'E': E,
'D': D,
}
def source_identity_audit(source: dict[str, object]) -> dict[str, object]:
"""Check every instance of the finite-field invariant (1)--(3)."""
field, m, g = source['field'], source['m'], source['g']
u, h, X, D = source['u'], source['h'], source['X'], source['D']
rows = []
for a in range(1, m):
H = sum(h[r] * h[(r + a) % m] for r in range(m))
shifted_X = {(x + a) % m for x in X}
K = len(X & shifted_X)
multiplier = field.pow(g, a)
shifted_D = {field.mul(multiplier, d) for d in D}
I = len(D & shifted_D)
rows.append((a, H, K, I, H + 4 * K, H + 2 * I))
return {
'u_sum': sum(u),
'X_size': len(X),
'D_size': len(D),
'u_symmetric': all(u[-r % m] == u[r] for r in range(m)),
'h_skew': all(h[-r % m] == -h[r] for r in range(m)),
'H_plus_4K_values': sorted({row[4] for row in rows}),
'H_plus_2I_values': sorted({row[5] for row in rows}),
'valid': (
sum(u) == -1
and len(X) == (m - 1) // 2
and len(D) == m + 1
and all(u[-r % m] == u[r] for r in range(m))
and all(h[-r % m] == -h[r] for r in range(m))
and all(row[4] == m - 4 and row[5] == m for row in rows)
),
}
def affine_connection_sets(
source: dict[str, object],
) -> tuple[set[tuple[int, int]], set[tuple[int, int]], set[tuple[int, int]]]:
"""Compile (4.3) into subsets of Z_m x the additive group of F_Q."""
Q, field, m, g = source['Q'], source['field'], source['m'], source['g']
h, D, chi = source['h'], source['D'], source['chi']
inverse_powers = tuple(field.pow(g, (-r) % m) for r in range(m))
A, B, C = set(), set(), set()
for r in range(m):
for c in range(Q):
if r != 0:
symbol = chi(c)
if c == 0 or h[r] * symbol == 1:
A.add((r, c))
if c == 0 or h[r] * symbol == -1:
B.add((r, c))
if field.mul(c, inverse_powers[r]) in D:
C.add((r, c))
return A, B, C
def carrier_coordinates(source: dict[str, object]) -> tuple[tuple[int, int], ...]:
"""Order the carrier, preserving the published prime-field certificate order."""
Q, field, m = source['Q'], source['field'], source['m']
if field.degree == 1:
carrier = tuple((x % m, x % Q) for x in range(m * Q))
else:
carrier = tuple((r, c) for r in range(m) for c in range(Q))
assert len(carrier) == len(set(carrier)) == m * Q
return carrier
def construct_graph_rows(Q: int) -> tuple[dict[str, object], tuple[int, ...]]:
"""Generate the full graph as one Python-integer bitset per vertex."""
source = yamada_pott_source(Q)
audit = source_identity_audit(source)
if not audit['valid']:
raise AssertionError(f'Finite-field source audit failed: {audit}')
A, B, C = affine_connection_sets(source)
field, m = source['field'], source['m']
carrier = carrier_coordinates(source)
carrier_index = {value: index for index, value in enumerate(carrier)}
carrier_size = len(carrier)
rows = [0] * (2 * carrier_size)
def translate(value: tuple[int, int], difference: tuple[int, int]) -> tuple[int, int]:
r, c = value
dr, dc = difference
return (r + dr) % m, field.add(c, dc)
for x, value in enumerate(carrier):
for difference in A:
rows[x] |= 1 << carrier_index[translate(value, difference)]
for difference in B:
y = carrier_index[translate(value, difference)]
rows[carrier_size + x] |= 1 << (carrier_size + y)
for difference in C:
y = carrier_index[translate(value, difference)]
rows[x] |= 1 << (carrier_size + y)
rows[carrier_size + y] |= 1 << x
metadata = {
'source': source,
'source_audit': audit,
'A_size': len(A),
'B_size': len(B),
'C_size': len(C),
}
return metadata, tuple(rows)
def family_parameters(maximum_n_exclusive: int) -> list[tuple[int, int]]:
output = []
Q = 7
while (Q * Q - Q + 2) // 4 < maximum_n_exclusive:
if Q % 4 == 3 and prime_power_decomposition(Q) is not None:
output.append((Q, (Q * Q - Q + 2) // 4))
Q += 1
return output
The next cell constructs and verifies all five Yamada–Pott values with .
Show code
Code cell 17 · In [7]
yamada_values = [n for _, n in family_parameters(201)]
assert yamada_values == [11, 28, 86, 127, 176]
yamada_checks = {}
for Q, n in family_parameters(201):
_, rows = construct_graph_rows(Q)
result = verify_matrix(masks_to_matrix_public(rows), n)
assert result["valid"]
assert result["seidel_row_sums"] == [-1]
assert max(result["seidel_square_off_diagonal"]) <= 0
yamada_checks[n] = result
print(f"Yamada--Pott family: verified all {len(yamada_checks)} values n <= 200.")
print("Values:", yamada_values)
Saved output 1
Yamada--Pott family: verified all 5 values n <= 200. Values: [11, 28, 86, 127, 176]
Station Reference. Archive #50 and Evals #3206, #3208, and #3210 contain the periodic-correlation identity and the finite affine constructions for . An external expert recognized their shared Yamada–Pott structure and combined these Station results to establish the general theorem.
Related Work. Yamada–Pott designs are classical; the source identity is described in the design-theoretic framework of Arasu, Bulutoglu, and Hollon (2020). The lift from these designs to sharp book-Ramsey colorings appears to be new.
5. Additional findings
These are additional results that may be interesting but are not included in the spotlight.
5.1 An exact finite value at
Here we report a finite construction that settles : a regular two-fibre coloring on vertices built from multiplier orbits over . Exact common-neighbor counts, together with the universal upper bound, prove
Theorem 5.1. .
Proof. The public data file contains a binary adjacency matrix on vertices in which every red edge has at most common red neighbors and every blue edge has at most common blue neighbors. This gives ; Rousseau and Sheehan’s upper bound proves equality. The SHA-256 digest fixes the labelled matrix.
The next cell verifies the stored certificate directly.
Show code
Code cell 20 · In [8]
n67 = verify_matrix(CERTIFICATES["finite_n67"], 67)
assert n67["sha256"] == "819dbb3122cbd14d543c2f60588e770d2e5ae00fcd0f98c1bb06df88b23a1cf1"
assert n67["red_max"] == 65 and n67["blue_max"] == 66 and n67["valid"]
n67
Saved output 1
{'n': 67,
'vertices': 266,
'degree_values': [132],
'seidel_row_sums': [-1],
'seidel_square_off_diagonal': [-8, -4, 0],
'red_max': 65,
'red_cap': 65,
'blue_max': 66,
'blue_cap': 66,
'bad_pairs': 0,
'valid': True,
'sha256': '819dbb3122cbd14d543c2f60588e770d2e5ae00fcd0f98c1bb06df88b23a1cf1'}
Station Reference. The multiplier-orbit construction is Archive #28. Its search, construction, and checks are Evals #766, #768, #769, #772, #774, #776, #779, #780, #783, #784, and #786.
Related Work. Rousseau and Sheehan (1978) proved the matching universal upper bound. Relative to Wesley (2026), Lidický et al. (2025), Turturean (2026), and Epoch AI (2026), the verified construction lies outside the previously reported finite range and the three infinite families above, and this exact value appears to be new.
5.2 Reconstructing a symmetric set from its autocorrelation
Construction searches often produce a desired autocorrelation profile before establishing whether any binary set realizes it. For a centrally symmetric subset of an odd-order finite abelian group, we prove the exact parity rule
where is the labelled periodic autocorrelation of . Within the centrally symmetric class, this rule recovers every membership bit and yields a complete quadratic-time realizability test. It therefore removes the reconstruction ambiguity within the symmetric source class used by the book-Ramsey searches.
Theorem 5.2 (parity decoder). Let be a finite abelian group of odd order, let , and define . Then
Thus, among centrally symmetric subsets of , the labelled periodic autocorrelation determines uniquely. Given a proposed profile , reconstructing and comparing its autocorrelation with gives an exact test for realization by a centrally symmetric subset.
Proof. The elements counted by can be written as those for which and . The involution preserves this set because . All nonfixed elements occur in pairs. Since has odd order, the unique possible fixed point is , and it occurs exactly when . This proves the parity rule. Doubling is bijective on an odd-order group, so every membership bit is recovered. To test a proposed profile, form and compare its actual autocorrelation with .
Station Reference. Archive #7 gives the theorem and algorithm, checked in Evals #265, #280, and #284.
Related Work. Averkov (2009) proved a broader uniqueness theorem for centrally symmetric finite Euclidean sets from autocorrelation; Rosenblatt and Seymour (1982) give general homometry background. The theorem here is a periodic finite-group specialization with the explicit parity decoder used by the construction searches.
6. Appendix: coverage for
The arithmetic conditions above give 30 conference values, 21 doubled-Legendre values, and five Yamada–Pott values for . Their union contains 43 values. Against the finite, Paley, and Legendre results publicly available when the Station discoveries were made in mid-July 2026, 28 of these values were open: 19 first supplied by the conference family, six more by the doubled family, and three more by the Yamada–Pott family. Epoch AI announced a concurrent finite construction at at the end of July. The count of 28 records the discovery-time impact of the Station families, not exclusivity relative to that later announcement.
The .npz file contains representative adjacency matrices, including the two non-prime-power conference sources and an independent finite witness at . Each array is binary, symmetric, zero-diagonal, and stored without Python objects.
The next cell fixes the expected digests, recomputes the family ledgers and discovery-time comparison, and verifies every portable array.
Show code
Code cell 25 · In [9]
EXPECTED_DIGESTS = {'conference_source_q45': '7eb2f051b14be393d037f1d6afc460f35eae1cab6b13ca113d71da754c497029', 'conference_n46': '383f12d0f85f5b689d1c7509828c8bf57dc67345e336f6a88fc9b0eb5867e904', 'conference_source_q65': 'a8d866eaf0fe0a79f2da94518cd40a6b0c717e17311fe4038e37f53e3d34c85a', 'conference_n66': '8bdce7706cb90625b64eb0941c94242092704b52d9dc0af440d0f6e300e84a71', 'conference_n6': '84ce382953bf24a148b0476e5b3179f373c7276b56768257c454df80f5e5dd90', 'doubled_n6': '29f0688397a1d4ac8f1453b7b172a6eaad529236293fe6e55ea97ce3852e98a3', 'doubled_n70': '91ca25491075a53ae4c5aec3fc27f9ecf70001dd6546ee70893cc35196e5a0ea', 'yamada_pott_n11': '22c2a5e7bb2ebee5b112a38f2b64f56a34a16eedca1542826a0985b855492506', 'yamada_pott_n86': '55a612cc15f50a96c28868ab112c88ed67a73af98610f81b2b39fd9f80e08c6b', 'yamada_pott_n127': 'c0ee4fd1b6fbcc95f89e44daf19a1866a3b8d336fd4e4734a80346466bda8f6b', 'finite_n67': '819dbb3122cbd14d543c2f60588e770d2e5ae00fcd0f98c1bb06df88b23a1cf1'}
def is_prime_public(value: int) -> bool:
if value < 2:
return False
if value % 2 == 0:
return value == 2
return all(value % d for d in range(3, isqrt(value) + 1, 2))
def is_prime_power_public(value: int) -> bool:
if value < 2:
return False
if is_prime_public(value):
return True
for p in range(2, isqrt(value) + 1):
if not is_prime_public(p):
continue
remainder = value
while remainder % p == 0:
remainder //= p
if remainder == 1:
return True
return False
finite = set(range(1, 22)) | {
22, 23, 24, 26, 28, 29, 30, 32, 34, 36, 38, 39,
40, 42, 43, 44, 46, 47, 48, 50, 52, 54, 56,
}
paley = {n for n in range(1, 201) if (2*n-1) % 4 == 1 and is_prime_power_public(2*n-1)}
legendre_prior = {n for n in range(1, 201) if (4*n-1) % 8 == 3 and is_prime_power_public(4*n-1)}
prior = finite | paley | legendre_prior
conference_set = set(conference_values)
doubled_set = set(doubled_values)
yamada_set = set(yamada_values)
station_union = conference_set | doubled_set | yamada_set
station_new = station_union - prior
assert len(station_union) == 43
assert len(station_new) == 28
assert len(conference_set - prior) == 19
assert len(doubled_set - (prior | conference_set)) == 6
assert len(yamada_set - (prior | conference_set | doubled_set)) == 3
reconstructed = {
"conference_n6": masks_to_matrix_public(parse_adjacency_string(construct_book_ramsey_witness(6), 22)),
"conference_n46": masks_to_matrix_public(parse_adjacency_string(construct_book_ramsey_witness(46), 182)),
"conference_n66": masks_to_matrix_public(parse_adjacency_string(construct_book_ramsey_witness(66), 262)),
"doubled_n6": masks_to_matrix_public(parse_adjacency_string(construct_doubled_skew_paley_witness(11), 22)),
"doubled_n70": masks_to_matrix_public(parse_adjacency_string(construct_doubled_skew_paley_witness(139), 278)),
}
for Q in (7, 19, 23):
meta, rows = construct_graph_rows(Q)
reconstructed[f"yamada_pott_n{meta['source']['n']}"] = masks_to_matrix_public(rows)
data_checks = {}
for key in CERTIFICATES.files:
matrix = CERTIFICATES[key]
digest = hashlib.sha256(matrix_adjacency_string(matrix).encode("ascii")).hexdigest()
assert digest == EXPECTED_DIGESTS[key]
if key in reconstructed:
assert np.array_equal(matrix, reconstructed[key])
if key.startswith("conference_source_"):
q = int(key.rsplit("q", 1)[1])
assert conference_relation_stats(matrix_to_masks(matrix))["ok"]
else:
n = int(key.rsplit("n", 1)[1])
result = verify_matrix(matrix, n)
assert result["valid"]
data_checks[key] = result
print("Union of the three new families below 200:", len(station_union))
print("Open at the mid-July Station discovery cutoff:", len(station_new), sorted(station_new))
print("All portable arrays passed hash and mathematical checks.")
Saved output 1
Union of the three new families below 200: 43 Open at the mid-July Station discovery cutoff: 28 [62, 66, 70, 74, 82, 86, 90, 98, 102, 106, 110, 114, 122, 126, 127, 138, 142, 150, 154, 158, 166, 170, 174, 176, 182, 190, 194, 198] All portable arrays passed hash and mathematical checks.
6.1 Source ledger for every
Each entry lists every source family in this notebook that covers the parameter. The codes are: L, prior exact values for ; H, prior finite heuristic constructions; P, Paley; Sz, the prior Legendre/Szekeres family; C, Station conference; D, Station doubled Legendre; YP, Station Yamada–Pott; and F, the standalone Station finite certificate at (Section 5.1). Station contributions are bold. Overlaps are retained. Open means only that none of these listed sources covers the parameter; it is not an exhaustive literature claim. The listed sources cover 132 of the 200 parameters. The three infinite Station families cover 43 values and newly resolve 28 relative to the stated prior baseline; the standalone value is not included in either headline count.