Problem packetResearch packetR218
Exact replay of the 18-element product basis
Link to a section
Executable material is recorded. Successful replay is a separate check.
Recorded status: available
Recorded scope: all unordered pairs of the displayed 18 exponents and their corresponding powers of 2 in F_101
Complete recorded scope and conditions
{
"kind": "bounded",
"statement": "all unordered pairs of the displayed 18 exponents and their corresponding powers of 2 in F_101",
"bounds": {
"field_order": {
"min": 101,
"max": 101
},
"exponent_count": {
"min": 18,
"max": 18
},
"unordered_pairs": {
"min": 153,
"max": 153
},
"target_elements": {
"min": 100,
"max": 100
}
},
"exhaustive": true
}Originating problem: Minimum distinct-product basis of F_101
Recorded relationships: The minimum lies between 15 and 18
Authored record and scope
- Authored title
- Exact replay of the 18-element product basis
- Record type
- artifact
- Stored status
- available
- Evidence grade
- executable
- Recorded scope data
- { "kind": "bounded", "statement": "all unordered pairs of the displayed 18 exponents and their corresponding powers of 2 in F_101", "bounds": { "field_order": { "min": 101, "max": 101 }, "exponent_count": { "min": 18, "max": 18 }, "unordered_pairs": { "min": 153, "max": 153 }, "target_elements": { "min": 100, "max": 100 } }, "exhaustive": true }
- Linked research record IDs
- R220
2Authored explanation
The program first certifies that 2 has order 100 by checking the two prime divisors of 100. It then computes the powers indexed by the displayed exponent set. Every unordered pair is evaluated once in the exponent group and once in the field. Both images must equal their full target sets.
The multiplicity distribution of the modular sums is 70 classes represented once, 15 represented twice, 12 represented three times, two represented four times, and one represented nine times. These counts account for all 153 pairs. The canonical output line has SHA-256 digest `90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0`.
Files and source
Files embedded in this record. Matching a file hash confirms its identity.
- R218.txt1,473 bytes · No SHA-256 recorded
Preview R218.txt
from collections import Counter import hashlib P = 101 EXPONENTS = [0, 1, 4, 10, 16, 18, 23, 29, 36, 50, 57, 63, 68, 70, 76, 82, 85, 86] EXPECTED_RESIDUES = [1, 2, 16, 14, 88, 49, 53, 59, 78, 100, 74, 90, 52, 6, 81, 33, 62, 23] EXPECTED_DIGEST = "90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0" assert pow(2, 100, P) == 1 assert pow(2, 50, P) != 1 assert pow(2, 20, P) != 1 assert len(EXPONENTS) == len(set(EXPONENTS)) == 18 residues = [pow(2, exponent, P) for exponent in EXPONENTS] assert residues == EXPECTED_RESIDUES assert len(set(residues)) == 18 sum_counts = Counter() product_counts = Counter() for i in range(18): for j in range(i + 1, 18): sum_counts[(EXPONENTS[i] + EXPONENTS[j]) % 100] += 1 product_counts[(residues[i] * residues[j]) % P] += 1 assert set(sum_counts) == set(range(100)) assert set(product_counts) == set(range(1, P)) assert sum(sum_counts.values()) == sum(product_counts.values()) == 153 assert Counter(sum_counts.values()) == Counter({1: 70, 2: 15, 3: 12, 4: 2, 9: 1}) summary = ( "order=100;" "exponents=" + ",".join(map(str, EXPONENTS)) + ";" "residues=" + ",".join(map(str, residues)) + ";" "pairs=153;" f"sum_image={len(sum_counts)};product_image={len(product_counts)};" f"min_mult={min(sum_counts.values())};max_mult={max(sum_counts.values())}" ) digest = hashlib.sha256(summary.encode()).hexdigest() assert digest == EXPECTED_DIGEST print(summary) print("sha256=" + digest)File identity
- Recorded filename
- R218.txt
- Download SHA-256
- 33c495025775f36af85b5b39de300f62bc86f0425edcafd334b497d26b42b3cf
Continue this work
Replay material: complete
4Reproduce
The command, source, environment, and expected result are recorded.
python3 check.pyVerification source: cs.uwaterloo.ca ↗, Inline Python 3 computation executed on 2026-07-24
Expected output
order=100;exponents=0,1,4,10,16,18,23,29,36,50,57,63,68,70,76,82,85,86;residues=1,2,16,14,88,49,53,59,78,100,74,90,52,6,81,33,62,23;pairs=153;sum_image=100;product_image=100;min_mult=1;max_mult=9
sha256=90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0
Recorded artifact fields
5What it produced
Execution
6How it connects
Evidence for
- 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": "R218",
"content_hash": null,
"slug": "dpb101-artifact-eighteen-point-cover-check",
"type": "artifact",
"title": "Exact replay of the 18-element product basis",
"summary": "A dependency-free Python program checks the generator order, all 153 pairs, and both 100-element images.",
"relevance": "For Minimum distinct-product basis of F_101, record dpb101-artifact-eighteen-point-cover-check (“Exact replay of the 18-element product basis”) supplies evidence or a replay used to check the packet. The record states: A dependency-free Python program checks the generator order, all 153 pairs, and both 100-element images.",
"relevance_source": "recorded",
"body": "The program first certifies that 2 has order 100 by checking the two prime divisors of 100. It then computes the powers indexed by the displayed exponent set. Every unordered pair is evaluated once in the exponent group and once in the field. Both images must equal their full target sets.\n\nThe multiplicity distribution of the modular sums is 70 classes represented once, 15 represented twice, 12 represented three times, two represented four times, and one represented nine times. These counts account for all 153 pairs. The canonical output line has SHA-256 digest `90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0`.",
"status": "available",
"evidence_grade": "executable",
"scope": {
"kind": "bounded",
"statement": "all unordered pairs of the displayed 18 exponents and their corresponding powers of 2 in F_101",
"bounds": {
"field_order": {
"min": 101,
"max": 101
},
"exponent_count": {
"min": 18,
"max": 18
},
"unordered_pairs": {
"min": 153,
"max": 153
},
"target_elements": {
"min": 100,
"max": 100
}
},
"exhaustive": true
},
"reproduction": {
"schema": "theoremdb-reproduction-v1",
"readiness": "complete",
"kind": "inline_python_computation",
"command": "python3 check.py",
"runtime": "Python 3 standard library",
"citation": {
"url": "https://cs.uwaterloo.ca/journals/JIS/VOL7/Haanpaa/haanpaa.html",
"locator": "Inline Python 3 computation executed on 2026-07-24"
},
"outputs": "order=100;exponents=0,1,4,10,16,18,23,29,36,50,57,63,68,70,76,82,85,86;residues=1,2,16,14,88,49,53,59,78,100,74,90,52,6,81,33,62,23;pairs=153;sum_image=100;product_image=100;min_mult=1;max_mult=9\nsha256=90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0\n",
"inline_source": "from collections import Counter\nimport hashlib\n\nP = 101\nEXPONENTS = [0, 1, 4, 10, 16, 18, 23, 29, 36, 50, 57, 63, 68, 70, 76, 82, 85, 86]\nEXPECTED_RESIDUES = [1, 2, 16, 14, 88, 49, 53, 59, 78, 100, 74, 90, 52, 6, 81, 33, 62, 23]\nEXPECTED_DIGEST = \"90143a42f6b43f9dde66574827f9954b8b90d7b9a43aa5d2d40d14e840c68ff0\"\n\nassert pow(2, 100, P) == 1\nassert pow(2, 50, P) != 1\nassert pow(2, 20, P) != 1\nassert len(EXPONENTS) == len(set(EXPONENTS)) == 18\nresidues = [pow(2, exponent, P) for exponent in EXPONENTS]\nassert residues == EXPECTED_RESIDUES\nassert len(set(residues)) == 18\nsum_counts = Counter()\nproduct_counts = Counter()\nfor i in range(18):\n for j in range(i + 1, 18):\n sum_counts[(EXPONENTS[i] + EXPONENTS[j]) % 100] += 1\n product_counts[(residues[i] * residues[j]) % P] += 1\nassert set(sum_counts) == set(range(100))\nassert set(product_counts) == set(range(1, P))\nassert sum(sum_counts.values()) == sum(product_counts.values()) == 153\nassert Counter(sum_counts.values()) == Counter({1: 70, 2: 15, 3: 12, 4: 2, 9: 1})\nsummary = (\n \"order=100;\"\n \"exponents=\" + \",\".join(map(str, EXPONENTS)) + \";\"\n \"residues=\" + \",\".join(map(str, residues)) + \";\"\n \"pairs=153;\"\n f\"sum_image={len(sum_counts)};product_image={len(product_counts)};\"\n f\"min_mult={min(sum_counts.values())};max_mult={max(sum_counts.values())}\"\n)\ndigest = hashlib.sha256(summary.encode()).hexdigest()\nassert digest == EXPECTED_DIGEST\nprint(summary)\nprint(\"sha256=\" + digest)\n"
},
"formal_statement": null,
"source": {
"url": "https://cs.uwaterloo.ca/journals/JIS/VOL7/Haanpaa/haanpaa.html",
"locator": "Inline Python 3 computation executed on 2026-07-24"
},
"models": [],
"continuation": null,
"relations": [
{
"slug": "R220",
"title": "The minimum lies between 15 and 18",
"object_type": "claim",
"relation": "evidences",
"direction": "outgoing"
},
{
"slug": "distinct-product-basis-f101",
"title": "distinct product basis f101",
"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.