Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions research/three-block-cancellation-signature/PROOF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Cancellation adds a three-block signature

This is a scoped algebraic proof. It answers Open next question 1 of
SHIN09-git's [#6708](https://github.com/CrocSwap/integer-mult-bounds/pull/6708).
The new proof and construction were produced by Nick Petalas. Apache-2.0.

## 1. The signature and the generic model

Partition the rows of an invertible square matrix P into nonempty blocks.
Message j has source mask consisting of the blocks on which column j of P
is nonzero. Its reader mask consists of the blocks on which row j of
P inverse is nonzero. This is the source/reader convention of #6708,
Gonzalo Mier's #3990/#3997 and Nick Petalas's #6691.

A generic support matrix has one separate algebraically independent
indeterminate in each allowed entry, zero elsewhere. Invertibility and
inverse supports are taken over the rational-function field. The generic
census is the union of signatures over all such structurally invertible
supports, not just the support of one selected numerical witness.

**Result.** On three blocks of two rows there is an integer unimodular P
whose source masks are all ABC and whose reader masks are

BC, BC, AC, AC, AB, AB.

The same matrices realize the same signature over every field. No generic
support matrix has that signature, over any coefficient field. In fact,
for b >= 2 blocks and arbitrary positive block sizes, if every generic
source mask is full then at least b reader masks are full. This generic
lower bound is sharp.

The counterexample settles the stated six-port existence question. It
does not enumerate all three-block signatures or price a decoder.

## 2. A field-uniform integer witness

All displayed blocks are two by two. Put

T = [ 0 -1 ] T^2 + T + I = 0, det T = 1.
[ 1 -1 ]

Define the two six-by-six integer matrices

[ 0 I I ] [ T^2 -T^2 -T ]
B = [ I 0 I ], P = [ -T T -T ].
[ I T 0 ] [ -T^2 -T T ]

Direct block multiplication using T^2 + T + I = 0 gives

P B = B P = I_6.

For example the first block row of P B is
(-T^2-T, T^2-T^2, T^2-T^2) = (I,0,0).
The remaining block rows follow by the same identity. Both matrices
therefore have integer inverses and are unimodular. This establishes the
identity over every field, including characteristic two; no division by
two is used.

Every block of P is one of T, -T, T^2, -T^2 and is invertible over every
field. Every column of P consequently has a nonzero restriction to each
of the three row blocks. The diagonal blocks of B are zero and every
off-diagonal block is I or T, also invertible. Each row in block A of B
therefore reads exactly B and C, and likewise for the other blocks.
This proves the claimed signature over every field.

## 3. Generic inverse supports from a determinant matching

Here is the classical matching/path description, with conventions fixed
to avoid transposing source and reader masks.

Choose a determinant matching of a structurally invertible generic
matrix. Write r(j) for the row matched to column j. Relabel column j by
r(j), so the matched entries become diagonal in a matrix Q. On the row
vertices put a directed edge i -> r(j) for every supported P[i,j].

**Path fact.** The generic inverse entry P inverse[j,i] is nonzero if and
only if i is reachable from r(j) in this directed graph, allowing the
length-zero path.

To prove this, first use Q. A simple path from u to v supplies a matching
in Q with row v and column u removed: use the path's edges and the
diagonal matching at the other vertices. Conversely any matching of that
minor, together with the removed row/column, decomposes into a directed
path from u to v and disjoint cycles. Thus the corresponding cofactor
has a determinant matching exactly when the path exists. Each supported
entry is a distinct indeterminate, so different matchings have different
monomials. They cannot cancel, even in characteristic two. A cofactor is
therefore nonzero exactly in this case. Undoing the column relabeling
gives the stated convention for P inverse. The u=v case uses the
diagonal matching in the principal minor.

This uses the standard structural determinant/cofactor matching method;
it is not a new matching theorem. The new use is the block-mask bound
below.

## 4. The generic full-reader floor and its sharpness

Suppose every source mask of P contains all b blocks. Take a source
strongly connected component C of the directed graph above, meaning one
with no edge into it from another component. Such a component exists
because the component graph is a finite directed acyclic graph.

For any column j with r(j) in C, every block supplies a supported entry
P[i,j]. Each such entry gives an edge i -> r(j). The source property
forces i into C. Thus C meets every block and has at least b vertices.

For each vertex r(j) in C, strong connectivity gives a path to every
vertex of C. By the path fact, row j of P inverse has a nonzero entry in
each block. The distinct vertices of C correspond to distinct messages.
At least |C| >= b messages therefore have full reader masks. This proves
the bound for every structurally invertible support, irrespective of the
matching chosen.

For sharpness choose one representative row in each block. Support every
entry of those b rows, and support only the diagonal entry of each other
row. There is a diagonal matching. The representatives form one source
strongly connected component; they reach every row. Every other vertex
has only its self-loop. The path fact gives full reader masks exactly
at the b representatives. All columns have full source masks. Because
b >= 2, the other rows' singleton reader masks are not full. The lower
bound is attained for all positive block sizes.

For the six-port witness b=3, but no reader mask is full. Hence its
signature is absent from the union over all generic support matrices.
Merely noting cancellation in its own entry support would not prove
this stronger exclusion; the universal bound does.

## 5. Scope and finite corroboration

The all-field conclusion and the exclusion of all six-port generic
supports use the proof above. The verifier independently inverts the
integer matrices, checks both products and signatures, and specializes
to F2, F3, F5, F7 and F11. It checks every full-source support for block
sizes (1,1,1), (2,1,1) and (2,2,1), comparing literal cofactor matchings
with graph reachability. It also checks the sharp six-port generic
example and the generic signature of the actual witness support.
These are finite corroborations, not an exhaustive six-port census.

The predecessor's two-block classification is a cited result, not
replayed or audited. Its theorem remains within its two-block scope.
The new result shows why its generic-signature equality cannot simply
be extended to three blocks. No paid physical preparation, restoration,
delivery, native word, supplier, kappa or multiplication theorem follows.
Independent human and formal proof-kernel review are unclaimed.
116 changes: 116 additions & 0 deletions research/three-block-cancellation-signature/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# Cancellation adds a three-block decoder signature

A six-by-six integer unimodular basis realizes a source/reader signature
absent from every generic support pattern. It works over every field,
including F2. This answers Open next question 1 of SHIN09-git's
[#6708](https://github.com/CrocSwap/integer-mult-bounds/pull/6708).
The new contribution was produced by Nick Petalas. Apache-2.0.

Claim type: scoped written proof with exact finite corroboration.
No decoder price, native word, supplier admission or new kappa is claimed.

## Result

Divide the six port rows into A={0,1}, B={2,3}, C={4,5}. Every column of
the explicit basis P uses all three blocks. The six rows of its inverse
use exactly BC, BC, AC, AC, AB, AB. All entries are 0, 1 or -1 and both
inverse products are integer identities.

In contrast, a generic support matrix on b >= 2 nonempty row blocks,
with every column using all b blocks, must have at least b inverse rows
using all b blocks. The bound is sharp for every choice of block sizes.
The proof chooses a source strongly connected component in the directed
graph of a determinant matching. It excludes every generic support,
not just the entry support of P. [PROOF.md](PROOF.md) gives the matrices
and the full argument.

This is the first improvement being delivered. The remaining signature
classification and any physical use are left below.

## Reproduce

From the repository root, with CPython 3.12 and its standard library:

```sh
/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/research_package.py --package research/three-block-cancellation-signature
/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -I -W error -B research/three-block-cancellation-signature/verify.py
/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -I -O -W error -B research/three-block-cancellation-signature/verify.py
/Users/nick/git/integer-mult-bounds/.venv/bin/python3.12 -B scripts/check_research_commit.py --package research/three-block-cancellation-signature --check-source-history
```

Another CPython 3.12 path may replace the local interpreter. Direct replay
prints a generated receipt bound to the package hashes, followed by
`PASS_THREE_BLOCK_CANCELLATION_SIGNATURE`. It writes no files. No receipt
is handwritten or stored as an asserted output.

The verifier checks both integer products, independently solves both
inverses with rational elimination, and checks the signature over F2, F3,
F5, F7 and F11. It rejects all 27 single-nonzero-entry omissions from P.
It enumerates all 59,131 full-source supports at block sizes (1,1,1),
(2,1,1) and (2,2,1). The 58,081 structurally invertible supports pass
independent cofactor-matching and graph-reachability checks. Two six-port
patterns corroborate sharpness and the difference between the numerical
witness and its generic support. Five invalid-input controls pass.
The all-size theorem and all-field witness use the written proof;
this is not an exhaustive six-port census.

## Scope, sources and decision

The `coverage-law-change` card changes scope to this square-basis
algebraic question. Base main is
`e54523517d0f03e58352e647c403a5af3e525a57`, priority revision 8,
selected #7000. The selected source-binding orientation passes; no
selected scientific replay is performed. The result does not change
the selected record or any of its five inherited assumptions.

The [advance claim](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19538530)
states the same target. Live handoffs, current PRs, recent account work,
local reservations, main README searches, merged searches and the overlap
helper were consulted. The source-reference search found no recent
account PR using #6708. The overlap helper's working-note inventory is
sparse; explicit main-tree searches supplement it. Arbitrary historical
diffs, nested notes and unpublished work remain coverage limits.

SHIN09-git's two-block classification is cited without auditing or
replaying its scientific checker. It proves rational generic equality
for two blocks and explicitly asks the three-block question settled here.
Its proof and README are pinned in [SOURCES.json](SOURCES.json). The
source/reader model and earlier screens retain Gonzalo Mier's #3990/#3997
and Nick Petalas's #6691 credit. Structural determinant/cofactor matchings
and the inverse-path description are classical. The new steps are the
sharp block-mask consequence and the field-uniform six-port separation.

No complete physical producer or consumer is supplied. Preparation,
delivery, arbitrary dirty-state restoration, routing, precision, stock,
compiler closure and a signed invoice remain unpaid obligations. Unknown
costs are not zero. Independent human and formal proof-kernel review,
Lean, Docker and supplier admission are unclaimed. The decision is to
retain this settled algebraic question and stop.

## Open next questions

1. Which other three-block signatures lie outside the generic census?
Start with supports of inverse bases having a zero diagonal block;
a complete cancellation-sensitive classification is the blocker.
2. Can a physical caller exploit this signature after all preparation,
delivery and restoration costs? Start with these literal matrices and
one source/reader schedule. No favorable full invoice is supplied.

## Implementation bounds

All matrix dimensions are at most six. Matching lists have at most 720
terms; each cofactor has at most 120. The replay enumerates exactly the
three stated support domains and two six-port patterns. There is no
recursion, subprocess, network access or dynamic source generation.
All functions are below sixty physical lines and internal checks remain
active under optimized Python. The only module dispatch loads the fixed
local model file; the invalid-input table has five fixed call targets.

Power-of-Ten rule 3 deviation: Python and Fraction allocate during
execution. Fixed dimensions, coefficient fixtures, one support processed
at a time and bounded matching lists limit live memory. A fixed local
module loader is the rule 9 dispatch deviation needed by isolated Python;
the target is `model.py`, with lifetime equal to this process. Rule 10
uses warning-strict normal/optimized execution; no additional Python
static analyzer is claimed. These are mathematical checks, not physical
memory or tape tariffs.
30 changes: 30 additions & 0 deletions research/three-block-cancellation-signature/SOURCES.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"schema_version": 1,
"base_commit": "e54523517d0f03e58352e647c403a5af3e525a57",
"files": [
{
"path": "certificates/selected-result.json",
"usage": "provenance",
"git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8",
"sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1"
},
{
"path": "docs/research/agent-task-catalog.json",
"usage": "provenance",
"git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec",
"sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81"
},
{
"path": "research/two-block-signatures/PROOF.md",
"usage": "input",
"git_blob": "51cb134d77f700c031084311b43cb4c02e17ba68",
"sha256": "47094558499d02e81a26aeb7969efbdfc8d91bc719537e2c36d6cca0cc629179"
},
{
"path": "research/two-block-signatures/README.md",
"usage": "input",
"git_blob": "7e568edb6c84a6ec3575cd420f42cc66cd7d93c0",
"sha256": "b96207a9dbc79a1b3ff228a8409d7e960425b59a92d5afbe84ff1fef7cfd2096"
}
]
}
Loading
Loading