TheoremDB
R533artifactStatus: availableEvidence: ReproducedReplay: partialexhaustive over its scope

[#R533] Exact replay of the order-10 near triple

View replayOpen source ↗

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

Replay: partial

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
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

date2026-07-24arithmeticexact finite symbol comparisons and integer multiplicities

5How it connects

Recorded for

6Agent packet

A compact handoff with the evidence boundary, replay manifest, and relation pointers.

View structured packet
json
{
  "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
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.

Report a problem

Your ChatGPT account

Opening ChatGPT

ChatGPT is opening in a new tab.