diff --git a/paper/pnas/body.tex b/paper/pnas/body.tex index 54c0dff..9540d5f 100644 --- a/paper/pnas/body.tex +++ b/paper/pnas/body.tex @@ -20,7 +20,7 @@ An operator of a model population faces recurring decisions for which there is n \begin{figure*}[p]\centering % fig1 \includegraphics[width=\textwidth]{figs/fig1.pdf} -\caption{The experimental programme. Each population-genetic abstraction (Table 1) is tested at up to three tiers, ordered left to right by increasing realism: an exact Wright--Fisher simulator over knowledge distributions (closed forms; bitwise-reproducible), trained neural networks measured against exact oracles (recurrent, feedforward, and variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an exact-match verifier). The same population-genetic abstractions are carried across the three tiers. Rows are the framework's mechanisms, each defined at the left margin; filled cells name the experiments run at each tier; dashed cells were not tested, and the composed society at language-model scale is the paper's stated gap.}\label{fig1} +\caption{The experimental programme. Each population-genetic abstraction (Table 1) is tested at up to three tiers, ordered left to right by increasing realism: an exact Wright--Fisher simulator over knowledge distributions (closed forms; bitwise-reproducible), trained neural networks measured against exact oracles (recurrent, feedforward, and variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an exact-match verifier). Colour separates the two categories: the population-genetic theory tier in blue, the two AI-model tiers in oranges. The same abstractions are carried across all three. Rows are the framework's mechanisms, each defined at the left margin; filled cells name the experiments run at each tier. Each claim is tested at the cheapest tier that can falsify it, and a costlier tier is entered only where it adds a discriminating test rather than a replication: grounding at language-model scale is established in prior work (21, 30) and is not re-run; epistasis and the society skip the middle tier, whose distinctive value (exact oracles) does not bear on those operator-level questions; and the society at language-model scale is the integrative experiment this paper specifies but does not run --- its stated gap.}\label{fig1} \end{figure*} \section*{The minimal model, and where its exactness ends} diff --git a/paper/pnas/build.py b/paper/pnas/build.py index 7bf9eb7..18b1b5a 100644 --- a/paper/pnas/build.py +++ b/paper/pnas/build.py @@ -28,10 +28,16 @@ FIGURES: dict[str, tuple[list[str], str]] = { "trained neural networks measured against exact oracles (recurrent, feedforward, and " "variational-autoencoder generators on a synthetic mode universe, and a convolutional VAE on " "MNIST), and language models (LoRA specialists on Qwen bases at 0.5B and 7B, scored by an " - "exact-match verifier). The same population-genetic abstractions are carried across the " - "three tiers. Rows are the framework's mechanisms, each defined at the left margin; filled " - "cells name the experiments run at each tier; dashed cells were not tested, and the composed " - "society at language-model scale is the paper's stated gap."), + "exact-match verifier). Colour separates the two categories: the population-genetic theory " + "tier in blue, the two AI-model tiers in oranges. The same abstractions are carried across " + "all three. Rows are the framework's mechanisms, each defined at the left margin; filled " + "cells name the experiments run at each tier. Each claim is tested at the cheapest tier that " + "can falsify it, and a costlier tier is entered only where it adds a discriminating test " + "rather than a replication: grounding at language-model scale is established in prior work " + "(21, 30) and is not re-run; epistasis and the society skip the middle tier, whose " + "distinctive value (exact oracles) does not bear on those operator-level questions; and the " + "society at language-model scale is the integrative experiment this paper specifies but does " + "not run --- its stated gap."), "fig2": (["paper/pnas/figs/fig2.pdf"], "Grounding is immigration. (A) Stationary diversity against the grounding fraction in the " "minimal inheritance model: simulation (points, 95\\% CI) matches the exact immigration--drift " diff --git a/paper/pnas/figs/fig1.pdf b/paper/pnas/figs/fig1.pdf index db474b3..99241b9 100644 Binary files a/paper/pnas/figs/fig1.pdf and b/paper/pnas/figs/fig1.pdf differ diff --git a/paper/pnas/main.pdf b/paper/pnas/main.pdf index cf8abcb..868d9b8 100644 Binary files a/paper/pnas/main.pdf and b/paper/pnas/main.pdf differ diff --git a/paper/pnas/make_figs.py b/paper/pnas/make_figs.py index 2889acf..e0fd858 100644 --- a/paper/pnas/make_figs.py +++ b/paper/pnas/make_figs.py @@ -50,16 +50,16 @@ def fig1(): ("Population genetics (exact)", "Wright\u2013Fisher simulator (NumPy)", "closed forms \u00b7 bitwise-reproducible", "#3d7eb8", "#eaf2fa"), ("Trained networks", "RNN \u00b7 MLP \u00b7 VAE on a synthetic oracle;\nconvolutional VAE on MNIST", - "sign-level tests \u00b7 exact oracles", "#3f8f4f", "#edf8ea"), + "sign-level tests \u00b7 exact oracles", "#e97313", "#fdefe1"), ("Language models", "LoRA specialists on Qwen 0.5B & 7B;\nexact-match verifier", - "seed-replicated signs", "#d9650f", "#fdf0e6"), + "seed-replicated signs", "#b04e0c", "#fbe6d4"), ] ROWS = [ ("Grounding = immigration", "fresh verified samples from a\nfixed external source enter the\ntraining mix every generation", ["immigration\u2013drift equilibrium:\n$g \\approx 0.05$ retains $\\geq$95% diversity;\nobservation floor $1-e^{-mp}$", "collapse & rescue in every\narchitecture; MNIST: dry 30$\\to$1 modes,\n10% grounding holds 30/30;\nestimator-bias learning kernel", - None]), + "LIT:established at LLM scale in\nprior work (refs. 21, 30);\nnot re-run here"]), ("Recombination = sex", "a child inherits from several\nparents, reassembling variants\nthat arose in different lineages", ["blending conservation law\n(first-order cancellation);\nunion-operator gain; Fisher\u2013Muller", @@ -86,12 +86,13 @@ def fig1(): ax.set_axis_off() ax.set_xlim(0, 1) ax.set_ylim(0, 1) - x0, gap = 0.205, 0.008 - cw = (1.0 - x0) / 3 + x0, gap, sep = 0.205, 0.008, 0.02 # sep: extra gutter between theory and the AI pair + cw = (1.0 - x0 - sep) / 3 + xs = [x0, x0 + cw + sep, x0 + 2 * cw + sep] row_h, row_top = 0.157, 0.805 for j2, (name, arch, guarantee, edge, face) in enumerate(TIERS): - x = x0 + j2 * cw + x = xs[j2] ax.add_patch(FancyBboxPatch((x + gap, 0.825), cw - 2 * gap, 0.155, boxstyle="round,pad=0.004", fc=edge, ec=edge, lw=1.4)) ax.text(x + cw / 2, 0.966, name, ha="center", va="top", fontsize=9.5, @@ -109,7 +110,7 @@ def fig1(): ax.text(0.0, y1 - 0.054, definition, ha="left", va="top", fontsize=6.2, style="italic", color="#555", linespacing=1.35) for j2, cell in enumerate(cells): - x = x0 + j2 * cw + x = xs[j2] edge, face = TIERS[j2][3], TIERS[j2][4] if cell is None: ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0, @@ -117,6 +118,12 @@ def fig1(): lw=0.8, ls=(0, (3, 2)))) ax.text(x + cw / 2, yc, "not tested at this tier", ha="center", va="center", fontsize=6.4, style="italic", color="#999") + elif cell.startswith("LIT:"): + ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0, + boxstyle="round,pad=0.004", fc="white", ec="#bbbbbb", + lw=0.8, ls=(0, (3, 2)))) + ax.text(x + cw / 2, yc, cell[4:], ha="center", va="center", + fontsize=6.4, style="italic", color="#777", linespacing=1.35) elif cell == "OPEN": ax.add_patch(FancyBboxPatch((x + gap, y0), cw - 2 * gap, y1 - y0, boxstyle="round,pad=0.004", fc="white", ec=edge,