Problem packetResearch packetR116
Exhaustive replay of the 115-block covering
Link to a section
Executable material is recorded. Successful replay is a separate check.
Recorded status: available
Recorded scope: all 4368 five-subsets and all 115 blocks in the published C(16,8,5) family
Complete recorded scope and conditions
{
"kind": "bounded",
"statement": "all 4368 five-subsets and all 115 blocks in the published C(16,8,5) family",
"bounds": {
"ground_set_size": {
"min": 16,
"max": 16
},
"block_count": {
"min": 115,
"max": 115
},
"requirements": {
"min": 4368,
"max": 4368
}
},
"exhaustive": true
}Originating problem: Covering every five-set with eight-sets on sixteen points
Recorded relationships: Jurcovich's 115 blocks form a covering
Authored record and scope
- Authored title
- Exhaustive replay of the 115-block covering
- Record type
- artifact
- Stored status
- available
- Evidence grade
- executable
- Recorded scope data
- { "kind": "bounded", "statement": "all 4368 five-subsets and all 115 blocks in the published C(16,8,5) family", "bounds": { "ground_set_size": { "min": 16, "max": 16 }, "block_count": { "min": 115, "max": 115 }, "requirements": { "min": 4368, "max": 4368 } }, "exhaustive": true }
- Linked research record IDs
- R118
2Authored explanation
Save the 115-block family displayed by the cited La Jolla Covering Repository page as a local plain-text file, one block per line, and pass its path to the checker. The program canonicalizes whitespace and checks the block-list SHA-256 digest before computing. The published block list is not stored in this packet.
The program checks 115 distinct 8-blocks, enumerates all 4368 five-subsets in lexicographic order, and counts containments. It verifies the full multiplicity distribution and confirms that every displayed block has a private requirement. It also replays the three ceiling calculations leading to 104. The canonical requirement list and `requirement:count` vector receive separate digests. The eight-line standard output has SHA-256 digest `d9e00a088652bec19ab4de0ab0b8ab91e4892d7eea6cb9170d9e86fa55809e79`.
Files and source
Files embedded in this record. Matching a file hash confirms its identity.
- R116.txt2,680 bytes · No SHA-256 recorded
Preview R116.txt
from collections import Counter from hashlib import sha256 from itertools import combinations from math import comb from pathlib import Path from sys import argv if len(argv) != 2: raise SystemExit('usage: python3 check.py /local/path/C_16_8_5_blocks.txt') source_lines = Path(argv[1]).read_text(encoding='utf-8').splitlines() blocks = [tuple(map(int, line.split())) for line in source_lines if line.strip()] block_raw = '\n'.join(' '.join(map(str, block)) for block in blocks) + '\n' assert sha256(block_raw.encode()).hexdigest() == '52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664' assert len(blocks) == len(set(blocks)) == 115 points = set(range(1, 17)) assert all(len(block) == 8 and tuple(sorted(block)) == block and set(block) <= points for block in blocks) requirements = list(combinations(range(1, 17), 5)) block_sets = list(map(set, blocks)) coverage = [sum(set(req) <= block for block in block_sets) for req in requirements] distribution = Counter(coverage) assert len(requirements) == comb(16, 5) == 4368 and min(coverage) == 1 assert distribution == {1: 3124, 2: 768, 3: 224, 4: 192, 5: 32, 6: 16, 7: 12} assert sum(coverage) == 115 * comb(8, 5) == 6440 private = [sum(coverage[j] == 1 and set(req) <= block for j, req in enumerate(requirements)) for block in block_sets] assert Counter(private) == {32: 76, 12: 15, 20: 12, 26: 8, 16: 4} and min(private) > 0 requirements_raw = '\n'.join(' '.join(map(str, req)) for req in requirements) + '\n' coverage_raw = '\n'.join(' '.join(map(str, req)) + ':' + str(count) for req, count in zip(requirements, coverage)) + '\n' digests = (sha256(block_raw.encode()).hexdigest(), sha256(requirements_raw.encode()).hexdigest(), sha256(coverage_raw.encode()).hexdigest()) assert digests == ('52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664', 'a6adb2f635f9e629083ddf9806a48a56fb67b00cdff34cfc49948d193e1d9e5d', '574db015570dc42bd2a9d20e583f02bb6992b248c1c74d1898e8b7de0faa8c5a') def cdiv(a, b): return (a + b - 1) // b chain = (10, cdiv(14 * 10, 6), cdiv(15 * 24, 7), cdiv(16 * 52, 8)) assert chain == (10, 24, 52, 104) print(f'blocks={len(blocks)} distinct={len(set(blocks))}') print(f'requirements={len(requirements)} missing={coverage.count(0)}') print('coverage=' + ','.join(f'{key}:{distribution[key]}' for key in sorted(distribution)) + f' incidences={sum(coverage)}') print(f'essential_blocks={sum(value > 0 for value in private)} private_min={min(private)} private_max={max(private)}') print('schonheim_chain=C(13,5,2):10,C(14,6,3):24,C(15,7,4):52,C(16,8,5):104') print(f'blocks_sha256={digests[0]}') print(f'requirements_sha256={digests[1]}') print(f'coverage_sha256={digests[2]}')File identity
- Recorded filename
- R116.txt
- Download SHA-256
- faa0fdee7870568bd907996bb357bf51267ffc202484e725df63591dc9c4feb9
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: ljcr.dmgordon.org ↗, Inline CPython standard-library replay of the complete LJCR block list, executed 2026-07-24
Expected output
blocks=115 distinct=115
requirements=4368 missing=0
coverage=1:3124,2:768,3:224,4:192,5:32,6:16,7:12 incidences=6440
essential_blocks=115 private_min=12 private_max=32
schonheim_chain=C(13,5,2):10,C(14,6,3):24,C(15,7,4):52,C(16,8,5):104
blocks_sha256=52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664
requirements_sha256=a6adb2f635f9e629083ddf9806a48a56fb67b00cdff34cfc49948d193e1d9e5d
coverage_sha256=574db015570dc42bd2a9d20e583f02bb6992b248c1c74d1898e8b7de0faa8c5a
Missing for a complete replay: command.
Recorded artifact fields
5What it produced
Execution
6How it connects
Evidence for
- claim
Tests
- 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": "R116",
"content_hash": null,
"slug": "cd1685-artifact-exhaustive-cover",
"type": "artifact",
"title": "Exhaustive replay of the 115-block covering",
"summary": "Standard-library Python decodes the archived block list, checks its shape, enumerates every 5-subset, and verifies the coverage and lower-bound arithmetic.",
"relevance": "For Covering every five-set with eight-sets on sixteen points, record cd1685-artifact-exhaustive-cover (“Exhaustive replay of the 115-block covering”) supplies evidence or a replay used to check the packet. The record states: Standard-library Python decodes the archived block list, checks its shape, enumerates every 5-subset, and verifies the coverage and lower-bound arithmetic.",
"relevance_source": "recorded",
"body": "Save the 115-block family displayed by the cited La Jolla Covering Repository page as a local plain-text file, one block per line, and pass its path to the checker. The program canonicalizes whitespace and checks the block-list SHA-256 digest before computing. The published block list is not stored in this packet.\n\nThe program checks 115 distinct 8-blocks, enumerates all 4368 five-subsets in lexicographic order, and counts containments. It verifies the full multiplicity distribution and confirms that every displayed block has a private requirement. It also replays the three ceiling calculations leading to 104. The canonical requirement list and `requirement:count` vector receive separate digests. The eight-line standard output has SHA-256 digest `d9e00a088652bec19ab4de0ab0b8ab91e4892d7eea6cb9170d9e86fa55809e79`.",
"status": "available",
"evidence_grade": "executable",
"scope": {
"kind": "bounded",
"statement": "all 4368 five-subsets and all 115 blocks in the published C(16,8,5) family",
"bounds": {
"ground_set_size": {
"min": 16,
"max": 16
},
"block_count": {
"min": 115,
"max": 115
},
"requirements": {
"min": 4368,
"max": 4368
}
},
"exhaustive": true
},
"reproduction": {
"schema": "theoremdb-reproduction-v1",
"readiness": "partial",
"kind": "inline_python_computation",
"entrypoint": "Save code as check.py, save the displayed 115-block list from source_url as a local plain-text file, then run python3 check.py /local/path/C_16_8_5_blocks.txt",
"runtime": "CPython 3, standard library only",
"citation": {
"url": "https://ljcr.dmgordon.org/cover/show_cover.php?k=8&t=5&v=16",
"locator": "Inline CPython standard-library replay of the complete LJCR block list, executed 2026-07-24"
},
"outputs": "blocks=115 distinct=115\nrequirements=4368 missing=0\ncoverage=1:3124,2:768,3:224,4:192,5:32,6:16,7:12 incidences=6440\nessential_blocks=115 private_min=12 private_max=32\nschonheim_chain=C(13,5,2):10,C(14,6,3):24,C(15,7,4):52,C(16,8,5):104\nblocks_sha256=52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664\nrequirements_sha256=a6adb2f635f9e629083ddf9806a48a56fb67b00cdff34cfc49948d193e1d9e5d\ncoverage_sha256=574db015570dc42bd2a9d20e583f02bb6992b248c1c74d1898e8b7de0faa8c5a\n",
"inline_source": "from collections import Counter\nfrom hashlib import sha256\nfrom itertools import combinations\nfrom math import comb\nfrom pathlib import Path\nfrom sys import argv\n\nif len(argv) != 2:\n raise SystemExit('usage: python3 check.py /local/path/C_16_8_5_blocks.txt')\nsource_lines = Path(argv[1]).read_text(encoding='utf-8').splitlines()\nblocks = [tuple(map(int, line.split())) for line in source_lines if line.strip()]\nblock_raw = '\\n'.join(' '.join(map(str, block)) for block in blocks) + '\\n'\nassert sha256(block_raw.encode()).hexdigest() == '52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664'\nassert len(blocks) == len(set(blocks)) == 115\npoints = set(range(1, 17))\nassert all(len(block) == 8 and tuple(sorted(block)) == block and set(block) <= points for block in blocks)\nrequirements = list(combinations(range(1, 17), 5))\nblock_sets = list(map(set, blocks))\ncoverage = [sum(set(req) <= block for block in block_sets) for req in requirements]\ndistribution = Counter(coverage)\nassert len(requirements) == comb(16, 5) == 4368 and min(coverage) == 1\nassert distribution == {1: 3124, 2: 768, 3: 224, 4: 192, 5: 32, 6: 16, 7: 12}\nassert sum(coverage) == 115 * comb(8, 5) == 6440\nprivate = [sum(coverage[j] == 1 and set(req) <= block for j, req in enumerate(requirements)) for block in block_sets]\nassert Counter(private) == {32: 76, 12: 15, 20: 12, 26: 8, 16: 4} and min(private) > 0\nrequirements_raw = '\\n'.join(' '.join(map(str, req)) for req in requirements) + '\\n'\ncoverage_raw = '\\n'.join(' '.join(map(str, req)) + ':' + str(count) for req, count in zip(requirements, coverage)) + '\\n'\ndigests = (sha256(block_raw.encode()).hexdigest(), sha256(requirements_raw.encode()).hexdigest(), sha256(coverage_raw.encode()).hexdigest())\nassert digests == ('52698bf4869691120b55da7419b340005acc8b8a807aafbdeabc3377f4b73664', 'a6adb2f635f9e629083ddf9806a48a56fb67b00cdff34cfc49948d193e1d9e5d', '574db015570dc42bd2a9d20e583f02bb6992b248c1c74d1898e8b7de0faa8c5a')\ndef cdiv(a, b):\n return (a + b - 1) // b\nchain = (10, cdiv(14 * 10, 6), cdiv(15 * 24, 7), cdiv(16 * 52, 8))\nassert chain == (10, 24, 52, 104)\nprint(f'blocks={len(blocks)} distinct={len(set(blocks))}')\nprint(f'requirements={len(requirements)} missing={coverage.count(0)}')\nprint('coverage=' + ','.join(f'{key}:{distribution[key]}' for key in sorted(distribution)) + f' incidences={sum(coverage)}')\nprint(f'essential_blocks={sum(value > 0 for value in private)} private_min={min(private)} private_max={max(private)}')\nprint('schonheim_chain=C(13,5,2):10,C(14,6,3):24,C(15,7,4):52,C(16,8,5):104')\nprint(f'blocks_sha256={digests[0]}')\nprint(f'requirements_sha256={digests[1]}')\nprint(f'coverage_sha256={digests[2]}')\n",
"missing": [
"command"
]
},
"formal_statement": null,
"source": {
"url": "https://ljcr.dmgordon.org/cover/show_cover.php?k=8&t=5&v=16",
"locator": "Inline CPython standard-library replay of the complete LJCR block list, executed 2026-07-24"
},
"models": [],
"continuation": null,
"relations": [
{
"slug": "R118",
"title": "Jurcovich's 115 blocks form a covering",
"object_type": "claim",
"relation": "evidences",
"direction": "outgoing"
},
{
"slug": "R119",
"title": "The recursive lower bound is 104",
"object_type": "claim",
"relation": "tests",
"direction": "outgoing"
},
{
"slug": "covering-design-16-8-5",
"title": "covering design 16 8 5",
"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.