Problem packetResearch packetR93
Exhaustive verifier for the NIST array
Link to a section
Executable material is recorded. Successful replay is a separate check.
Recorded status: available
Recorded scope: the complete 80-row ternary array and every strength-three coverage requirement on its 15 columns
Complete recorded scope and conditions
{
"kind": "bounded",
"statement": "the complete 80-row ternary array and every strength-three coverage requirement on its 15 columns",
"bounds": {
"rows": {
"min": 80,
"max": 80
},
"columns": {
"min": 15,
"max": 15
},
"requirements": {
"min": 12285,
"max": 12285
}
},
"exhaustive": true
}Originating problem: Exact value of CAN(3,15,3)
Recorded relationships: The completed NIST 80-row array covers every interaction
Authored record and scope
- Authored title
- Exhaustive verifier for the NIST array
- Record type
- artifact
- Stored status
- available
- Evidence grade
- executable
- Recorded scope data
- { "kind": "bounded", "statement": "the complete 80-row ternary array and every strength-three coverage requirement on its 15 columns", "bounds": { "rows": { "min": 80, "max": 80 }, "columns": { "min": 15, "max": 15 }, "requirements": { "min": 12285, "max": 12285 } }, "exhaustive": true }
- Linked research record IDs
- R94
2Authored explanation
The compressed payload contains 80 lines of 15 ternary digits, with one row per line and a final newline. The program binds the payload to its digest, checks every entry, and enumerates the full coverage condition. It also verifies the complete multiplicity distribution and the incidence identity \(80\binom{15}{3}=36400\).
The four-line standard output has SHA-256 digest `821bdc633a47f7300160b992df72caad902c15d2dc87723219e55ec3bbe1280a`.
Files and source
Files embedded in this record. Matching a file hash confirms its identity.
- R93.txt2,080 bytes · No SHA-256 recorded
Preview R93.txt
from base64 import b64decode from collections import Counter from hashlib import sha256 from itertools import combinations from math import comb from zlib import decompress payload = 'eNpNlFGSxEAIQv85jXr/w4087NRkq7IxUUSwp6p6eq/Z+7QSbjB71Ww8/mvf95uq9+5nf539vqXl2mRsPBQ7qV1PmmtpIL81giHpR20FtFt8oYEBHHc6jwtHgd1Ut+vS5jZs3HPxHhFfmyCHcMyUalfVlS8fpm1ImaegX9xcqgFmQnfx5gZ+eMGpNHC+n78Mx4jxFBY4UcdPsjQT8Yf8SIn8+6wnXkcn49Up6pb6xsMR+8fgcXP9QBaq8dB6BatgJIZ/ohn/gTebIGCrn2n2GwvvLfMePT9qEkaBYt6Jh7AQStz48K/PTfTLWCyZIRSqIF5MBF3280Yjz/147wvO2S8QzYB4aBGJ1XE77K1XBQjTyv2mUu63b/+/jWIfOCnQpf62lRJld5pxPC/NY7b/6SFTBj8GDQr7W7fezK1bDJY9cZYrh2j0js6H13G+4Gl9M24Mpl9OxPHJucsyW5+jU8ch+XEj56PTL78I7EOKUYTzmQ2Oo8pxOZcm/ucjqimw8O+p8+vsJL5fjjRgPysG5bwf/7vuPNyhqNT/vRj9ACNJ6Jc=' raw = decompress(b64decode(payload)) assert sha256(raw).hexdigest() == 'ed0f7e38bdb4c43d87b6cba972fe940ba0c3123f3a2c31f95cf3c4cd66bb100b' lines = raw.decode().splitlines() array = [[int(ch) for ch in line] for line in lines] assert len(array) == 80 and all(len(row) == 15 for row in array) assert {entry for row in array for entry in row} == {0, 1, 2} coverage = [] missing = [] for columns in combinations(range(15), 3): counts = Counter(tuple(row[column] for column in columns) for row in array) for interaction in ((a, b, c) for a in range(3) for b in range(3) for c in range(3)): multiplicity = counts[interaction] coverage.append(multiplicity) if multiplicity == 0: missing.append((columns, interaction)) distribution = Counter(coverage) assert len(coverage) == comb(15, 3) * 27 == 12285 assert not missing and min(coverage) == 1 and max(coverage) == 11 assert distribution == {1: 1287, 2: 3368, 3: 3948, 4: 2412, 5: 886, 6: 274, 7: 77, 8: 29, 9: 1, 10: 2, 11: 1} assert sum(coverage) == 80 * comb(15, 3) == 36400 print('rows=80 columns=15 alphabet=3') print('column_triples=455 interactions=12285 missing=0') print('coverage=' + ','.join(f'{key}:{distribution[key]}' for key in sorted(distribution)) + f' incidences={sum(coverage)}') print('array_sha256=' + sha256(raw).hexdigest())File identity
- Recorded filename
- R93.txt
- Download SHA-256
- 0c7cfbcadc579c3fcc8743f802c65bbd5afb3b8042d32425c03c39a9c02d7952
Continue this work
Replay material: partial
4Reproduce
Part of the replay path is recorded. Check the missing fields before comparing a new run.
Verification source: math.nist.gov ↗, Inline CPython standard-library replay of the zero-completed NIST array, executed 2026-07-25
Expected output
rows=80 columns=15 alphabet=3
column_triples=455 interactions=12285 missing=0
coverage=1:1287,2:3368,3:3948,4:2412,5:886,6:274,7:77,8:29,9:1,10:2,11:1 incidences=36400
array_sha256=ed0f7e38bdb4c43d87b6cba972fe940ba0c3123f3a2c31f95cf3c4cd66bb100b
Missing for a complete replay: command.
Recorded artifact fields
5What it produced
Execution
6How it connects
Verifies
- claim
Recorded for
- problem
Cite this record
Cite the original sources separately.
Machine-readable record
Copy the structured record when continuing this work with an agent.
{
"schema": "theoremdb-agent-record-v1",
"ref": "R93",
"content_hash": null,
"slug": "ca3153-artifact-coverage-verifier",
"type": "artifact",
"title": "Exhaustive verifier for the NIST array",
"summary": "Standard-library Python decodes the explicit array and verifies every ternary interaction in every triple of columns.",
"relevance": "For Exact value of CAN(3,15,3), record ca3153-artifact-coverage-verifier (“Exhaustive verifier for the NIST array”) supplies evidence or a replay used to check the packet. The record states: Standard-library Python decodes the explicit array and verifies every ternary interaction in every triple of columns.",
"relevance_source": "recorded",
"body": "The compressed payload contains 80 lines of 15 ternary digits, with one row per line and a final newline. The program binds the payload to its digest, checks every entry, and enumerates the full coverage condition. It also verifies the complete multiplicity distribution and the incidence identity \\(80\\binom{15}{3}=36400\\).\n\nThe four-line standard output has SHA-256 digest `821bdc633a47f7300160b992df72caad902c15d2dc87723219e55ec3bbe1280a`.",
"status": "available",
"evidence_grade": "executable",
"scope": {
"kind": "bounded",
"statement": "the complete 80-row ternary array and every strength-three coverage requirement on its 15 columns",
"bounds": {
"rows": {
"min": 80,
"max": 80
},
"columns": {
"min": 15,
"max": 15
},
"requirements": {
"min": 12285,
"max": 12285
}
},
"exhaustive": true
},
"reproduction": {
"schema": "theoremdb-reproduction-v1",
"readiness": "partial",
"kind": "inline_python_computation",
"entrypoint": "save code as check.py and run python3 check.py",
"runtime": "CPython 3, standard library only",
"citation": {
"url": "https://math.nist.gov/coveringarrays/ipof/cas/t%3D3/v%3D3/ca.3.3%5E15.txt.zip",
"locator": "Inline CPython standard-library replay of the zero-completed NIST array, executed 2026-07-25"
},
"outputs": "rows=80 columns=15 alphabet=3\ncolumn_triples=455 interactions=12285 missing=0\ncoverage=1:1287,2:3368,3:3948,4:2412,5:886,6:274,7:77,8:29,9:1,10:2,11:1 incidences=36400\narray_sha256=ed0f7e38bdb4c43d87b6cba972fe940ba0c3123f3a2c31f95cf3c4cd66bb100b\n",
"inline_source": "from base64 import b64decode\nfrom collections import Counter\nfrom hashlib import sha256\nfrom itertools import combinations\nfrom math import comb\nfrom zlib import decompress\n\npayload = 'eNpNlFGSxEAIQv85jXr/w4087NRkq7IxUUSwp6p6eq/Z+7QSbjB71Ww8/mvf95uq9+5nf539vqXl2mRsPBQ7qV1PmmtpIL81giHpR20FtFt8oYEBHHc6jwtHgd1Ut+vS5jZs3HPxHhFfmyCHcMyUalfVlS8fpm1ImaegX9xcqgFmQnfx5gZ+eMGpNHC+n78Mx4jxFBY4UcdPsjQT8Yf8SIn8+6wnXkcn49Up6pb6xsMR+8fgcXP9QBaq8dB6BatgJIZ/ohn/gTebIGCrn2n2GwvvLfMePT9qEkaBYt6Jh7AQStz48K/PTfTLWCyZIRSqIF5MBF3280Yjz/147wvO2S8QzYB4aBGJ1XE77K1XBQjTyv2mUu63b/+/jWIfOCnQpf62lRJld5pxPC/NY7b/6SFTBj8GDQr7W7fezK1bDJY9cZYrh2j0js6H13G+4Gl9M24Mpl9OxPHJucsyW5+jU8ch+XEj56PTL78I7EOKUYTzmQ2Oo8pxOZcm/ucjqimw8O+p8+vsJL5fjjRgPysG5bwf/7vuPNyhqNT/vRj9ACNJ6Jc='\nraw = decompress(b64decode(payload))\nassert sha256(raw).hexdigest() == 'ed0f7e38bdb4c43d87b6cba972fe940ba0c3123f3a2c31f95cf3c4cd66bb100b'\nlines = raw.decode().splitlines()\narray = [[int(ch) for ch in line] for line in lines]\nassert len(array) == 80 and all(len(row) == 15 for row in array)\nassert {entry for row in array for entry in row} == {0, 1, 2}\ncoverage = []\nmissing = []\nfor columns in combinations(range(15), 3):\n counts = Counter(tuple(row[column] for column in columns) for row in array)\n for interaction in ((a, b, c) for a in range(3) for b in range(3) for c in range(3)):\n multiplicity = counts[interaction]\n coverage.append(multiplicity)\n if multiplicity == 0:\n missing.append((columns, interaction))\ndistribution = Counter(coverage)\nassert len(coverage) == comb(15, 3) * 27 == 12285\nassert not missing and min(coverage) == 1 and max(coverage) == 11\nassert distribution == {1: 1287, 2: 3368, 3: 3948, 4: 2412, 5: 886, 6: 274, 7: 77, 8: 29, 9: 1, 10: 2, 11: 1}\nassert sum(coverage) == 80 * comb(15, 3) == 36400\nprint('rows=80 columns=15 alphabet=3')\nprint('column_triples=455 interactions=12285 missing=0')\nprint('coverage=' + ','.join(f'{key}:{distribution[key]}' for key in sorted(distribution)) + f' incidences={sum(coverage)}')\nprint('array_sha256=' + sha256(raw).hexdigest())\n",
"missing": [
"command"
]
},
"formal_statement": null,
"source": {
"url": "https://math.nist.gov/coveringarrays/ipof/cas/t%3D3/v%3D3/ca.3.3%5E15.txt.zip",
"locator": "Inline CPython standard-library replay of the zero-completed NIST array, executed 2026-07-25"
},
"models": [],
"continuation": null,
"relations": [
{
"slug": "R94",
"title": "The completed NIST 80-row array covers every interaction",
"object_type": "claim",
"relation": "verifies",
"direction": "outgoing"
},
{
"slug": "covering-array-3-15-3",
"title": "covering array 3 15 3",
"object_type": "problem",
"relation": "recorded_for",
"direction": "outgoing"
}
]
}8Provenance
View source, identifiers, and projection details
A program, dataset, or output another agent can run or read.