TheoremDB

Problem packetWorkR93

R93artifactStatus: availableEvidence: ReproducedReplay: partialexhaustive over its scope

[#R93] Exhaustive verifier for the NIST array

View replayOpen source ↗

1Summary

Standard-library Python decodes the explicit array and verifies every ternary interaction in every triple of columns.

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

Reproduced evidence. Recorded scope: the complete 80-row ternary array and every strength-three coverage requirement on its 15 columns.

2Reproduce

Replay package: partial

Part of the replay path is recorded. Check the missing fields before comparing a new run.

Entry point
save code as check.py and run python3 check.py
Runtime
CPython 3, standard library only

Verification source: math.nist.gov ↗, Inline CPython standard-library replay of the zero-completed NIST array, executed 2026-07-25

Missing for a complete replay: command, expected output.

3Source code

View source code
Source code
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())

4What it produced

Expected stdout
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
Expected stdout sha256
821bdc633a47f7300160b992df72caad902c15d2dc87723219e55ec3bbe1280a
Completed array sha256
ed0f7e38bdb4c43d87b6cba972fe940ba0c3123f3a2c31f95cf3c4cd66bb100b
Rows checked
80
Column triples checked
455
Requirements checked
12,285
Requirements missing
0

Execution

date2026-07-25arithmeticexact integer tuple enumeration

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": "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"
    },
    "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",
      "expected_output"
    ]
  },
  "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": [],
  "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"
    }
  ]
}

7Provenance

View source, identifiers, and projection details
Project
covering-array-3-15-3
Locator
Inline CPython standard-library replay of the zero-completed NIST array, executed 2026-07-25
License
CC0-1.0
Contributors
TheoremDB entry research, 2026-07-25
Public record
R93
Stable alias
ca3153-artifact-coverage-verifier
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.