Skip to content
Merged
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
361 changes: 361 additions & 0 deletions research/norm6-streaming-features/PROOF.md

Large diffs are not rendered by default.

164 changes: 164 additions & 0 deletions research/norm6-streaming-features/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# Stream norm-six features without a transform table

**Scoped streaming construction; no new kappa.** Emit all 19,600 norm-six
feature pairs with at most **320 live integer slots**, including both input
vectors, plus **2,304 Gram entries**. There is no per-feature transform table
or target accumulator array. A consumer must release each output before the
next; retaining outputs requires additional storage.

| Quantity | Bound |
|---|---:|
| Emitted factor pairs | 19,600 |
| Owned vector slots | 192 |
| Borrowed x/y input slots | 96 |
| Scalar/counter/current-record allowance | 32 |
| Per-feature descriptor / target accumulator slots | 0 / 0 |
| Immutable Gram slots | 2,304 |
| Common target denominator, not asserted minimal | 256 |
| Uniform target numerator magnitude | 146,804 |
| Uniform source feature magnitude | 32,768 |

The term count and algebraic support upper bill `49*19600=960400` are inherited
from Nick Petalas's [#5084](https://github.com/CrocSwap/integer-mult-bounds/pull/5084).
Concurrent JoyboyBrian [#5132](https://github.com/CrocSwap/integer-mult-bounds/pull/5132)
publicly supplied an explicit construction during this investigation and
receives credit for closing that gap. Its stated allocations are 19,712 target
slots, 64 source slots and 245,884 immutable descriptor slots including G.
The new delta is a one-pass stream with O(d) live workspace and only the O(d^2)
Gram as fixed data. This compares explicit upper allocations, not an optimal
space lower bound. The feature bases differ and must not be interchanged.

## Construction and exact boundary

The kernel is `K(x,y)=((x^T G y)^3-4*x^T G y)/192` on `x^T G x=y^T G y=6`.
A two-coordinate Gram block `[[6,-1],[-1,6]]` gives a dyadic-unit pivot of
determinant -8 for the 48 shell relations. It removes two square-linear
features and 46 distinct-index cubics. Parity gives integral coefficients
over the common scale 256.

[streaming.py](streaming.py) contains the table-free iterator. It owns exactly
four length-d vectors, generates feature keys by nested loops, and forms each
coefficient from at most three local relation entries. [PROOF.md](PROOF.md)
proves the identity, ownership/lifetime contract, operation counts and bounds
on all intermediate integers. Borrowed G,x,y must remain immutable throughout
iteration; the implementation preserves them but does not snapshot or police
concurrent mutation. Outputs retained by the caller are outside the 320 slots.

The combined stream uses at most 159,389 integer multiplications and 61,150
additions/subtractions, with 96 exact divisions by three, two pivot halvings
and at most 144 public Gram-diagonal halvings. All preprocessing intermediates
fit 19 signed bits on the actual norm-six shell. The counts include the Gram
dot-product prefixes, rather than pricing them by their smaller final values.
Divisions define precomputed integer-valued label features, as in #2222; they
are not dyadic scalar gates on arbitrary runtime data. This is an indexed
integer model, not a Python heap measurement or a physical tape tariff.

The optional exact pair-kernel consumer needs one additional 48-bit accumulator.
It checks the feature identity; a variable-data physical decoder is not supplied.
The expansion decision is to stop at the specified stream contract. The changed
scope does not claim the historical card's whole-supplier/five-percent gate.

## Evidence and reproduction

Python 3.12, standard library only, from the repository root:

```sh
python3.12 -B scripts/research_package.py --package research/norm6-streaming-features
python3.12 -I -B -W error research/norm6-streaming-features/verify.py
python3.12 -I -O -B -W error research/norm6-streaming-features/verify.py
python3.12 -B scripts/check_research_commit.py --package research/norm6-streaming-features --check-source-history
```

Expected direct marker: `PASS_NORM6_STREAMING_FEATURES`; the registered runner
also prints `PASS_REGISTERED_RESEARCH_PACKAGE`. `verify.py --emit-result`
generates the deterministic source-bound receipt on stdout; normal verification
writes nothing and compares it to [RESULT.json](RESULT.json), including JSON types.

New-result evidence:

- An independently implemented literal polynomial-convolution oracle checks
all 48 relations, with 43,056 coefficient comparisons. It multiplies
polynomials and expands ordered Gram pairs rather than copying the
constructor's coefficient formulas.
- The exact -8 minor and all 2,304 entries of `R_P^T Q=8I` check the full pivot
solve for arbitrary target values. Full polynomial comparisons cover 3,275
small-dimensional targets and five actual 48-dimensional targets.
- All **3,449,600 emitted coordinates** in **176 complete streams** agree with
the materialized reference already checked by the independent oracle.
Borrowed-input preservation, order, completion, early close and the four
owned vectors are checked. Static inspection supplies the algorithmic
storage proof; sampled Python frame inventories are only corroboration.
- The 44 actual-Gram norm-six vectors are a diagnostic set, not a full-shell
enumeration. A nonzero off-shell defect is tested. Exact multiplication of
G by its computed inverse establishes maximum inverse diagonal 172 and the
source-coordinate bound 32 under the cited positive-definiteness premise.
- Thirteen mathematical/input/stream corruptions reject. Normal and optimized
execution retain all checks. The reference implementation and its full
feature/relation arrays occur only in verification, never in the stream.

The proof supplies universal coverage; finite tests alone do not. The official
export includes the sole live input, the Gram JSON, and direct replay needs
neither Git nor any predecessor executable. Local publication/export evidence
and hosted CI are reported separately in the PR.

## Sources, coordination and credit

Scientific base: `20a1e31bc6009b9b3f4d084bbaadc6350e34fcba`, priority revision 7.
[SOURCES.json](SOURCES.json) pins exact base blobs and SHA256 hashes. The
catalogue, selected record and predecessor proofs are provenance; only the
Gram JSON is a live external input. No frozen source is edited or copied.

- Cinna Davis / 1337isnot1337, [#2222](https://github.com/CrocSwap/integer-mult-bounds/pull/2222),
`82cf756186c0fc2c542fcd06e486c575d97ffc5c`: kernel, integral-valued features,
P48p Gram and 49-bit chart.
- Nick Petalas, [#5084](https://github.com/CrocSwap/integer-mult-bounds/pull/5084),
`9d7f7805d147028fe5f0174e267ee05b73703f0b`: dyadic existence bound and handoff.
- JoyboyBrian, [#5132](https://github.com/CrocSwap/integer-mult-bounds/pull/5132),
`08572fdb060e73ecc4cb09a024611039881185f4`: concurrent explicit construction
and its transform/target-array resource bounds. Its proof supplies comparison
context; its code is neither imported nor replayed.
- DreamingOfClouds, [#2244](https://github.com/CrocSwap/integer-mult-bounds/pull/2244),
`8ef6fa81403973d3cacaf865bdabe9797a6c34a0`: rational shell-rank perspective.
- David Ganz / Dugongue, [#4494](https://github.com/CrocSwap/integer-mult-bounds/pull/4494),
`ad31d9fdf000d4ca98dd911afe489a45d2ea4f74`: the dyadic factorization lemma
used by #5084; the explicit pivot does not need that general lemma.

Nebe/Sloane and the retained Leech/Niemeier geometry and kernel lineage retain
credit. Classical elimination and Cauchy-Schwarz are not new techniques.

The [canonical investigation #5127](https://github.com/CrocSwap/integer-mult-bounds/discussions/5127)
retains the initial claim and the [scope change](https://github.com/CrocSwap/integer-mult-bounds/discussions/5127#discussioncomment-19143848).
The first snapshot covered 310 open PRs, 4,266 Discussion records and 6,884
tracked notes. The later 10:23–10:24 UTC refresh covered 315 PRs and 4,284
Discussion records and found #5132. Its claim had appeared between the
preceding live read and ours. Before publication we narrowed the contribution
to the different memory contract; we do not claim another first resolution of
the original constructibility question. Final freshness is recorded in TASK.json.
Arbitrary diffs, unpublished work and subsequent activity are outside snapshot
coverage. The original account's reflection, Schur, Pauli, association, fanout,
frame and A5 work is excluded.

Prepared by Krzysztof Wojt with substantial OpenAI Codex assistance. Bounded
Luna support covered overlap inventory, the independently written polynomial
oracle, and arithmetic/storage review; the primary agent reviewed and
integrated it. Apache-2.0. Independent human and proof-kernel acceptance are
unclaimed.

## Limitations

Positive definiteness, lattice geometry and the binary chart remain cited
premises. No full-shell table, exact rank, term/space optimality, minimum
denominator or superior total arithmetic cost is claimed. Source acquisition,
physical variable-data side programs, frames, owners, dirty restoration,
precision, tape movement, compiler/recursive and outer admission remain
unknown. Unknown costs are not zero. No selected frontier is changed.

## Open next questions

Can one chronological physical source/target contract consume the stream
without retaining a cubic-size output array and with a favorable full invoice?
Start with one actual kernel invocation, check its data lifetime/order and
charge acquisition, preparation, frames, owners, dirty restoration, precision
and tape placement. The explicit generator removes the transform-table and
target-array requirement of this abstract interface; a physical caller and
its complete cost are still missing. See [TASK.json](TASK.json).
95 changes: 95 additions & 0 deletions research/norm6-streaming-features/RESULT.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{
"actual_shell_fixture_count": 44,
"actual_shell_pairs": 176,
"dimension": 48,
"evaluation_budget": {
"retained_features": 19600,
"source_exact_divisions_by_3": 48,
"source_multiplications": 36850,
"source_subtractions": 48,
"target_additions_upper": 100446,
"target_common_denominator": 512,
"target_exact_divisions_by_3": 48,
"target_multiplications_upper": 159436
},
"global_target_numerator_bound": 293608,
"gram_sha256": "e25d51a0a9cdbc897d5db39fb698aa9bbc2f4ce29e8d7add2a44bae8f086add2",
"max_fixture_numerator": 3114,
"max_inverse_diagonal": "172",
"observed_owned_stream_vector_slots": 192,
"offshell_defect_times_3": 4320,
"original_features": 19648,
"package_sha256": {
"PROOF.md": "4d7c62c92bd636261ae4d64e83c1d274729f6bb46d323d4a70592e471db35673",
"README.md": "01cbce4bc286c5edd0a93440cc4634b9d10ebad8ae605941dfa6df10093d462b",
"SOURCES.json": "5aeaaf10528a59fc4022377875d59973b182845b34cebd68285de5e1cf9d9b85",
"TASK.json": "3cf1e8cdc52794b470349eaf9ee40bd553f3caaa4073987c2b3e055546e184ae",
"VERIFY.json": "b5add8380735ceb1fa827412e1154d186215d73fa7d838aec20cf7c1b367c36e",
"compression.py": "94974ecf6c0ff4b17e4057f8f6f5895f7dae37f2f37099ff438354bebeade096",
"oracle.py": "a7ddab8365229da02cbce8341f0ae8eacf8722ac1a0ea16a774546c76d5a734a",
"streaming.py": "4f888ec22eebcf702c6a3b4e9718ed5e9496782872e0c2f7b24b5b79e4f43c53",
"verify.py": "087dd7beb3216478d5635f493d8db2b9ffa7b6cfed7049678c748b8ad9cb7b8b"
},
"pivot_determinant": -8,
"pivot_inverse_entries_checked": 2304,
"polynomial_oracle": [
9176,
19312,
18573,
9176,
19453
],
"rejected_controls": [
"wrong f coefficient",
"wrong shell constant",
"corrupted retained feature",
"wrong elimination multiplier",
"omitted final factor eight",
"wrong pivot sign",
"asymmetric Gram",
"odd Gram diagonal",
"short target",
"boolean coordinate",
"repeated pivot",
"omitted first stream record",
"corrupted stream target"
],
"relation_column_l1_max": 15,
"relation_oracle": [
48,
43056
],
"removed_features": 48,
"retained_features": 19600,
"schema": "norm6-streaming-features/v1",
"scope": "Written shell identity plus exact finite corroboration; no physical tariff or new kappa.",
"small_all_polynomial_targets": 3275,
"source_coordinate_bound": 32,
"source_feature_bound": 32768,
"status": "PASS_NORM6_STREAMING_FEATURES",
"stream_budget": {
"additions_subtractions_upper": 61150,
"borrowed_source_target_slots": 96,
"combined_live_plus_gram_slots_upper": 2624,
"combined_live_slots_upper": 320,
"common_target_denominator": 256,
"emitted_pairs": 19600,
"feature_exact_divisions_by_3": 96,
"immutable_gram_slots": 2304,
"indexed_reads_writes_upper": 2582528,
"multiplications_upper": 159389,
"multiplier_exact_divisions_by_2": 2,
"owned_vector_slots": 192,
"per_feature_descriptor_slots": 0,
"public_diagonal_halvings_upper": 144,
"scalar_counter_record_slots_upper": 32,
"target_accumulator_array_slots": 0
},
"stream_pair_accumulator_absolute_bound": 94285280051200,
"stream_pair_accumulator_signed_bits": 48,
"stream_preprocessing_signed_bits": 19,
"stream_target_denominator": 256,
"stream_target_numerator_bound": 146804,
"streamed_coordinates_checked": 3449600,
"target_denominator": 512
}
36 changes: 36 additions & 0 deletions research/norm6-streaming-features/SOURCES.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"schema_version": 1,
"base_commit": "20a1e31bc6009b9b3f4d084bbaadc6350e34fcba",
"files": [
{
"path": "certificates/selected-result.json",
"usage": "provenance",
"git_blob": "c35482cd9035843b15a634cc8276a7e1e40e8395",
"sha256": "6fe0a099b89aa2aed796a13c3a21dafc63f3388ebf397464e44e0451893b9375"
},
{
"path": "docs/research/agent-task-catalog.json",
"usage": "provenance",
"git_blob": "f126dd2e2dad2b669e75d1d0d0bd05c600725602",
"sha256": "f7a48bfa2659b88378282a8eee7d9fe52cdf505594124c4d1686b58510fffd72"
},
{
"path": "research/norm6-dyadic-compression/README.md",
"usage": "provenance",
"git_blob": "69cd696606105c1e660b2379f148361b77d4899f",
"sha256": "00d6143d9f54c51b7f0a628d108900612c3631f22cf5289c33bd81842e09031c"
},
{
"path": "research/norm6-dyadic-decoder/PROOF.md",
"usage": "provenance",
"git_blob": "25fc7d52b5c28b7575cb0878a36955c542c2af13",
"sha256": "10400041efc16ec3aa34cbe945aed13c353377981ffadc746136c9c928d50951"
},
{
"path": "research/norm6-dyadic-decoder/sources/P48p-GRAM.json",
"usage": "input",
"git_blob": "872dff9406881d567882d70882408eaa1e1f8f6c",
"sha256": "e25d51a0a9cdbc897d5db39fb698aa9bbc2f4ce29e8d7add2a44bae8f086add2"
}
]
}
Loading