society: multi-locus recombination frame — the vertical claim (E7/E8)

Enter the Lamarckian society with a robust theoretical frame. The single-
locus, fixed-p* model can only express recovery toward a ceiling; the
society's load-bearing claim is vertical -- capability that EXCEEDS any
component. Generalize knowledge to a distribution over genotypes (L
biallelic loci, K=2^L, additive fitness = # correct loci), reusing all the
K-mode machinery. The one new operator is recombination: free recombination
sends p -> product of per-locus marginals (linkage equilibrium).

E8 (star, kind: society) -- the vertical claim / Fisher-Muller: decorrelated
PARENTS (specialists, expert on their loci, agnostic elsewhere) are
recombined; sexual merge assembles a genotype fitter than any parent,
climbing to the optimum (12/12, a genotype no parent had) as parent count
grows and rho->0, while the best single parent (~8.7) and the mean-mixture
"model soup" (~11.6) plateau below. Reuses make_retention_matrix (locus
mastery replaces tail-item retention).

E7 (kind: genotype_lineage) -- the advantage of sex: a single population
adapts toward the optimum; the sexual lineage adapts faster than asexual
(clonal interference) by keeping loci in linkage equilibrium (LD->0 vs LD
spike). Honest scope: a speed advantage, not a permanent Muller's-ratchet
gap (subtle to force); E8 carries the headline.

Metaphor shift (per GG): the society is sexual reproduction with UNBOUNDED
parents, not teacher->pupil. Teacher->pupil caps at the ceiling; n-parent
recombination is combinatorial and generative, and unlike biology there is
no two-parent limit. Collapse = asexual degradation; the cure = sex. This
unifies E4 (merge != average) + E6 (irreversibility) under evolution-of-sex
theory and reaches ground Riis's single-locus n-grams cannot.

New: knowledge/{genotype,genotype_lineage,society}.py, configs/layer1/{E7,
E8}.yaml, figures/plot_{E7,E8}.py, READMEs, tests/test_genotype.py (+7).
experiment.py dispatch (kind in {genotype_lineage, society}); make layer1
wired. 112 tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Giorgio Gilestro 2026-07-05 10:51:41 +01:00
parent 871bc39ec6
commit 62c68d6c8c
22 changed files with 879 additions and 3 deletions

BIN
results/E7/E7.pdf Normal file

Binary file not shown.

BIN
results/E7/E7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

31
results/E7/README.md Normal file
View file

@ -0,0 +1,31 @@
# E7 — the advantage of sex: recombination adapts faster than clonal reproduction
**Claim tested.** The dynamic mechanism behind E8: *why* can a recombining society reach capability a
lone lineage cannot? Because recombination reassorts beneficial variants that arise in different
sub-lineages, while an asexual (clonal) lineage suffers **clonal interference** — the variants compete
and cannot combine.
**Setup.** A single population (distribution over `2^L` genotypes, `L=12`) adapts from **all-wrong**
toward the multi-locus optimum under the composed step: selection (fitness-proportional) + drift
(resample `n=150`) + mutation (per-locus flips, `μ=0.02`) + recombination. Two arms — **asexual**
(`recomb_rate=0`) vs **sexual** (`recomb_rate=1`). 20 replicates.
### Symbols
- **asexual/clonal** = offspring are whole-genotype copies (Layer-1's regime) · **sexual** = loci reassorted across the population each generation.
- **fitness** = number of correct loci (optimum = `L`) · **linkage disequilibrium |D|** = how far the loci are from statistical independence (correct alleles scattered across different genotypes).
### The two panels
1. **Advantage of sex.** Mean fitness over generations: the **sexual lineage (red) climbs faster**
than the asexual one (grey) through the adaptation phase (gen ~1035). *Honest scope:* both plateau
near the optimum by gen ~40 in this tractable regime — this is a **speed** advantage, not a
permanent gap (the single-population Muller's ratchet is subtle to force; E8 carries the headline).
2. **Mechanism.** Linkage disequilibrium over generations: the asexual lineage spikes to `|D|≈0.04`
during adaptation (beneficial alleles held apart, scattered across genotypes), while the sexual
lineage stays at `|D|≈0` — it *assembles* them. The LD gap is exactly why sexual adapts faster.
### Takeaway
Recombination's advantage is real and classical: it combines good ideas that arose independently,
which clonal reproduction cannot. This is the population-level reason a single evolving model lineage
degrades or stalls where a recombining **society** climbs — and it grounds the E8 vertical result in
the evolution-of-sex theory. **Falsifier (not triggered):** if the sexual lineage adapted no faster
than the asexual one (and kept the same LD), recombination would do no work.

14
results/E7/manifest.json Normal file
View file

@ -0,0 +1,14 @@
{
"experiment": "E7",
"master_seed": 20260705,
"git_commit": "871bc39ec6628f82aed75d007fdf675880eebc97",
"python": "3.14.5",
"libraries": {
"numpy": "2.5.0",
"scipy": "1.18.0",
"pandas": "3.0.3",
"pyarrow": "24.0.0"
},
"rows": 4840,
"results_sha256": "4836cd7045ad5419554e7edc65e4e12b23877a551f38969d65e09a4f77715faa"
}

View file

@ -0,0 +1,23 @@
experiment: E7
seed: 20260705
n_replicates: 20
source_config:
experiment: E7
kind: genotype_lineage
seed: 20260705
n_replicates: 20
genotype:
L: 12
n: 150
mu: 0.02
base: 1.3
recomb_rate: 0.0
init: wrong
generations: 120
sweep:
- param: genotype.recomb_rate
values:
- 0.0
- 1.0
output:
dir: results/E7

BIN
results/E8/E8.pdf Normal file

Binary file not shown.

BIN
results/E8/E8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

35
results/E8/README.md Normal file
View file

@ -0,0 +1,35 @@
# E8 — the vertical claim: n-parent recombination exceeds any parent (FisherMuller)
**Claim tested.** The society's headline, and the thing no fixed-`p*` model could express: can an
offspring recombined from **many decorrelated parents** be *fitter than any parent* — capability that
**exceeds** every component, not merely recovers a ceiling?
**Setup.** A capability is a **genotype** of `L=12` biallelic loci; fitness = number of correct
loci; the optimum (all-correct, fitness 12) is a genotype **no parent possesses**. Each *parent* is a
specialist: confident-correct (`hi=0.9`) on the loci it has mastered, agnostic (`lo=0.45`) on the
rest. Which loci each masters comes from the exact shared-switch construction, so **parent count
`K_T`** and **decorrelation `ρ`** are clean, independently-swept knobs. Deployed capability = fitness
of the **mode** (most-probable) genotype — what you would ship. 40 replicates.
### Symbols
- **parent** = a specialist model; **offspring** = the recombined model; **`K_T`** = number of parents (unbounded — biological sex is stuck at 2; model merging is not).
- **`ρ`** = correlation of which loci parents master (0 = complementary, 1 = identical clones).
- **best parent** = fittest single specialist · **average** = mean-mixture "model soup" (combine, don't recombine) · **sexual** = union-preserving recombination (assemble the best allele of each locus).
### The two panels
1. **Recombination exceeds any parent (ρ=0).** Deployed capability vs `K_T`: **sexual (red) climbs
to the optimum (12)** as parents accumulate — a genotype none of them had — while the **best single
parent (grey) plateaus at ~8.7** and the **model soup (blue) reaches ~11.6** but is beaten by
sexual at every `K_T` (and badly at small `K_T`: at 2 parents, sexual 9.0 vs soup 7.2 vs best 6.9).
2. **Decorrelation is the fuel.** Sexual capability vs `K_T` for `ρ ∈ {0, 0.5, 1}`: decorrelated
parents (`ρ=0`) climb to the optimum; identical clones (`ρ=1`) buy nothing (flat at ~6). The
benefit is *combinatorial reach across complementary parents*, not merely "more models".
### Takeaway
This is the FisherMuller effect for AI: recombination assembles beneficial variants that live in
*different* parents into an offspring fitter than any of them. It is the rigorous, un-preempted core
of the Lamarckian society — collapse is asexual degradation; the cure is **sex, with no parent
limit.** It reframes model merging from "averaging weights" to "meiotic reassortment", and it is the
mechanism by which general capability can *climb while each specialty is re-earned and exceeded.* The
dynamic version (why a lone lineage cannot do this) is E7. **Falsifier (not triggered):** if sexual
never exceeded the best parent, or averaging matched it, the vertical claim would fail.

14
results/E8/manifest.json Normal file
View file

@ -0,0 +1,14 @@
{
"experiment": "E8",
"master_seed": 20260705,
"git_commit": "871bc39ec6628f82aed75d007fdf675880eebc97",
"python": "3.14.5",
"libraries": {
"numpy": "2.5.0",
"scipy": "1.18.0",
"pandas": "3.0.3",
"pyarrow": "24.0.0"
},
"rows": 720,
"results_sha256": "fec5c4fcaa86999291dd77b015cd650ad8c28cb62f67eab54ca5be04bc18a711"
}

View file

@ -0,0 +1,29 @@
experiment: E8
seed: 20260705
n_replicates: 40
source_config:
experiment: E8
kind: society
seed: 20260705
n_replicates: 40
society:
L: 12
q: 0.5
hi: 0.9
lo: 0.45
sweep:
- param: K_T
values:
- 1
- 2
- 3
- 5
- 8
- 12
- param: rho
values:
- 0.0
- 0.5
- 1.0
output:
dir: results/E8