Commit f57beb1
Track 2: substrate-typed array library — vectorized arithmetic + resonance access
First piece of the substrate-typed-array track. The differentiator
vs numpy: every element of an OMC int array carries φ-resonance and
HIM (Harmonic Interference Metric) computed from the substrate at
HInt construction time. The new builtins expose vectorized operations
that PRESERVE this substrate-typing through element-wise math, plus
two reduction-like operations that EXTRACT the substrate metadata
as parallel arrays — things Python literally can't do because i64
doesn't carry resonance.
NEW BUILTINS (9):
Vectorized arithmetic (broadcast scalar ↔ array on either side):
arr_add(a, b) — element-wise +
arr_sub(a, b) — element-wise -
arr_mul(a, b) — element-wise *
arr_div_int(a, b) — element-wise / (zero divisor → 0, no NaN
propagation; Singularity is at value level
not array level)
arr_neg(a) — unary -
arr_scale(a, k) — explicit scalar mul (sugar for arr_mul)
Substrate-aware (the differentiator from numpy):
arr_resonance_vec(a) — per-element φ-resonance score [0..1]
arr_him_vec(a) — per-element Harmonic Interference Metric
arr_fold_all(a) — vectorized fold; snaps every element to
its nearest Fibonacci attractor
Helper added at module scope:
elementwise_op(a: &Value, b: &Value, name, op: F)
F: Fn(i64, i64) -> i64. Handles (array, array), (array, scalar),
(scalar, array). Mismatched array lengths error explicitly —
no implicit shape-1 expansion (keeps behavior obvious for a
minimum-viable broadcast). Output Values are wrapped via
HInt::new so per-element substrate-resonance gets recomputed
from the arithmetic result.
Tests (examples/tests/test_substrate_array.omc — 15 tests, all pass):
- Element-wise: add / sub / mul / neg
- Scalar broadcast: arr_scale, arr_add(arr, scalar), arr_sub(scalar, arr)
- Division with zero-divisor handling
- Per-element resonance: Fibonacci values resonance ~1.0,
off-attractor < 1.0; HIM low for on-attractor
- arr_fold_all snaps to attractors (post-fold every element is
an exact Fibonacci value, verified via is_attractor)
- Composition: ML-shaped pipeline (raw → scale → bias → fold →
score by mean resonance) stays substrate-coherent
- Composition with existing reductions: arr_add then arr_sum_int;
arr_mul (square) then arr_sum_int (sum of squares)
What this unlocks for the harmonic-LLM thesis:
- Feature vectors with per-element substrate-resonance tracking
- Substrate-aware activations: f(x) = arr_mul(arr_resonance_vec(x), x)
weights every element by its own substrate coherence
- Quantization-via-fold: arr_fold_all is a no-config substrate-
aligned quantizer (compose with arr_resonance_vec to detect
quantization error)
What's NOT yet shipped (next session for Track 2):
- Broadcasting beyond scalar↔array (no shape-1 expansion between
differently-shaped arrays)
- 2D arrays / matrices (matmul, transpose)
- Substrate-aware autograd (forward-mode + reverse-mode)
- End-to-end harmonic ML pipeline demo using these primitives
Regression: 225 OMC tests + 15 new substrate-array = 240 OMC tests
pass. All previous suites green.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>1 parent 159dca9 commit f57beb1
2 files changed
Lines changed: 365 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2003 | 2003 | | |
2004 | 2004 | | |
2005 | 2005 | | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
2006 | 2009 | | |
2007 | 2010 | | |
2008 | 2011 | | |
| |||
5385 | 5388 | | |
5386 | 5389 | | |
5387 | 5390 | | |
| 5391 | + | |
| 5392 | + | |
| 5393 | + | |
| 5394 | + | |
| 5395 | + | |
| 5396 | + | |
| 5397 | + | |
| 5398 | + | |
| 5399 | + | |
| 5400 | + | |
| 5401 | + | |
| 5402 | + | |
| 5403 | + | |
| 5404 | + | |
| 5405 | + | |
| 5406 | + | |
| 5407 | + | |
| 5408 | + | |
| 5409 | + | |
| 5410 | + | |
| 5411 | + | |
| 5412 | + | |
| 5413 | + | |
| 5414 | + | |
| 5415 | + | |
| 5416 | + | |
| 5417 | + | |
| 5418 | + | |
| 5419 | + | |
| 5420 | + | |
| 5421 | + | |
| 5422 | + | |
| 5423 | + | |
| 5424 | + | |
| 5425 | + | |
| 5426 | + | |
| 5427 | + | |
| 5428 | + | |
| 5429 | + | |
| 5430 | + | |
| 5431 | + | |
| 5432 | + | |
| 5433 | + | |
| 5434 | + | |
| 5435 | + | |
| 5436 | + | |
| 5437 | + | |
| 5438 | + | |
| 5439 | + | |
| 5440 | + | |
| 5441 | + | |
| 5442 | + | |
| 5443 | + | |
| 5444 | + | |
| 5445 | + | |
| 5446 | + | |
| 5447 | + | |
| 5448 | + | |
| 5449 | + | |
| 5450 | + | |
| 5451 | + | |
| 5452 | + | |
| 5453 | + | |
| 5454 | + | |
| 5455 | + | |
| 5456 | + | |
| 5457 | + | |
| 5458 | + | |
| 5459 | + | |
| 5460 | + | |
| 5461 | + | |
| 5462 | + | |
| 5463 | + | |
| 5464 | + | |
| 5465 | + | |
| 5466 | + | |
| 5467 | + | |
| 5468 | + | |
| 5469 | + | |
| 5470 | + | |
| 5471 | + | |
| 5472 | + | |
| 5473 | + | |
| 5474 | + | |
| 5475 | + | |
| 5476 | + | |
| 5477 | + | |
| 5478 | + | |
| 5479 | + | |
| 5480 | + | |
| 5481 | + | |
| 5482 | + | |
| 5483 | + | |
| 5484 | + | |
| 5485 | + | |
| 5486 | + | |
| 5487 | + | |
| 5488 | + | |
| 5489 | + | |
| 5490 | + | |
| 5491 | + | |
| 5492 | + | |
| 5493 | + | |
| 5494 | + | |
| 5495 | + | |
| 5496 | + | |
| 5497 | + | |
| 5498 | + | |
| 5499 | + | |
| 5500 | + | |
| 5501 | + | |
| 5502 | + | |
| 5503 | + | |
| 5504 | + | |
| 5505 | + | |
| 5506 | + | |
| 5507 | + | |
| 5508 | + | |
| 5509 | + | |
| 5510 | + | |
| 5511 | + | |
| 5512 | + | |
| 5513 | + | |
| 5514 | + | |
| 5515 | + | |
| 5516 | + | |
| 5517 | + | |
| 5518 | + | |
| 5519 | + | |
| 5520 | + | |
| 5521 | + | |
| 5522 | + | |
| 5523 | + | |
| 5524 | + | |
| 5525 | + | |
| 5526 | + | |
| 5527 | + | |
5388 | 5528 | | |
5389 | 5529 | | |
5390 | 5530 | | |
| |||
7739 | 7879 | | |
7740 | 7880 | | |
7741 | 7881 | | |
| 7882 | + | |
| 7883 | + | |
| 7884 | + | |
| 7885 | + | |
| 7886 | + | |
| 7887 | + | |
| 7888 | + | |
| 7889 | + | |
| 7890 | + | |
| 7891 | + | |
| 7892 | + | |
| 7893 | + | |
| 7894 | + | |
| 7895 | + | |
| 7896 | + | |
| 7897 | + | |
| 7898 | + | |
| 7899 | + | |
| 7900 | + | |
| 7901 | + | |
| 7902 | + | |
| 7903 | + | |
| 7904 | + | |
| 7905 | + | |
| 7906 | + | |
| 7907 | + | |
| 7908 | + | |
| 7909 | + | |
| 7910 | + | |
| 7911 | + | |
| 7912 | + | |
| 7913 | + | |
| 7914 | + | |
| 7915 | + | |
| 7916 | + | |
| 7917 | + | |
| 7918 | + | |
| 7919 | + | |
| 7920 | + | |
| 7921 | + | |
| 7922 | + | |
| 7923 | + | |
| 7924 | + | |
| 7925 | + | |
| 7926 | + | |
7742 | 7927 | | |
7743 | 7928 | | |
7744 | 7929 | | |
| |||
8194 | 8379 | | |
8195 | 8380 | | |
8196 | 8381 | | |
| 8382 | + | |
| 8383 | + | |
8197 | 8384 | | |
8198 | 8385 | | |
8199 | 8386 | | |
| |||
0 commit comments