From 7cbea87dabcbe89223c3c0ca1dfa3fb0fe9b6b8c Mon Sep 17 00:00:00 2001 From: flyingviper <44173173+flyingviper@users.noreply.github.com> Date: Sun, 25 Oct 2026 22:10:02 +0100 Subject: [PATCH 1/2] Retain attributed PR5580 word for owned-coding audit --- .../inputs/README.md | 20 ++++++++++++++++++ .../inputs/pr5580-WORD.json.gz | Bin 0 -> 105115 bytes 2 files changed, 20 insertions(+) create mode 100644 research/p104-owned-coding-boundaries/inputs/README.md create mode 100644 research/p104-owned-coding-boundaries/inputs/pr5580-WORD.json.gz diff --git a/research/p104-owned-coding-boundaries/inputs/README.md b/research/p104-owned-coding-boundaries/inputs/README.md new file mode 100644 index 0000000000..84d6228229 --- /dev/null +++ b/research/p104-owned-coding-boundaries/inputs/README.md @@ -0,0 +1,20 @@ +# Retained source + +`pr5580-WORD.json.gz` is a byte-identical copy of +`research/p104-event-contact-step/WORD.json.gz` from PR #5580, head +`6efa248cf456d6101d757e9d09ba29711d18a13a`: +https://github.com/CrocSwap/integer-mult-bounds/pull/5580 + +The source construction and event-contact change are by Ali Romman with +substantial OpenAI Codex assistance. This package does not claim those as new. +Retain Joel Pulikkan (@GamingPuzzled)'s PR5569 priced helper handoff and PR5472 +successor mechanism; @DreamingOfClouds's PR5561 free-endpoint word and event +toolkit; @thu-nmrc's PR5551 coupled contacts; Ali Romman's PR5544/5545 complete +caller and source closure; Gareth Davidson, David Arias and Cinna Davis for +the P104 word, coalescing and private reuse; Cinna Davis for the controller; +Jacob Alan Sussman for productive recursion; zxv and Cao Yifan for interval, +compiler and native framework work. Earlier geometry, BIT and analytic source +notices remain in the originating source closure. + +Apache-2.0. The retained word is evidence, not new work. Registered replay +reads this local file and does not download or execute foreign code. diff --git a/research/p104-owned-coding-boundaries/inputs/pr5580-WORD.json.gz b/research/p104-owned-coding-boundaries/inputs/pr5580-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..9434855e7dad0d0236d23210b3e71a2b83a9ae64 GIT binary patch literal 105115 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 ezyAHd|HuFMmw)}U{_+3)FaJNWA;@-2& Date: Sun, 25 Oct 2026 22:12:03 +0100 Subject: [PATCH 2/2] Prove rational recoding and joint owned-boundary limits for P104 --- .../JOINT-BOUNDARY.md | 124 +++ .../p104-owned-coding-boundaries/PROOF.md | 107 +++ .../p104-owned-coding-boundaries/README.md | 105 ++ .../p104-owned-coding-boundaries/RESULT.json | 903 ++++++++++++++++++ .../p104-owned-coding-boundaries/SOURCES.json | 31 + .../p104-owned-coding-boundaries/TASK.json | 113 +++ .../p104-owned-coding-boundaries/VERIFY.json | 21 + .../classification.py | 112 +++ .../p104-owned-coding-boundaries/delivery.py | 171 ++++ .../joint_boundary.py | 199 ++++ .../p104-owned-coding-boundaries/verify.py | 82 ++ 11 files changed, 1968 insertions(+) create mode 100644 research/p104-owned-coding-boundaries/JOINT-BOUNDARY.md create mode 100644 research/p104-owned-coding-boundaries/PROOF.md create mode 100644 research/p104-owned-coding-boundaries/README.md create mode 100644 research/p104-owned-coding-boundaries/RESULT.json create mode 100644 research/p104-owned-coding-boundaries/SOURCES.json create mode 100644 research/p104-owned-coding-boundaries/TASK.json create mode 100644 research/p104-owned-coding-boundaries/VERIFY.json create mode 100644 research/p104-owned-coding-boundaries/classification.py create mode 100644 research/p104-owned-coding-boundaries/delivery.py create mode 100644 research/p104-owned-coding-boundaries/joint_boundary.py create mode 100644 research/p104-owned-coding-boundaries/verify.py diff --git a/research/p104-owned-coding-boundaries/JOINT-BOUNDARY.md b/research/p104-owned-coding-boundaries/JOINT-BOUNDARY.md new file mode 100644 index 0000000000..7132967f59 --- /dev/null +++ b/research/p104-owned-coding-boundaries/JOINT-BOUNDARY.md @@ -0,0 +1,124 @@ +# A joint moment floor for the complete eight-owned-block boundary + +Source: PR5580 head `6efa248cf456d6101d757e9d09ba29711d18a13a`, compressed word +SHA256 `b2a98c4bd0dbe86c09e9d15ee060dcf1aab09dbef90aa1e2127676f4039f406b`. +No new kappa or construction is claimed. + +## The deliberately enlarged boundary + +The replacement interval is `[13378,13485)` in the source program, from the +first owned INIT to just after the last owned CLEAR. Its public boundary has +41 roles: eight distinct copied producers and 33 distinct recipients. No +other public role is read or modified within the literal interval. + +Treat these 41 public entry values as independent coordinates. The verifier +checks that their actual prefix rows have rank41 on original arbitrary public +inputs. It also checks that the fixed suffix observes all41 public coordinates +with column rank41. Therefore an exact whole-word replacement using only these +roles must implement the same local public map: from `S(R-T)P=0`, right and left +inverses imply `R=T`. It may not rely on correlated values in outside registers. + +Every producer enters and exits at dimension8. Every recipient keeps its own +arbitrary input and gains a nonzero multiple of exactly one producer. For each +producer, at least one recipient exits at dimension1. Projection of these eight +observations onto the eight independent producer coordinates has rank8. + +An allowed replacement can change every internal scalar dependency, introduce +arbitrarily many zero-initialized owned fields, share private work across all +eight original lifetimes, and use arbitrary rational scalar operations. It +must preserve all public entry/exit values and frames, clear private outputs, +use common-frame scalar operations, ascending public transports and paid +descending owned transports. It introduces no public helper or new productive +credit. This is stronger than seven separate fixed-star theorems, but weaker +than a global lower bound allowing earlier preparation or outside information. + +## Seven information cuts + +Fix a dimension threshold `k` in `{2,3,4,5,6,7,8}`. Project every current scalar +value onto its eight producer coordinates. Let `V_k` be the span of every such +projected row ever observed in a register with frame dimension less than k. +The span retains past observations after storage is erased or moved away. + +Initially `V_k=0`: the only boundary coordinates containing producer information +are the eight producer registers themselves, all at dimension8. Other input +coordinates are independent recipient values, whose producer projections vanish. + +Scalar combinations at a common frame below k do not enlarge `V_k`. Operations +above k stay above k. INIT is zero, CLEAR cannot add information, and a public +ascent cannot carry information from above the threshold to below it. Only an +owned descent from dimension `a>=k` to `b= c * 7^(t-1). +``` + +For `r<=7`, this follows from `r^(t-1)>=7^(t-1)` and `c<=r`. For `r>=7`, +it follows from `r^t>=7^t` and `c<=7`. Summing over all owned transports and +then summing the seven rank-eight cut requirements gives + +``` +total owned paid moment >= 56 * 7^(t-1) = 8 H7(t). +``` + +The source's public boundary has total ascending dimension change31, spread +over31 fields each changing by one dimension. Every physical public field must +retain its own endpoint. Its required rank-one ascent costs H1, independently +of the owned transports counted above. Thus every replacement pays at least + +``` +31 H1(t) + 8 H7(t). +``` + +The literal word instead pays + +``` +33 H1(t) + H2(t) + H3(t) + 7 H7(t). +``` + +Therefore the maximum possible raw recursive saving inside this full shared +boundary is at most + +``` +2 H1(t) + H2(t) + H3(t) - H7(t). +``` + +Both have the same rank mass87 at t=1. The cap is the exceptional role738's +fragmentation penalty. The argument does not prove this cap attainable; extra +middle-level delivery constraints may make the actual optimum higher. + +## Crucial distinction from original-input dimensions + +The original word's relevant inputs mostly enter on dimension0 or1 frames. +Those original variables do NOT justify dimension cuts requiring eight +high-dimensional sources. The theorem is valid here only because it uses the +later 41-role boundary, treats its coordinates independently (with verified +prefix and suffix ranks), and disallows reading outside public side information. +Moving the boundary earlier can invalidate the source-dimension hypothesis. + +This is not a sum of the nonadditive original-support loss-space bounds. It is +a new joint information-flow argument under a stronger boundary contract. +It gives no unrestricted whole-word tariff optimum, new productive credit, +ordinary-pass improvement, native admission or new multiplication bound. + +## Certificate + +`joint_boundary.py` reconstructs all source scalar rows and frame/lifetime +legality; finds the interval and its41roles; proves both boundary ranks; checks +the exact recipient map, eight one-dimensional independent observations, +public31H1 tariff and each of the seven source crossing counts. A scope control +duplicates one observation and correctly lowers the observation rank to7. + +Prepared with substantial OpenAI Codex assistance. Apache-2.0. Retain the PR5580, +PR5569, PR5561 and complete P104 predecessor attribution in the source package. diff --git a/research/p104-owned-coding-boundaries/PROOF.md b/research/p104-owned-coding-boundaries/PROOF.md new file mode 100644 index 0000000000..c73dbf8167 --- /dev/null +++ b/research/p104-owned-coding-boundaries/PROOF.md @@ -0,0 +1,107 @@ +# Rational recoding and shared-boundary limits for P104 owned values + +All assertions below are about the literal PR5580 word at head +`6efa248cf456d6101d757e9d09ba29711d18a13a`. They do not assert a new +construction, global optimum, native implementation, or multiplication bound. + +## 1. A complete classification of the unchanged producer span + +Let `D_0,...,D_7` be the eight public scalar rows copied into owned fields +735 through 742. Rows are rational covectors on **all 735 arbitrary public +inputs**, including the original zero-frame helper inputs. The verifier +reconstructs the prefix from the identity, rather than assuming those helper +inputs vanish. It confirms that these producer values do not change between +the first owned INIT and their respective COPY events. + +For a covector `x`, define its original-entry support to be the binary span +of the original entry frames of inputs with nonzero coefficient in `x`. +This is a property of its covector, not an assertion that `x` can be built +at that frame with no paid work. + +Every proper subspace of the ambient `F_2^9` lies in a hyperplane `ker(h)` +for some nonzero binary normal `h`. For each of the 511 normals, project +the eight rational covectors onto original input coordinates whose entry +frames are not contained in that hyperplane. A combination `sum a_i D_i` +has support inside the hyperplane exactly when its coefficient vector `a` +is in this projected matrix's rational kernel. + +Exact Fraction elimination gives 495 matrices of rank eight and 16 of rank +seven. The latter have one-dimensional kernels. Every listed kernel mode +has support dimension exactly eight, checked by binary elimination. Hence: + +* No nonzero rational combination of the unchanged producers has + original-entry support dimension at most seven. +* Exactly 16 projective combinations have proper support: the eight + original producers and eight mixed modes listed in RESULT.json. +* Every other nonzero combination has support dimension nine. + +This is an exhaustive rational statement, not a bounded coefficient search. +The independence minor below also excludes a nonzero coefficient vector +representing the zero covector. + +## 2. Direct nested delivery does not remove an original mode + +Let `L_i` be the fixed one-dimensional final delivery frame for `D_i`. +A mode with support hyperplane `ker(h)` can descend directly from that +hyperplane to `L_i` only if `h` annihilates `L_i`. The verifier tests every +one of the sixteen classified modes at every final delivery line. + +After removing `D_i`, exactly three mixed modes remain eligible at `L_i`. +Their coefficient vectors have rational rank three; adjoining the unit +vector for `D_i` raises that rank to four. RESULT.json records an exact +separating functional for each destination, annihilating all three +alternates and taking value one on `D_i`. + +This obstruction survives arbitrary corrections from original inputs +whose entry frame is zero. The eight producer covectors restricted to +nonzero-entry inputs have rank eight, witnessed by the explicitly checked +minor on columns `[0,1,2,4,5,6,9,12]`. Therefore a producer combination is +a zero-entry-input correction only when all eight coefficients vanish. + +This is a direct nested 8-to-1 delivery obstruction in the unchanged producer +span, starting at each mode's original-entry support hyperplane and using +fixed final delivery lines. +It does not rule out earlier owned preparation, intermediate payloads +outside that span, moving through a different recipient schedule, or +changed public dependencies. Nor does an entry-support hyperplane by +itself establish legal preparation of its mixed mode there. + +## 3. Joint transport floor across all eight blocks + +See [JOINT-BOUNDARY.md](JOINT-BOUNDARY.md) for the independent information-cut +argument and full contract. The interval `[13378,13485)` has 41 public +boundary fields: eight producers and 33 distinct recipients. Their entry +rows have rank 41; the unchanged suffix observes their exits with rank 41. +These verified facts force a replacement using only these public fields +to preserve the exact local map. + +The map carries eight independent producer coordinates from dimension-eight +inputs to dimension-one observations. At every dimension threshold 2 through +8, at least eight scalar values must cross downward in owned fields. +Common-frame scalar operations and public ascents cannot create a downward +crossing. The argument allows arbitrary rational dependencies, any number +of zero-initialized owned fields, erasures, and sharing across the blocks. + +For `H_r(t)=r^t`, `0 1}) + need(counts == {8: 495, 7: 16}, 'complete all-511 rational rank census') + need(len(modes) == 16 and sum(m['mixed'] for m in modes) == 8, 'eight original and eight mixed lines') + receipt = {'first_owned_init': first, 'source_roles': [e[2] for _, e in copies], + 'rank_counts': {str(k): v for k, v in sorted(counts.items())}, 'modes': modes, + 'scope': 'Every rational combination of the unchanged eight producer values; original-entry support geometry only.'} + return receipt, modes, producers diff --git a/research/p104-owned-coding-boundaries/delivery.py b/research/p104-owned-coding-boundaries/delivery.py new file mode 100644 index 0000000000..b316373d40 --- /dev/null +++ b/research/p104-owned-coding-boundaries/delivery.py @@ -0,0 +1,171 @@ +"""Exact direct-delivery gate for the supplied P104 sixteen-mode family. + +This does not establish that the family is complete: the all-hyperplane +classification is a separate obligation. Producer covectors must be extracted +independently from the word. This routine verifies their support geometry, the +supplied mixed-mode identities, and all eight quotient-space delivery tests. +""" +from fractions import Fraction as Q + + +def need(ok, why): + if not ok: + raise ValueError(why) + + +def rref(rows, width): + a = [[Q(x) for x in row] for row in rows] + need(all(len(row) == width for row in a), "matrix width") + pivots = [] + for col in range(width): + hit = next((j for j in range(len(pivots), len(a)) if a[j][col]), None) + if hit is None: + continue + k = len(pivots) + a[k], a[hit] = a[hit], a[k] + v = a[k][col] + a[k] = [x / v for x in a[k]] + for j in range(len(a)): + if j != k and a[j][col]: + v = a[j][col] + a[j] = [x - v * y for x, y in zip(a[j], a[k])] + pivots.append(col) + if len(pivots) == len(a): + break + return a, pivots + + +def rank(rows, width): + return len(rref(rows, width)[1]) + + +def dot(a, b): + return sum((x * y for x, y in zip(a, b)), Q(0)) + + +def parity_dot(a, b): + return (a & b).bit_count() % 2 + + +def binary_basis(vectors): + basis = {} + for x in vectors: + x = int(x) + while x: + p = x.bit_length() - 1 + if p in basis: + x ^= basis[p] + else: + basis[p] = x + break + return [basis[p] for p in sorted(basis, reverse=True)] + + +def sparse(row): + return {int(i): Q(v) for i, v in row.items() if Q(v)} + + +def mix(coefficients, producers): + out = {} + for a, row in zip(coefficients, producers): + for j, v in row.items(): + out[j] = out.get(j, Q(0)) + a * v + return {j: v for j, v in out.items() if v} + + +def separator(rows, target, n): + unit = [Q(int(j == target)) for j in range(n)] + a, pivots = rref([list(row) + [Q(0)] for row in rows] + [unit + [Q(1)]], n + 1) + need(n not in pivots, "target is in the alternate delivery span") + answer = [Q(0)] * n + for row, p in zip(a, pivots): + answer[p] = row[-1] + need(answer[target] == Q(1), "normalized separator") + need(all(dot(row, answer) == Q(0) for row in rows), "separator annihilates alternates") + return answer + + +def verify_delivery(word, exact_modes, producers): + """Return an exact receipt or raise ValueError; no asserts or float arithmetic. + + Scope: unchanged final payloads in span(D), direct nested 8-to-1 deliveries + starting at each payload's original-entry support, fixed final lines, and + arbitrary free corrections from zero-entry-frame original inputs. Earlier + owned preparation and intermediate components outside span(D) remain open. + """ + n = len(producers) + need(n == 8, "eight supplied source producers") + need(len(exact_modes) == 16, "sixteen supplied projective modes") + frames = word["frames"] + initial = [frames[f] for f in word["initial"]] + ninputs = word["public"] + need(len(initial) == ninputs, "original public input frames") + D = [sparse(p["initial_covector"]) for p in producers] + need(all(0 <= j < ninputs for row in D for j in row), "producer input indices") + nonzero_inputs = [j for j, frame in enumerate(initial) if frame] + projected = [[row.get(j, Q(0)) for j in nonzero_inputs] for row in D] + _, pivot_columns = rref(projected, len(nonzero_inputs)) + need(len(pivot_columns) == n, "producer independence modulo zero-entry inputs") + pivot_inputs = [nonzero_inputs[k] for k in pivot_columns] + minor = [[row.get(j, Q(0)) for j in pivot_inputs] for row in D] + need(rank(minor, n) == n, "explicit quotient independence minor") + + def support(row): + basis = binary_basis(v for j in row for v in initial[j]) + need(len(basis) == 8, "every tested payload has exact eight-dimensional entry support") + normals = [h for h in range(1, 512) if all(parity_dot(h, v) == 0 for v in basis)] + need(len(normals) == 1, "unique ambient-nine hyperplane normal") + return basis, normals[0] + + family = [] + lines = [] + for i, (p, row) in enumerate(zip(producers, D)): + event = word["program"][p["copy_event"]] + need(event == ["COPY", p["owned"], p["source_role"], "1", p["copy_frame"]], "producer COPY metadata") + final_basis = binary_basis(frames[p["clear_frame"]]) + need(len(final_basis) == 1, "fixed one-dimensional delivery frame") + lines.append(final_basis[0]) + basis, normal = support(row) + coeff = [Q(int(i == j)) for j in range(n)] + family.append({"name": f"D{i}", "coefficients": coeff, "normal": normal, "basis": basis}) + seen_original = set() + for m in exact_modes: + coeff = [Q(a) for a in m["coefficients"]] + need(len(coeff) == n and any(coeff), "mixed mode coefficient vector") + row = mix(coeff, D) + basis, normal = support(row) + need(normal == m["normal"], "mixed mode's recomputed entry support normal") + if "covector" in m: + need(row == sparse(m["covector"]), "mixed mode's exact rational covector identity") + original = next((i for i, f in enumerate(family[:n]) if f["coefficients"] == coeff), None) + if original is not None: + need(original not in seen_original, "unique original mode") + need(normal == family[original]["normal"], "original mode support identity") + seen_original.add(original) + else: + family.append({"name": f"E{normal}", "coefficients": coeff, "normal": normal, "basis": basis}) + need(len(seen_original) == n and len(family) == 16, "eight original and eight mixed modes") + need(len({m["normal"] for m in family}) == 16, "sixteen distinct support hyperplanes") + receipt = [] + for i, line in enumerate(lines): + own = family[i] + need(parity_dot(own["normal"], line) == 0, "original producer admits its direct nested delivery") + alternate = [m for m in family if m["name"] != own["name"] and parity_dot(m["normal"], line) == 0] + need(len(alternate) == 3 and all(m["name"].startswith("E") for m in alternate), "exactly three mixed admissible alternates") + rows = [m["coefficients"] for m in alternate] + need(rank(rows, n) == 3, "alternate coefficient rank three") + y = separator(rows, i, n) + unit = [Q(int(j == i)) for j in range(n)] + need(rank(rows + [unit], n) == 4, "target raises admissible rank") + receipt.append({"target": i, "delivery_line": line, + "admissible_alternates": [m["name"] for m in alternate], + "rank": 3, "target_in_span": False, + "separator": [str(v) for v in y]}) + return {"scope": "direct nested 8-to-1 sixteen-mode delivery, modulo zero-entry input corrections", + "quotient_rank": n, "quotient_pivot_inputs": pivot_inputs, + "quotient_minor": [[str(v) for v in row] for row in minor], + "source_normals": [m["normal"] for m in family[:n]], + "mixed_normals": [m["normal"] for m in family[n:]], + "delivery_tests": receipt} + + diff --git a/research/p104-owned-coding-boundaries/joint_boundary.py b/research/p104-owned-coding-boundaries/joint_boundary.py new file mode 100644 index 0000000000..d72ad43535 --- /dev/null +++ b/research/p104-owned-coding-boundaries/joint_boundary.py @@ -0,0 +1,199 @@ +"""Exact coupled-owned-block boundary certificate for the frozen PR5580 word. + +The theorem is a fixed 41-public-coordinate boundary theorem. It does not +charge original input frames as though they were eight-dimensional registers. +""" +from fractions import Fraction as Q +from collections import Counter +import copy + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def add(row, source, coefficient): + result = dict(row) + for key, value in source.items(): + out = result.get(key, Q(0)) + coefficient * value + if out: + result[key] = out + else: + result.pop(key, None) + return result + + +def apply(rows, event): + op, dst = event[:2] + if op == 'MOVE': + return + if op in ('INIT', 'CLEAR'): + rows[dst] = {} + elif op == 'ADD': + rows[dst] = add(rows[dst], rows[event[2]], Q(event[3])) + elif op == 'SCALE': + rows[dst] = {key: Q(event[2])*value for key, value in rows[dst].items()} + elif op == 'COPY': + rows[dst] = {key: Q(event[3])*value for key, value in rows[event[2]].items()} + else: + raise ValueError('unknown scalar opcode') + + +def rank(rows): + pivots = {} + for row in rows: + row = dict(row) + while row: + col = min(row) + if col not in pivots: + a = row[col] + pivots[col] = {key: value/a for key, value in row.items()} + break + row = add(row, pivots[col], -row[col]) + return len(pivots) + + +def span(basis): + result = {0} + for vector in basis: + result |= {x ^ vector for x in tuple(result)} + need(len(result) == 1 << len(basis), 'binary basis independent') + return result + + +def observations_rank(observations): + return rank([{int(k):Q(v) for k,v in row.items()} for row in observations]) + + +def verify(word): + public, events, frames = word['public'], word['program'], word['frames'] + need(public == 735, 'frozen public inventory') + n = public+8 + copies = [(i,e) for i,e in enumerate(events) if e[0] == 'COPY'] + need([e[1] for _,e in copies] == list(range(735,743)), 'eight owned producers') + sources = [e[2] for _,e in copies] + need(sources == [173,151,146,133,256,92,9,240], 'frozen source order') + start = next(i for i,e in enumerate(events) if e[0] == 'INIT') + stop = 1+max(i for i,e in enumerate(events) if e[0] == 'CLEAR') + block = events[start:stop] + deliveries = [(start+i,e) for i,e in enumerate(block) if e[0] == 'ADD'] + recipients = [e[1] for _,e in deliveries] + need(len(recipients) == len(set(recipients)) == 33, '33 distinct recipients') + roles = sources+recipients + need(len(set(roles)) == 41, '41 distinct public boundary coordinates') + need(all(e[1] in roles or e[1] >= public for e in block), 'no outside destination') + need(all(e[2] in roles or e[2] >= public for e in block if e[0] in ('ADD','COPY')), + 'no outside public read') + + rows = [{i:Q(1)} for i in range(public)]+[{} for _ in range(8)] + current = list(word['initial'])+[None]*8 + spans = [span(f) for f in frames] + active = set() + entry, exit_frames, prefix = None, None, None + for i,e in enumerate(events): + if i == start: + entry = list(current) + prefix = [dict(rows[r]) for r in roles] + op,r = e[:2] + if op == 'MOVE': + need(current[r] == e[2] and e[4] == (r in active), 'MOVE frame and ownership') + need(spans[e[3]] < spans[e[2]] if e[4] else spans[e[2]] < spans[e[3]], 'nested MOVE direction') + current[r] = e[3] + elif op == 'INIT': + need(r >= public and r not in active, 'fresh owned field') + current[r] = e[2] + active.add(r) + elif op == 'CLEAR': + need(r in active and current[r] == e[2], 'owned CLEAR frame') + current[r] = None + active.remove(r) + else: + need(Q(e[-2]) != 0 and current[r] == e[-1], 'nonzero scalar at current chart') + if op in ('ADD','COPY'): + need(e[2] != r and current[e[2]] == current[r], 'common scalar chart') + if op == 'COPY': + need(r in active and not rows[r], 'COPY into zero owned field') + apply(rows,e) + if i+1 == stop: + exit_frames = list(current) + need(not active and current[:public] == word['final'], 'full frame exit') + for r,row in enumerate(rows): + expected = {r:Q(1)} if r < public else {} + if r-112 in word['live']: + expected[r-112] = Q(1) + need(row == expected, 'full arbitrary-input scalar exit') + need(rank(prefix) == 41, 'independent actual local entry coordinates') + + local = [{} for _ in range(n)] + for j,r in enumerate(roles): + local[r] = {j:Q(1)} + for e in block: + apply(local,e) + need(all(local[r] == {j:Q(1)} for j,r in enumerate(sources)), 'all eight producers unchanged') + need(all(local[r] == {} for r in range(public,n)), 'all private exits zero') + need(all(len(frames[entry[r]]) == len(frames[exit_frames[r]]) == 8 for r in sources), + 'producer entry and exit dimensions eight') + target_sources = {} + for j,r in enumerate(recipients,8): + need(local[r].get(j) == 1 and len(local[r]) == 2, 'recipient keeps arbitrary input plus one producer') + source = next(k for k in local[r] if k != j) + need(source < 8 and local[r][source] != 0, 'nonzero original producer transfer') + target_sources[r] = source + observed_roles = [] + observed = [] + for s in range(8): + role = next((r for r in recipients if target_sources[r] == s and len(frames[exit_frames[r]]) == 1), None) + need(role is not None, 'one one-dimensional observation per producer') + observed_roles.append(role) + observed.append({str(k):str(v) for k,v in local[role].items() if k < 8}) + need(observations_rank(observed) == 8, 'eight independent low-dimensional producer observations') + for k in range(2,9): + need(all(len(frames[entry[r]]) >= k for r in sources), 'no producer coordinate initially below threshold') + need(all(len(frames[exit_frames[r]]) < k for r in observed_roles), 'all observations below threshold') + + suffix = [{} for _ in range(n)] + for j,r in enumerate(roles): + suffix[r] = {j:Q(1)} + for e in events[stop:]: + apply(suffix,e) + need(rank(suffix[:public]) == 41, 'fixed suffix observes every local public coordinate') + + public_hist, owned_hist = Counter(), Counter() + threshold_crossings = {k:0 for k in range(2,9)} + for e in block: + if e[0] != 'MOVE': + continue + a,b = len(frames[e[2]]),len(frames[e[3]]) + (owned_hist if e[4] else public_hist)[abs(a-b)] += 1 + if e[4]: + for k in threshold_crossings: + threshold_crossings[k] += b < k <= a + need(public_hist == {1:31}, 'source public histogram 31H1') + need(owned_hist == {7:7,1:2,2:1,3:1}, 'source owned histogram 7H7+2H1+H2+H3') + need(all(count == 8 for count in threshold_crossings.values()), 'source attains each threshold crossing rank') + public_rank = sum(len(frames[exit_frames[r]])-len(frames[entry[r]]) for r in roles) + need(public_rank == 31, 'public entry-exit rank change 31') + need(all(len(frames[exit_frames[r]])-len(frames[entry[r]]) in (0,1) for r in roles), + 'each physical public field requires at most one rank of ascent') + corrupted = copy.deepcopy(observed) + corrupted[-1] = dict(corrupted[0]) + need(observations_rank(corrupted) == 7, 'duplicate observation reduces the rank bound') + return { + 'status':'PASS_JOINT_41_ROLE_OWNED_MOMENT_FLOOR', + 'events_half_open':[start,stop], 'public_roles':roles, + 'sources':sources,'recipients':recipients, + 'prefix_rank':41,'suffix_rank':41, + 'source_entry_dimensions':[len(frames[entry[r]]) for r in sources], + 'observed_roles':observed_roles,'producer_projection_at_observations':observed, + 'threshold_crossing_count':{str(k):v for k,v in threshold_crossings.items()}, + 'public_paid_histogram':{str(k):v for k,v in sorted(public_hist.items())}, + 'owned_paid_histogram':{str(k):v for k,v in sorted(owned_hist.items())}, + 'theorem_floor':'31 H1(t) + 8 H7(t), 0