# Session 41: Whole-word repetition challenges fixed word-by-word ciphers

> Correction: the “all 29” one-rune-word claim below was caused by splitting apostrophe suffixes. Session 42 corrects the totals to 83 one-rune tokens representing 28 runes; section 8 has 15 tokens representing 13 runes. The length-matched expectation becomes 10.14897 pairs versus 1,385 in solved text. The historical figures below are superseded where noted. [Read Session 42](/sessions/42.html).

**Result:** No new plaintext. The unsolved text has much less whole-word repetition than our solved LP1 sample, even after matching sample size and rune-word lengths. This challenges a broader family than the linear rules in Sessions 39–40: any fixed, invertible, length-preserving transformation of each word independently, including nonlinear transformations.

The exact theorem concerns preservation of repetitions. The inference about plausible plaintext depends on its resembling the solved sample. These are different claims.

## The invariant

Suppose one fixed rule E encrypts each plaintext word independently and invertibly. Then:

```text
P_i = P_j  if and only if  E(P_i) = E(P_j)
```

For each word length, the word occurrence counts must therefore remain identical, although the words themselves are renamed. A word occurring 20 times cannot become 20 different ciphertext words under this model. This also applies to a cipher that resets to the same state before every word, regardless of whether its internal arithmetic is linear.

Assumptions matter: word boundaries and rune lengths are preserved; the rule has no position counter, preceding-text state, per-occurrence nonce, homophonic choice or inserted nulls. A key selected by word length is still covered. Different keys by section require separate section comparisons, supplied below.

## Corpus and earlier findings

The primary target is the same eight substantial unsolved sections used in Sessions 39–40: **2,897 words and 12,947 runes**. The isolated nine-rune section 3 is excluded. Including it gives the earlier descriptive total of 2,899 words and 12,956 runes; the results file records both scopes.

The benchmark is **483 words and 1,963 runes** in the five established solved LP1 groups. It is a sample of solved text, not every solved page or a universal model of English.

[Session 4](/sessions/4.html) already recorded that no complete word of four or more runes repeats. We are not presenting that observation as new. This session adds the general equality constraint, explicit length-matched comparisons, separate-section checks and controls.

Rune lengths are not Latin-letter lengths. For example, THE occupies two Gematria runes, TH and E.

## Word inventories

A “pair” means any unordered pair of identical word occurrences, regardless of distance. Three occurrences contribute three pairs; four contribute six. These are not necessarily adjacent words.

| Rune length | Unsolved word occurrences | Distinct unsolved words | Identical-word pairs | Solved word occurrences | Distinct solved words | Identical-word pairs |
|---|---:|---:|---:|---:|---:|---:|
| 1 | 86 | 29 | 116 | 14 | 2 | 51 |
| 2 | 449 | 355 | 106 | 114 | 18 | 671 |
| 3 | 721 | 705 | 17 | 120 | 32 | 489 |
| 4 | 510 | 510 | 0 | 77 | 43 | 68 |
| 5 | 316 | 316 | 0 | 44 | 27 | 36 |
| 6 | 256 | 256 | 0 | 45 | 23 | 49 |
| 7 | 216 | 216 | 0 | 30 | 24 | 9 |
| 8 | 156 | 156 | 0 | 17 | 13 | 5 |

The unsolved target contains **1,641 words of at least four runes, all different**. Under a shared invertible word mapping, the corresponding plaintext words would also all have to differ. The solved sample has 174 identical-word pairs at those lengths. Each of its five component groups also contains some repeated words of at least four runes, so that particular contrast is not solely caused by pooling the solved groups.

The most frequent whole word appears only six times in the unsolved corpus, versus 24 in the smaller solved sample. Raw corpus totals are not a controlled comparison, which is why we match lengths and sample sizes next.

## Matching size and word lengths

For each rune length, sample without replacement from each corpus until both have the smaller of the two available word counts. In the pooled comparison, the unsolved corpus has enough words at every benchmark length, so this retains the complete 483-word solved sample and draws a length-matched 483-word unsolved sample.

The expected number of identical-word pairs is calculated exactly. For a length class with N tokens, C identical pairs and a sample of n tokens:

```text
expected sample pairs = C * n*(n-1) / (N*(N-1))
```

Sum this quantity across lengths. No simulations are needed to obtain the expectation.

| Length-matched 483-word sample | Identical-word pairs |
|---|---:|
| Solved benchmark, retained in full | **1,385** |
| Unsolved sample, exact expectation | **10.1441** |
| Unsolved samples, central 95% of 1,999 draws | **5–17** |

The subsamples illustrate sensitivity to which actual words are selected. They are **not** a null distribution, a p-value, independent samples of new prose or a corrected significance test. The benchmark's topics and repetitive passages can affect its repetition rate; matching lengths does not eliminate those differences.

## Separate keys by section do not explain the benchmark gap

A common rule across all sections is not required for the following comparisons. Each unsolved section is independently compared with the benchmark at matched word lengths and matched counts. The expected counts refer to the matching procedure, not predictions for unknown plaintext.

| Section | Words in each matched sample | Solved expected pairs | Unsolved expected pairs |
|---|---:|---:|---:|
| 0 | 158 | 109.70 | 2.00 |
| 1 | 254 | 300.01 | 4.00 |
| 2 | 373 | 639.50 | 8.00 |
| 4 | 410 | 850.95 | 4.73 |
| 5 | 223 | 205.51 | 0.00 |
| 6 | 345 | 590.94 | 9.00 |
| 7 | 348 | 552.89 | 2.00 |
| 8 | 481 | 1,361.56 | 9.36 |

Every section has substantially fewer repeated words than its matched solved sample. Changing the key only between sections cannot erase repetitions within each section under the tested model.

## One-rune words provide a compact constraint

All **29 rune symbols** occur as complete one-rune words in the primary target. The solved benchmark has only A and I, occurring ten and four times respectively.

Under a shared invertible length-preserving word rule, the unsolved corpus must therefore decode to **29 distinct one-rune plaintext words**. Even with separate keys, the eight sections individually require **5, 7, 9, 12, 5, 8, 9 and 14** distinct one-rune plaintext words.

Thus, the precise conditional statement is: **if those tokens represent ordinary one-rune plaintext words restricted to A and I, a fixed invertible word-by-word rule is incompatible with the observed inventory, even with separate section keys.** This does not prove that they represent such words. Initials, symbols, nulls, another language, an intermediate representation or different boundary semantics would change the premise.

The JSON records all 86 one-rune word locations for source-image follow-up. This session trusts the retained transcription and does not claim a new image-level audit of those locations.

## Controls and scope counterexample

1. **Random word codebook:** Assign each of the 198 distinct benchmark words a unique random ciphertext word of the same rune length. The inverse recovers the original exactly. Every length-specific occurrence-count multiset is unchanged, including all 1,385 identical-word pairs. This control is not limited to affine rune substitution.
2. **Changing-state counterexample:** Add the word index and five times the within-word position to each rune, modulo 29. The known counter reverses this exactly, but identical-word pairs fall from 1,385 to 65. It lies outside the tested fixed-word mapping family and demonstrates why this result cannot exclude stateful encryption. It is not a proposed LP solution.
3. **Implementation fixtures:** An independent all-pairs loop agrees with the collision counter; a page/line-wrap fixture verifies that layout wrapping does not split a word.

The codebook is injective on the observed vocabulary and can be extended to a permutation of all words of each length. Controls establish the relevant invariant and its limits, not unknown-key recovery.

## Interpretation and next step

This gives us a reason to deprioritize **fixed word-by-word ciphers producing plaintext like the solved LP sample**, even if their internal operation is nonlinear. Trying progressively more elaborate fixed word-reset formulas would leave this repetition problem intact.

It does not identify a replacement cipher. Position-dependent keys, changing state, homophonic outputs, null handling, changed word boundaries and intermediate encoded material can evade the invariant. A deliberately low-repetition plaintext could also satisfy it. No language or authorship is identified.

The most useful next check is source-level: inspect the one-rune token boundaries in the original images, especially the section requiring 14 distinct one-rune plaintext words. That tests a premise behind the broader exclusion before adding another cipher mechanism.

## Reproducibility

- [Executable audit](whole_word_repetition_audit.py)
- [Full inventories, locations, controls and subsamples](whole_word_repetition_results.json)
- [Word parser and solved groups](word_core.py)
- [Rune handling](lp_core.py)
- [Source transcription](liber-primus__transcription--master.txt)

Run alongside its inputs with Python 3 and NumPy:

```sh
python3 -B whole_word_repetition_audit.py
```

The script verifies source SHA-256:

```text
b0b2e13c3cd35512ee5955a2d9a56c22d7410e283d35dd9c90abbaa7b99279eb
```

The seed is 3301041; the pooled and eight per-section descriptive comparisons each use 1,999 subsamples. All data have been studied previously. No new plaintext, key or established new-to-community observation is claimed.
