Period-4 Anti-Attractor: Tier-1 Verification of the Anna Matrix
Verification (May 2026) that the operator T(v) = sign(M·v) on the Anna Matrix reaches one of two period-4 cycles on every tested input; that these are the only global attractors is a hypothesis. Includes formal T^4 fixed-point property, four random-matrix null hypothesis ensembles, theoretical convergence bound, and architecture clarification distinguishing direct T iteration from the aigarth_search ITU iteration.
Period-4 Anti-Attractor: Tier-1 Verification
1. Statement
Let M ∈ ℤ^{128×128} be the Anna Matrix and define
T : {-1, 0, +1}^128 → {-1, 0, +1}^128, T(v) = sign(M · v)
We verify on samples, and state as hypotheses for the full state space:
- (Two cycles, hypothesis for all inputs) In every sampled input,
Treaches one of exactly two period-4 cycles; the zero vector is a trivial fixed point. That these two cycles are the global attractors of all non-zero ternary inputs is not proven. - (Convergence, sampled) Every sampled non-zero input reached one of the two period-4 cycles within 24 iterations (median 8 ticks-to-first-cycle-state, median 12 ticks-to-cycle-close). The samples are 100,000 random inputs and all inputs of Hamming weight at most 2.
- (Specificity) Period-4 of this form is not generic for int8 matrices: under four distinct null ensembles (200 matrices each) Anna's behaviour is reproduced 0% – 0.5% of the time.
- (Period-4 fixed-point property) Each of the 8 cycle states
ssatisfiesT⁴(s) = sexactly. This is a tautological consequence of period-4 (the fourth iterate returns to the start) but is the property a 4-tick sampling regime would exploit. - (Cycle-pair structure)
Tcommutes with negation:T(-v) = -T(v). This holds for any real matrix, becausesignis odd; it is not specific to Anna. The orbit of-A[0]is therefore exactly(-A[0], -A[1], -A[2], -A[3]). This is cycle B: the antipodal cycle shifted by the choice of starting phase. There is no additional structural permutation; cycle B is just-Awith the orbit origin re-indexed.
2. Methods (Phase A reproducibility)
All computations live in __. Scripts: phase_a.py (~15 s) and phase_a_hardening.py (~80 s). Outputs: JSON files in __.
2.1 Cycle detection
A hash-based detector iterates T from v_0 and records every state via bytes(v.tobytes()). Termination on first repeat or at max_ticks = 100. The cycle period is the index difference between the first occurrence and the repetition.
2.2 Random-matrix null ensembles
Four distinct null hypotheses, each generating 200 matrices and testing 200 ternary inputs per matrix (40,000 input-matrix pairs per null):
| Null | Construction | Question answered |
|---|---|---|
null_uniform | each entry i.i.d. Uniform(int8) | Is period-4 generic for any int8 matrix? |
null_histogram | Anna's value multiset, randomly permuted | Is the arrangement the cause? |
null_phase_random | eigendecompose M, randomise every conjugate-pair phase, reconstruct + clip | Is the spectral magnitude profile alone enough? |
null_phase_keep_pi2 | as null_phase_random but keep dominant pair at exactly π/2 | Does π/2 alone suffice? |
The fourth null was added on advisor's recommendation as the strongest test of the dominant phase as the causal factor.
2.3 Two convergence definitions
ttfc(ticks to first cycle state), when the orbit first enters the cycle.ttcc(ticks to cycle close), when we first see a state we've already visited (i.e. observed the full period).ttcc = ttfc + 4for period-4 orbits.
This reconciles our earlier "median 8" with the Companion PDF's "≈ 11": both correct, different definitions.
3. Cycle structure
| Quantity | Value |
|---|---|
| Period distribution over 100,000 random ternary samples | {4: 100,000} |
| Period distribution over exhaustive 32,768 HW≤2 samples | {4: 32,768} |
| Unique cycles found | exactly 2 |
| Cycle A state sums (in tick order) | (-42, +50, +38, -56) |
| Cycle B state sums (in tick order) | (+42, -50, -38, +56) |
| Cycle B vs Cycle A | B = -A as orbits. The observed B[k] = -A[(k+1) mod 4] is just the choice of starting phase when discovering B from a random initial state. Under T(-v) = -T(v), the orbit of -A[0] is -A exactly. |
Both cycles together form 8 distinct states. Together they map every non-zero ternary input to one of these 8 states within ≤ 24 ticks.
4. Random-matrix null results (hardened)
200 matrices × 200 samples per null. We count matrices in which any period-4 cycle appears at all (the lowest possible bar):
| Null ensemble | matrices_with_period4 / 200 | Fraction |
|---|---|---|
null_uniform | 0 / 200 | 0.000 |
null_histogram | 0 / 200 | 0.000 |
null_phase_random | 0 / 200 | 0.000 |
null_phase_keep_pi2 | 1 / 200 | 0.005 |
| Anna | 200 / 200 | 1.000 |
The null_phase_keep_pi2 result is the most interesting. Preserving only the dominant π/2 phase while randomising every other conjugate-pair phase yields period-4 in just 1 of 200 matrices. A dominant phase near π/2 is not sufficient to reproduce Anna's behaviour. It is also not necessary for period 4 in general: the 2 x 2 matrix [[1, 2], [-2, 1]] has eigenvalue angles of ±63.4 degrees, and all 8 of its non-zero ternary inputs end in period 4. Earlier versions called the phase necessary; that was wrong.
Combined across all four nulls: 1 / 800 matrices. Anna at 200 / 200. Effect size overwhelming.
5. Spectral motivation
Top eigenvalues of M:
| Index | Magnitude | Phase (deg) | Distance to 90° |
|---|---|---|---|
| 0 | 2342.075 | +90.4565 | 0.4565° |
| 1 | 2342.075 | -90.4565 | (conjugate) |
| 2 | 884.008 | 180 | 90° |
| 3 | 876.576 | 0 | 90° |
Spectral dominance |λ₁| / |λ₃| = 2.649.
A linear iteration M^k v with a dominant complex eigenvalue at angle θ produces period 2π/θ for inputs concentrated in the dominant eigenspace. Anna's dominant phase is essentially π/2, which yields period 4.
6. Theoretical convergence bound
Under linear iteration M^k v, components in eigenspaces with smaller magnitude decay like (|λ_3| / |λ_1|)^k. Crossing time at which they fall below resolution ε = 1/N = 1/128:
t_resolution ≈ log(1/N) / log(|λ_3|/|λ_1|) = log(1/128) / log(0.3774) ≈ 4.98 ticks
Empirical ttfc median is 8.0. The factor of ~1.6 between linear-decay bound and observed sign-projected convergence is plausible: sign-projection adds discrete jumps that may delay alignment with the dominant eigenspace.
6.5 Relation to CfB's anti-attractor concept (interpretive)
7. The two iterations on Anna (architecture clarification)
Two distinct algorithms have been studied on the Anna Matrix and they produce different attractor structures. This was the source of confusion in earlier project documents.
| Algorithm | Operator | Termination | Reported attractors | Cycle period |
|---|---|---|---|---|
| (A) Direct ternary iteration | T(v) = sign(M·v) | period-4 cycle (no fixed point reached) | 2 unique cycles | 4 |
(B) aigarth_search ITU iteration | input/output neuron split with no-state-change termination | first state with no neuron change | 16,384 unique outputs | (1, after termination) |
7.1 Verification of (B) being a different algorithm
aigarth_search --hamming 3 on Anna reports max_ticks_reached = 0: every input terminates at tick 1 with avg_ticks = 2. aigarth_search --random 1000 reports max_ticks_reached = 2. If this were direct T iteration, every non-zero input would be in period-4 and never satisfy the no-state-change termination, so tick_count would always equal the cap (100). It does not.
We tested 500 cycle states from search_hamming3.json against T:
| Test | Result |
|---|---|
sign(M · v) == v strictly | 1 / 500 (the all-zero vector only) |
Hamming distance from sign(M · v) to v | mean 98.52 / 128, median 100 |
The 16,384 attractors of aigarth_search are not strict 1-tick anti-attractors of T.
7.2 What this means
Both numbers are real and reproducible. They describe two different mathematical objects:
- The 2 period-4 cycles of
Tare the 4-tick anti-attractors of the direct ternary iteration. This is the structure that matches the dominant π/2 eigenvalue and that drives the C-C-R-R behavioural sequence in the ALife simulation (Chapter 25, Section 4.6). - The 16,384 unique outputs of
aigarth_searchare the stopping states of an ITU-style iteration with separate input and output neuron regions. They are not fixed points: all 16,384 stop because no output is zero, and all of them change on one more synchronous step. This is closer to the architecture described by the officialaigarth-itPython package.
Earlier project documents conflated the two as "Anna's attractor basins". They are different.
8. Re-checks issued by Phase A
| Earlier statement | Status |
|---|---|
| "Anna has 16,384 anti-attractors of T" | Disambiguated: 16,384 is the aigarth_search algorithm's output count, not 1-tick anti-attractors of T. T has 2 period-4 cycles. |
| "sign(A)^6 column sums all = 42" (Chapter 25 §1.3) | Refuted: column sums vary by ~10⁹. The vector iteration analogue is Section 4.6's period-4. |
| Aigarth anchor table values (earlier technical spec, since removed) | Convention clarified: the listed values are at the twin matrix position ([r₂, c₂]), not the primary position ([r₁, c₁]). All 8 values verified at the twin positions. |
9. Connections to other chapters
- Chapter 25 (Aigarth Research Lab) §4.6, discovered the period-4 cycle from random binary inputs and identified the spectral cause. Phase A confirmed and hardened with 4 nulls.
- Genesis encoding (earlier chapter, set aside), an earlier chapter encoded the 65-byte Genesis pubkey into a 128-vector and observed the same period-4 cycle. Random inputs do the same, so this is not Genesis-specific.
- Seven-position signature (earlier chapter, set aside), within a single cycle, opposite-tick states (A vs C, B vs D) are near-antipodal but break at 7 positions:
{3, 18, 32, 61, 65, 101, 109}. Phase A reproduces this for the table as typed. The break needs the column 30 values exactly as typed and disappears after correcting that very likely entry-error run. See September 2026 re-check.
10. Reproducibility
# Phase A main run (~15 s)
python3
# Phase A hardening run (~80 s, 4 null ensembles × 200 matrices)
python3All output JSON files live in __ with deterministic seeds (42, 100). Hardware: Apple Silicon, no GPU/ANE used.
Verification snippet (period-4 + cycle B = -A pointwise):
import json, numpy as np
M = np.array(json.load(open('apps/web/public/data/anna-matrix.json'))['matrix'], dtype=np.int64)
def T(v): return np.sign(M @ v).astype(np.int64)
def find_cycle(v, max_ticks=100):
history = [tuple(v.tolist())]
seen = {history[0]: 0}
for t in range(1, max_ticks + 1):
v = T(v)
h = tuple(v.tolist())
if h in seen:
return [history[i] for i in range(seen[h], t)], t - seen[h]
history.append(h)
seen[h] = t
return [], 0
# Find both cycles
np.random.seed(42)
cycles = {}
for _ in range(200):
v = np.random.choice([-1, 0, 1], 128).astype(np.int64)
c, p = find_cycle(v.copy())
if p == 4:
canon = min(tuple(c[i:] + c[:i]) for i in range(4))
cycles.setdefault(canon, c)
if len(cycles) == 2: break
A, B = list(cycles.values())
assert {tuple(s) for s in A} == {tuple(-np.array(s)) for s in B}, "B should be -A pointwise (as set)"
print("Cycle sums A:", [sum(s) for s in A])
print("Cycle sums B:", [sum(s) for s in B])
# Output:
# Cycle sums A: [-42, 50, 38, -56] (or rotation)
# Cycle sums B: [42, -50, -38, 56] (or rotation)11. Tier-marked summary
| Finding | Tier | Evidence |
|---|---|---|
T reaches period-4 on every sampled non-zero ternary input | 1 (samples) / 2 (all inputs, hypothesis) | 100K random + 32,768 exhaustive HW≤2 |
| Exactly 2 period-4 cycles | 2 (hypothesis for all inputs) | observed in every sample |
| Cycle B = -Cycle A pointwise (set equality + index permutation) | 1 | direct check on cycle states |
7-position within-cycle break at {3, 18, 32, 61, 65, 101, 109} | 1 for the table as typed | disappears after correcting the column 30 run |
T⁴(s) = s for all 8 cycle states | 1 | analytic on every state |
| Period-4 not generic for int8 matrices | 1 | 0/200 in 3 nulls, 1/200 in fourth |
| π/2 phase not sufficient | 1 | null_phase_keep_pi2 1/200 vs Anna 200/200 |
| π/2 phase necessary | not confirmed | counterexample [[1, 2], [-2, 1]] |
Convergence median ttfc = 8, ttcc = 12 | 1 | 100K samples |
| Spectral structure motivates period-4 | 2 | dominant eigenvalue at 90.4565° |
aigarth_search is not direct T iteration | 1 | tick distribution mismatch confirmed |
| 4-tick reading of CfB's anti-attractor concept | 3 | one interpretive reading among several; not confirmed with source |
12. Cross-reference: AIT regime gives different behaviour
The period-4 attractor described in this chapter is a property of the direct ternary operator T(v) = sign(M · v). Phase N's verification campaign (2026-05-09, see Chapter 31) found that the project's aigarth_search C scanner (which we read as the production HyperIdentity scoring algorithm; that link is inferred, not verified) uses a different rule:
T_AIT(v) = ternary_clamp(sign(M) · v)with input clamping and a stop condition.
Two consequences:
- Magnitudes are inert under
T_AIT. Anna's specific int8 values, including the trace of 137 (from a very likely entry-error pair) and the K-e-y diagonal, participate inTbut not inT_AIT. - Period-4 does not transfer. Sampling 100 random binary inputs under
sign(M) · vshows period-4 in only 1 of 100 cases. Phase G's period-4 finding is M-magnitude-dependent and lives in theTregime; the AIT regime gives different stopping states instead (Chapter 31; the earlier "19-concept classifier" reading was not confirmed and stays open).
Both regimes are valid descriptions of Anna under different operators. The production scoring task uses T_AIT; the analytic exploration in this chapter uses T. They are complementary, not contradictory.
13. Endogenous activity: Anna's period-4 holds under free iteration without clamping
A free-iteration experiment_, pre-registered) tests whether the period-4 structure survives when sign-only iteration sign(M · v) is run from random ±1 initial states without any input clamping. Results (n=20 seeds × T=200; supplementary 5 seeds × T=10,000):
| Architecture | Cycle structure |
|---|---|
| Anna | Period-4 in 25/25 random initial states (T=200 + T=10K combined) |
| Random antipodal sign matrix (uniform ±1, 99.6% antipodal) | 0/5 cycles within 10,000 ticks |
| EngineeredDCOnly (Walsh DC-only) | Period-2 in 10/10 |
| EngineeredWalsh (Anna-frequency-mimic) | Variable 1, 2, 3, or 4 across 10 seeds |
Two findings:
-
Sustained short-cycle dynamics is a Walsh-family property. Anna, DC-only, and Walsh-frequency variants all reach short cycles. Random antipodal matrices do not (orbits > 10,000 long, if they cycle at all).
-
Period-4 specifically is an Anna-specific property. Engineered Walsh matrices with similar frequency distributions but shuffled row arrangements produce variable cycle lengths (1-4). Anna's exact period-4 depends on the specific row arrangement, not just the frequency spectrum.
This extends the earlier clamped-input runs over 1000 random binary inputs to the UNCLAMPED free-iteration regime: in all sampled states, the period-4 cycle appears in Anna's sign(M · v) dynamics without input encoding.
Reading note. Bounded periodic cycles are structured but not adaptive. Once on the cycle, the dynamics repeat exactly. Adaptive temporal structure (the kind that improves behaviour over a system's lifetime) requires the surrounding framework, Aigarth-IT mutation, ITU growth/prune, or Neuraxon-style neuromodulator/circadian layers. This section establishes the bounded-periodic form of endogenous activity for the bare matrix, not the open-ended adaptive form. The latter is documented in the Cognitive Lab and the Phase 4 Anna×Neuraxon fusion work.
Pre-reg + audit: __, __.
14. The free-iteration cycle and the "concept" centroids (open reading)
An earlier follow-up mapped the four cycle states onto four of the "19 concept attractors" of Chapter 31 and read this as an architectural regularity. The 19 concepts were selected afterwards from 12,356 distinct stopping states, and the stopping states are not fixed points. The mapping therefore describes a nearest-centroid assignment, not a property of the matrix.
Audit: __.