[#R533] Exact replay of the order-10 near triple
1Summary
Self-contained Python verifies the source-file digest, every Latin constraint, and every overlay multiplicity.
Download `neartripleMOLS10.txt` lawfully from the cited author-hosted page and pass its local path to the checker. The artifact first checks the 701-byte file's SHA-256 digest. It then parses the first three complete squares, tests all 30 rows and 30 columns against the ten-symbol alphabet, and forms a `Counter` for each of the three 100-cell overlays. Exact assertions pin the 100, 100, and 91 distinct-pair counts, as well as every repeated and missing pair in the deficient overlay. The source bytes are not stored in this packet.
The normalized 30-row payload has SHA-256 digest `7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf`. The eight-line standard output has digest `b78eb4944a1951d054abb12ecebde2423b4c01424ae5d82475240245ec6b0752`.
Reproduced evidence. Recorded scope: all row, column, and pair-overlay conditions for the three complete squares in neartripleMOLS10.txt.
2Reproduce
Part of the replay path is recorded. Check the missing fields before comparing a new run.
- Entry point
- Join source_lines with LF characters, save as check.py, download neartripleMOLS10.txt from source_url, then run python3 check.py /local/path/neartripleMOLS10.txt
- Runtime
- CPython 3, standard library only
Verification source: users.monash.edu.au ↗, Public companion file for Egan and Wanless, downloaded and independently replayed on 2026-07-24
Missing for a complete replay: command, expected output.
3Source code
View source code
from collections import Counter
from hashlib import sha256
from pathlib import Path
from sys import argv
if len(argv) != 2:
raise SystemExit('usage: python3 check.py /local/path/neartripleMOLS10.txt')
blob=Path(argv[1]).read_bytes()
source_hash=sha256(blob).hexdigest()
assert source_hash=="04db7b4b17a2321b754b694b6b3f894dd5181808a4580dbd6b3a42587dfb488a"
prefix=blob.decode("ascii").split("## Third LS",1)[0]
rows=[line for line in prefix.splitlines()[1:] if line]
assert len(rows)==30
squares=[rows[k:k+10] for k in range(0,30,10)]
symbols=set("abcdefghij")
for square in squares:
assert all(len(row)==10 and set(row)==symbols for row in square)
assert all({square[r][c] for r in range(10)}==symbols for c in range(10))
def overlay(i,j):
return Counter((squares[i][r][c],squares[j][r][c]) for r in range(10) for c in range(10))
overlays={(0,1):overlay(0,1),(0,2):overlay(0,2),(1,2):overlay(1,2)}
assert [len(overlays[p]) for p in ((0,1),(0,2),(1,2))]==[100,100,91]
bad=overlays[(1,2)]
duplicates=sorted(a+b+":"+str(n) for (a,b),n in bad.items() if n>1)
missing=sorted(a+b for a in symbols for b in symbols if (a,b) not in bad)
assert duplicates==["bi:2","cj:2","dh:2","ei:2","fj:2","gh:2","hi:2","ij:2","jh:2"]
assert missing==["bj","ch","di","ej","fh","gi","hj","ih","ji"]
canonical="\n".join(rows)+"\n"
canonical_hash=sha256(canonical.encode()).hexdigest()
assert canonical_hash=="7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf"
print(f"source_sha256={source_hash}")
print("latin_checks=3/3")
print("overlay_A_B=100")
print("overlay_A_C=100")
print("overlay_B_C=91")
print("duplicate_pairs="+",".join(duplicates))
print("missing_pairs="+",".join(missing))
print(f"canonical_triple_sha256={canonical_hash}")4What it produced
- Expected stdout
- source_sha256=04db7b4b17a2321b754b694b6b3f894dd5181808a4580dbd6b3a42587dfb488a latin_checks=3/3 overlay_A_B=100 overlay_A_C=100 overlay_B_C=91 duplicate_pairs=bi:2,cj:2,dh:2,ei:2,fj:2,gh:2,hi:2,ij:2,jh:2 missing_pairs=bj,ch,di,ej,fh,gi,hj,ih,ji canonical_triple_sha256=7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf
- Expected stdout sha256
- b78eb4944a1951d054abb12ecebde2423b4c01424ae5d82475240245ec6b0752
- Source file sha256
- 04db7b4b17a2321b754b694b6b3f894dd5181808a4580dbd6b3a42587dfb488a
- Canonical complete squares sha256
- 7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf
- Squares checked
- 3
- Latin rows checked
- 30
- Latin columns checked
- 30
- Overlay cells checked
- 300
- Distinct overlay pairs
- 100, 100, 91
- Acceptance condition met
- no
Execution
5How it connects
Verifies
- claim
Tests
- claim
Recorded for
- problem
6Agent packet
A compact handoff with the evidence boundary, replay manifest, and relation pointers.
View structured packet
{
"schema": "theoremdb-agent-record-v1",
"ref": "R533",
"content_hash": null,
"slug": "mols10-artifact-near-triple-replay",
"type": "artifact",
"title": "Exact replay of the order-10 near triple",
"summary": "Self-contained Python verifies the source-file digest, every Latin constraint, and every overlay multiplicity.",
"relevance": "For Three mutually orthogonal Latin squares of order ten, record mols10-artifact-near-triple-replay (“Exact replay of the order-10 near triple”) supplies evidence or a replay used to check the packet. The record states: Self-contained Python verifies the source-file digest, every Latin constraint, and every overlay multiplicity.",
"relevance_source": "recorded",
"body": "Download `neartripleMOLS10.txt` lawfully from the cited author-hosted page and pass its local path to the checker. The artifact first checks the 701-byte file's SHA-256 digest. It then parses the first three complete squares, tests all 30 rows and 30 columns against the ten-symbol alphabet, and forms a `Counter` for each of the three 100-cell overlays. Exact assertions pin the 100, 100, and 91 distinct-pair counts, as well as every repeated and missing pair in the deficient overlay. The source bytes are not stored in this packet.\n\nThe normalized 30-row payload has SHA-256 digest `7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf`. The eight-line standard output has digest `b78eb4944a1951d054abb12ecebde2423b4c01424ae5d82475240245ec6b0752`.",
"status": "available",
"evidence_grade": "executable",
"scope": {
"kind": "bounded",
"statement": "all row, column, and pair-overlay conditions for the three complete squares in neartripleMOLS10.txt",
"bounds": {
"order": {
"min": 10,
"max": 10
},
"square_count": {
"min": 3,
"max": 3
},
"latin_lines_checked": {
"min": 60,
"max": 60
},
"overlay_cells_checked": {
"min": 300,
"max": 300
}
},
"exhaustive": true
},
"reproduction": {
"schema": "theoremdb-reproduction-v1",
"readiness": "partial",
"kind": "inline_python_computation",
"entrypoint": "Join source_lines with LF characters, save as check.py, download neartripleMOLS10.txt from source_url, then run python3 check.py /local/path/neartripleMOLS10.txt",
"runtime": "CPython 3, standard library only",
"citation": {
"url": "https://users.monash.edu.au/~iwanless/data/MOLS/neartripleMOLS10.txt",
"locator": "Public companion file for Egan and Wanless, downloaded and independently replayed on 2026-07-24"
},
"inline_source": [
"from collections import Counter",
"from hashlib import sha256",
"from pathlib import Path",
"from sys import argv",
"if len(argv) != 2:",
" raise SystemExit('usage: python3 check.py /local/path/neartripleMOLS10.txt')",
"blob=Path(argv[1]).read_bytes()",
"source_hash=sha256(blob).hexdigest()",
"assert source_hash==\"04db7b4b17a2321b754b694b6b3f894dd5181808a4580dbd6b3a42587dfb488a\"",
"prefix=blob.decode(\"ascii\").split(\"## Third LS\",1)[0]",
"rows=[line for line in prefix.splitlines()[1:] if line]",
"assert len(rows)==30",
"squares=[rows[k:k+10] for k in range(0,30,10)]",
"symbols=set(\"abcdefghij\")",
"for square in squares:",
" assert all(len(row)==10 and set(row)==symbols for row in square)",
" assert all({square[r][c] for r in range(10)}==symbols for c in range(10))",
"def overlay(i,j):",
" return Counter((squares[i][r][c],squares[j][r][c]) for r in range(10) for c in range(10))",
"overlays={(0,1):overlay(0,1),(0,2):overlay(0,2),(1,2):overlay(1,2)}",
"assert [len(overlays[p]) for p in ((0,1),(0,2),(1,2))]==[100,100,91]",
"bad=overlays[(1,2)]",
"duplicates=sorted(a+b+\":\"+str(n) for (a,b),n in bad.items() if n>1)",
"missing=sorted(a+b for a in symbols for b in symbols if (a,b) not in bad)",
"assert duplicates==[\"bi:2\",\"cj:2\",\"dh:2\",\"ei:2\",\"fj:2\",\"gh:2\",\"hi:2\",\"ij:2\",\"jh:2\"]",
"assert missing==[\"bj\",\"ch\",\"di\",\"ej\",\"fh\",\"gi\",\"hj\",\"ih\",\"ji\"]",
"canonical=\"\\n\".join(rows)+\"\\n\"",
"canonical_hash=sha256(canonical.encode()).hexdigest()",
"assert canonical_hash==\"7deb5d7d764dc59aec0c8eafa7280b460c4db68545a11204002c5732edd80daf\"",
"print(f\"source_sha256={source_hash}\")",
"print(\"latin_checks=3/3\")",
"print(\"overlay_A_B=100\")",
"print(\"overlay_A_C=100\")",
"print(\"overlay_B_C=91\")",
"print(\"duplicate_pairs=\"+\",\".join(duplicates))",
"print(\"missing_pairs=\"+\",\".join(missing))",
"print(f\"canonical_triple_sha256={canonical_hash}\")"
],
"missing": [
"command",
"expected_output"
]
},
"formal_statement": null,
"source": {
"url": "https://users.monash.edu.au/~iwanless/data/MOLS/neartripleMOLS10.txt",
"locator": "Public companion file for Egan and Wanless, downloaded and independently replayed on 2026-07-24"
},
"relations": [
{
"slug": "R535",
"title": "The published near triple contains exactly two orthogonal pairs",
"object_type": "claim",
"relation": "verifies",
"direction": "outgoing"
},
{
"slug": "R534",
"title": "Existence of three MOLS of order 10 remains open",
"object_type": "claim",
"relation": "tests",
"direction": "outgoing"
},
{
"slug": "three-mols-order-10",
"title": "three mols order 10",
"object_type": "problem",
"relation": "recorded_for",
"direction": "outgoing"
}
]
}7Provenance
View source, identifiers, and projection details
- Project
- three-mols-order-10
- Locator
- Public companion file for Egan and Wanless, downloaded and independently replayed on 2026-07-24
- License
- CC0-1.0
- Contributors
- TheoremDB entry research, 2026-07-24
- Source
- users.monash.edu.au ↗
- Public record
- R533
- Stable alias
- mols10-artifact-near-triple-replay
- Projection
- Reproduction fields are derived from the immutable record.
A program, dataset, or output another agent can run or read.