TheoremDB

Problem packetWorkR488

R488artifactStatus: availableEvidence: ReproducedReplay: partialexhaustive over its scope

[#R488] Deterministic majority-update and symmetry-orbit verifier

View replayOpen source ↗

1Summary

A standard-library Python program checks the reported witness, its 128 distinct symmetry images, and all 510 stripe fixed points.

Rows and columns are indexed modulo eight. The update routine counts the four neighbors separately and retains the center bit exactly when that count is two. The classifier compares consecutive states for a fixed point and states two steps apart for a genuine two-cycle.

The program checks the candidate's displayed starting state against its reported alternating pair. It then forms every torus translation of the start and every complement, verifies that all 128 states are distinct, and classifies each one as reaching a genuine two-cycle. A final exhaustive loop constructs the union of the monochromatic-row and monochromatic-column families, checks that it has size 510, and verifies every member is fixed.

Reproduced evidence. Recorded scope: the candidate's displayed 8 by 8 initial configuration, all of its torus translations and color complements, and the 510 monochromatic-row or monochromatic-column configurations.

2Reproduce

Replay package: 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 and execute the resulting Python program
Runtime
Python 3.10 or later, standard library only

Verification source: doi.org ↗, Inline Python 3 verifier prepared on 2026-07-25

Missing for a complete replay: command, expected output.

3Source code

View source code
Source code
from hashlib import sha256

MASK=(1<<64)-1
START_ROWS=('01100100','11101001','00100000','01000101','01111000','11001111','00111110','10000111')
PAIR_A_ROWS=('11100000','11100000','00100000','01000000','01111100','11111111','00011111','00000111')
PAIR_B_ROWS=('11100000','11100000','01000000','00100000','01111100','11111111','00011111','00000111')

def parse(rows):
    assert len(rows)==8 and all(len(row)==8 for row in rows)
    return sum((row[c]=='1')<<(8*r+c) for r,row in enumerate(rows) for c in range(8))

def update(state):
    out=0
    for r in range(8):
        for c in range(8):
            neighbors=((r-1,c),(r+1,c),(r,c-1),(r,c+1))
            ones=sum((state>>(8*(rr%8)+(cc%8)))&1 for rr,cc in neighbors)
            old=(state>>(8*r+c))&1
            new=1 if ones>=3 else 0 if ones<=1 else old
            out|=new<<(8*r+c)
    return out

def classify(initial,limit=128):
    state=initial
    for transient in range(limit+1):
        nxt=update(state)
        if nxt==state:
            return 'fixed',transient,state,nxt
        if update(nxt)==state:
            return 'two_cycle',transient,state,nxt
        state=nxt
    raise RuntimeError('settling limit exceeded')

def translate(state,dr,dc):
    out=0
    for r in range(8):
        for c in range(8):
            bit=(state>>(8*r+c))&1
            out|=bit<<(8*((r+dr)%8)+(c+dc)%8)
    return out

start=parse(START_ROWS)
pair={parse(PAIR_A_ROWS),parse(PAIR_B_ROWS)}
kind,transient,left,right=classify(start)
assert kind=='two_cycle' and {left,right}==pair

images=set()
for dr in range(8):
    for dc in range(8):
        shifted=translate(start,dr,dc)
        images.add(shifted)
        images.add(shifted^MASK)
assert len(images)==128
assert all(classify(state)[0]=='two_cycle' for state in images)

stripes=set()
for pattern in range(256):
    by_rows=sum((255 if (pattern>>r)&1 else 0)<<(8*r) for r in range(8))
    by_columns=sum((pattern>>c&1)<<(8*r+c) for r in range(8) for c in range(8))
    stripes.add(by_rows)
    stripes.add(by_columns)
assert len(stripes)==510
assert all(update(state)==state for state in stripes)

report=f'witness_transient={transient} witness_orbit={len(images)} fixed_stripes={len(stripes)} pair={min(pair):016x},{max(pair):016x}'
print(report)
print(sha256((report+'\n').encode()).hexdigest())

4What it produced

Expected stdout
witness_transient=1 witness_orbit=128 fixed_stripes=510 pair=e0f8ff3e02040707,e0f8ff3e04020707 a5b90117d2f6e887b5cb723bf0dc3cdd2790ed7b56012b5f15003e7c35cfdb7e
Report sha256
a5b90117d2f6e887b5cb723bf0dc3cdd2790ed7b56012b5f15003e7c35cfdb7e
Witness initial rows
01100100/11101001/00100000/01000101/01111000/11001111/00111110/10000111
Reported pair a rows
11100000/11100000/00100000/01000000/01111100/11111111/00011111/00000111
Reported pair b rows
11100000/11100000/01000000/00100000/01111100/11111111/00011111/00000111
Symmetry images
128
Fixed stripe configurations
510

5How it connects

Supported by

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": "R488",
  "content_hash": null,
  "slug": "maj8torus-artifact-witness-and-update-verifier",
  "type": "artifact",
  "title": "Deterministic majority-update and symmetry-orbit verifier",
  "summary": "A standard-library Python program checks the reported witness, its 128 distinct symmetry images, and all 510 stripe fixed points.",
  "relevance": "For Two-cycle probability for majority dynamics on the eight torus, record maj8torus-artifact-witness-and-update-verifier (“Deterministic majority-update and symmetry-orbit verifier”) supplies evidence or a replay used to check the packet. The record states: A standard-library Python program checks the reported witness, its 128 distinct symmetry images, and all 510 stripe fixed points.",
  "relevance_source": "recorded",
  "body": "Rows and columns are indexed modulo eight. The update routine counts the four neighbors separately and retains the center bit exactly when that count is two. The classifier compares consecutive states for a fixed point and states two steps apart for a genuine two-cycle.\n\nThe program checks the candidate's displayed starting state against its reported alternating pair. It then forms every torus translation of the start and every complement, verifies that all 128 states are distinct, and classifies each one as reaching a genuine two-cycle. A final exhaustive loop constructs the union of the monochromatic-row and monochromatic-column families, checks that it has size 510, and verifies every member is fixed.",
  "status": "available",
  "evidence_grade": "executable",
  "scope": {
    "kind": "bounded",
    "statement": "the candidate's displayed 8 by 8 initial configuration, all of its torus translations and color complements, and the 510 monochromatic-row or monochromatic-column configurations",
    "bounds": {
      "witness_symmetry_images": {
        "min": 128,
        "max": 128
      },
      "checked_fixed_configurations": {
        "min": 510,
        "max": 510
      }
    },
    "exhaustive": true
  },
  "reproduction": {
    "schema": "theoremdb-reproduction-v1",
    "readiness": "partial",
    "kind": "inline_python_deterministic_verifier",
    "entrypoint": "Join source_lines with LF characters and execute the resulting Python program",
    "runtime": "Python 3.10 or later, standard library only",
    "citation": {
      "url": "https://doi.org/10.1016/0166-218X(81)90034-2",
      "locator": "Inline Python 3 verifier prepared on 2026-07-25"
    },
    "inline_source": [
      "from hashlib import sha256",
      "",
      "MASK=(1<<64)-1",
      "START_ROWS=('01100100','11101001','00100000','01000101','01111000','11001111','00111110','10000111')",
      "PAIR_A_ROWS=('11100000','11100000','00100000','01000000','01111100','11111111','00011111','00000111')",
      "PAIR_B_ROWS=('11100000','11100000','01000000','00100000','01111100','11111111','00011111','00000111')",
      "",
      "def parse(rows):",
      "    assert len(rows)==8 and all(len(row)==8 for row in rows)",
      "    return sum((row[c]=='1')<<(8*r+c) for r,row in enumerate(rows) for c in range(8))",
      "",
      "def update(state):",
      "    out=0",
      "    for r in range(8):",
      "        for c in range(8):",
      "            neighbors=((r-1,c),(r+1,c),(r,c-1),(r,c+1))",
      "            ones=sum((state>>(8*(rr%8)+(cc%8)))&1 for rr,cc in neighbors)",
      "            old=(state>>(8*r+c))&1",
      "            new=1 if ones>=3 else 0 if ones<=1 else old",
      "            out|=new<<(8*r+c)",
      "    return out",
      "",
      "def classify(initial,limit=128):",
      "    state=initial",
      "    for transient in range(limit+1):",
      "        nxt=update(state)",
      "        if nxt==state:",
      "            return 'fixed',transient,state,nxt",
      "        if update(nxt)==state:",
      "            return 'two_cycle',transient,state,nxt",
      "        state=nxt",
      "    raise RuntimeError('settling limit exceeded')",
      "",
      "def translate(state,dr,dc):",
      "    out=0",
      "    for r in range(8):",
      "        for c in range(8):",
      "            bit=(state>>(8*r+c))&1",
      "            out|=bit<<(8*((r+dr)%8)+(c+dc)%8)",
      "    return out",
      "",
      "start=parse(START_ROWS)",
      "pair={parse(PAIR_A_ROWS),parse(PAIR_B_ROWS)}",
      "kind,transient,left,right=classify(start)",
      "assert kind=='two_cycle' and {left,right}==pair",
      "",
      "images=set()",
      "for dr in range(8):",
      "    for dc in range(8):",
      "        shifted=translate(start,dr,dc)",
      "        images.add(shifted)",
      "        images.add(shifted^MASK)",
      "assert len(images)==128",
      "assert all(classify(state)[0]=='two_cycle' for state in images)",
      "",
      "stripes=set()",
      "for pattern in range(256):",
      "    by_rows=sum((255 if (pattern>>r)&1 else 0)<<(8*r) for r in range(8))",
      "    by_columns=sum((pattern>>c&1)<<(8*r+c) for r in range(8) for c in range(8))",
      "    stripes.add(by_rows)",
      "    stripes.add(by_columns)",
      "assert len(stripes)==510",
      "assert all(update(state)==state for state in stripes)",
      "",
      "report=f'witness_transient={transient} witness_orbit={len(images)} fixed_stripes={len(stripes)} pair={min(pair):016x},{max(pair):016x}'",
      "print(report)",
      "print(sha256((report+'\\n').encode()).hexdigest())"
    ],
    "missing": [
      "command",
      "expected_output"
    ]
  },
  "formal_statement": null,
  "source": {
    "url": "https://doi.org/10.1016/0166-218X(81)90034-2",
    "locator": "Inline Python 3 verifier prepared on 2026-07-25"
  },
  "models": [],
  "relations": [
    {
      "slug": "R490",
      "title": "The exact numerator remains open, with a certified interval of 128 through 18,446,744,073,709,551,106",
      "object_type": "claim",
      "relation": "supports",
      "direction": "outgoing"
    },
    {
      "slug": "R491",
      "title": "Every orbit eventually has period one or two",
      "object_type": "claim",
      "relation": "supports",
      "direction": "incoming"
    },
    {
      "slug": "majority-eight-torus-two-cycle-probability",
      "title": "majority eight torus two cycle probability",
      "object_type": "problem",
      "relation": "recorded_for",
      "direction": "outgoing"
    }
  ]
}

7Provenance

View source, identifiers, and projection details
Project
majority-eight-torus-two-cycle-probability
Locator
Inline Python 3 verifier prepared on 2026-07-25
License
CC0-1.0
Contributors
TheoremDB entry research, 2026-07-25
Public record
R488
Stable alias
maj8torus-artifact-witness-and-update-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.