Research source · python
check_prefix_cylinder_composition.py
tools/research/check_prefix_cylinder_composition.py
227 lines. Source is displayed for inspection; it is not executed by this page.
File fingerprint
SHA-256: 80fd8ce31741f8704a6b20f5b4c876b5f3859af893c2d648b08a377b31092718
#!/usr/bin/env python3
"""Independent finite checks for reader30, not a native timing implementation.
The streaming arithmetic uses bit tuples and signed unit stacks. The oracle
uses literal sets and enumerates cylinders. Immutable snapshots are retained.
"""
from dataclasses import dataclass
from itertools import product, permutations
from collections import Counter
import json
import random
C = Counter()
def words(n):
return tuple(''.join(x) for x in product('01', repeat=n))
def signed_step(s, direction):
sign, units = s
if not units:
return direction, (None,)
if sign == direction:
return sign, (None,) + units
return (sign, units[1:]) if len(units) > 1 else (0, ())
@dataclass(frozen=True)
class Row:
prefix: str
count_bits: tuple
seen: frozenset
good: bool
quota: tuple
def insert(row, w, bounded=False):
n = len(w)
old_bits = row.count_bits if row else (0,) * (n + 1)
old_p = row.prefix if row else None
seen = row.seen if row else frozenset()
quota = row.quota if row else (None,) * n
duplicate = w in seen
carry, ones, delta, prefix, candidate = 1, 0, (0, ()), '', []
common = True
for i, bit in enumerate(w):
common = common and (old_p is None or (i < len(old_p) and old_p[i] == bit))
if common:
prefix += bit
else:
delta = signed_step(delta, 1)
z = old_bits[i] ^ carry
carry = old_bits[i] & carry
candidate.append(z)
if z:
ones = min(2, ones + 1)
elif ones == 0:
delta = signed_step(delta, -1)
C['streamed_bits'] += 1
z = old_bits[n] ^ carry
carry = old_bits[n] & carry
candidate.append(z)
assert not carry
if z:
ones = min(2, ones + 1)
good = ones == 1 and not delta[1]
if duplicate:
assert prefix == old_p
C['duplicate_updates'] += 1
return row
if bounded and not quota:
C['degree_rejections'] += 1
return None
return Row(prefix, tuple(candidate), seen | {w}, good,
quota[1:] if quota else ())
def oracle_p(s):
first = next(iter(s))
return next(first[:i] for i in range(len(first), -1, -1)
if all(x.startswith(first[:i]) for x in s))
def audit(row, n):
p = oracle_p(row.seen)
cylinder = frozenset(p + t for t in words(n - len(p)))
assert row.prefix == p
assert row.good == (row.seen == cylinder)
assert sum(b << i for i, b in enumerate(row.count_bits)) == len(row.seen)
C['row_audits'] += 1
def trie_set(t, key):
# Semantic persistent path copying, not a claim of delimiter-time execution.
marked, zero, one = t or (False, None, None)
if not key:
return True, zero, one
if key[0] == '0':
zero = trie_set(zero, key[1:])
else:
one = trie_set(one, key[1:])
return marked, zero, one
def trie_hits(t, word):
if t and t[0]:
return True
for b in word:
if not t:
return False
t = t[1 + int(b)]
if t and t[0]:
return True
return False
@dataclass(frozen=True)
class Source:
committed: tuple | None = None
pending: str | None = None
selected: tuple = ()
def select(s, row, width):
t = s.committed
if s.pending is not None:
assert len(s.pending) <= width
t = trie_set(t, s.pending)
C['worker_prefix_bits'] += len(s.pending)
return Source(t, row.prefix if row else None,
s.selected + ((row.seen if row else frozenset()),))
def query(s, b, width):
return len(b) == width and (trie_hits(s.committed, b) or
(s.pending is not None and b.startswith(s.pending)))
def source_audit(s, width):
raw = frozenset().union(*s.selected)
for b in words(width) + words(max(0, width - 1)) + ('0' * (width + 1),):
assert query(s, b, width) == (b in raw)
C['product_queries'] += 1
def main():
rng = random.Random(147)
snapshots = []
for n in range(1, 4):
universe = words(n)
streams = product(universe, repeat=5) if n <= 2 else (
tuple(rng.choice(universe) for _ in range(20)) for _ in range(1200))
for stream in streams:
row = None
for w in stream:
row = insert(row, w)
audit(row, n)
snapshots.append((row, n))
# All orders of a complete width3 cylinder of size4, including duplicates.
for order in permutations(('000', '001', '010', '011')):
row = None
for w in order + order[:2]:
row = insert(row, w)
audit(row, 3)
assert row.good and row.prefix == '0'
C['complete_orders'] += 1
for n in range(1, 7):
universe = words(n)
rows = []
for plen in range(n + 1):
p = rng.choice(words(plen))
members = list(p + tail for tail in words(n - plen))
rng.shuffle(members)
row = None
for w in members:
row = insert(row, w)
audit(row, n)
assert row.good
rows.append(row)
history = [Source()]
for _ in range(120):
old = rng.choice(history)
new = select(old, rng.choice(rows + [None]), n)
history.append(new)
source_audit(old, n)
source_audit(new, n)
C['source_branches'] += 1
for s in history:
source_audit(s, n)
for row, n in snapshots[::13]:
audit(row, n)
branch = insert(row, rng.choice(words(n)))
audit(branch, n)
audit(row, n)
C['retained_row_branches'] += 1
# Check global invalid-row count under interleaving, loss and recovery.
table, raw, bad = {}, {}, 0
for _ in range(3000):
v, w = rng.choice(words(4)), rng.choice(words(4))
old = table.get(v)
new = insert(old, w)
bad += int(not new.good) - int(old is not None and not old.good)
table = dict(table, **{v: new})
raw.setdefault(v, set()).add(w)
expected = sum(set(p + t for t in words(4 - len(p))) != s
for s in raw.values() for p in [oracle_p(s)])
assert bad == expected
C['global_gate_updates'] += 1
# Unbounded-degree controls inside d(v)<=|v|: width=2^r, degree=width.
for r in range(1, 7):
n = 1 << r
p = '10' * ((n - r) // 2) + ('1' if (n - r) % 2 else '')
row = None
for tail in words(r):
row = insert(row, p + tail, bounded=True)
assert row is not None
assert row.good and len(row.seen) == n and not row.quota
assert insert(row, next(iter(row.seen)), bounded=True) is row
outside = ('1' if p[0] == '0' else '0') + '0' * (n - 1)
assert insert(row, outside, bounded=True) is None
C['name_linear_controls'] += 1
def cover_count(s, p=''):
members = {x for x in s if x.startswith(p)}
if not members:
return 0
if members == {p + t for t in words(4 - len(p))}:
return 1
return cover_count(s, p + '0') + cover_count(s, p + '1')
x = {'0000', '0001', '1000', '1001'}
y = {'0000', '0010', '1000', '1010'}
assert oracle_p(x) == oracle_p(y) == '' and len(x) == len(y) == 4
assert (cover_count(x), cover_count(y)) == (2, 4)
C['equal_summary_frontier_counterexamples'] += 1
print(json.dumps({'checks': dict(sorted(C.items())),
'native_recognizer_implemented': False,
'native_timing_evidence': False}, indent=2))
if __name__ == '__main__':
main()