# Reid's paradox: sources and verification

Run:

```sh
node research/reids-paradox/verify-reids-paradox.mjs
```

The verifier uses only Node's built-in file reader and has no package
dependencies. It first asserts that all eleven numerical model constants in
the page match the verifier, then recomputes the page's two layers from scratch.

First, it evaluates the Fisher-Skellam front speed
`c = 2 sqrt(rD)` at the page defaults `r = 0.1 yr^-1` and
`D = 250 m^2 yr^-1`. It checks the resulting `10 m/yr` speed, the equivalent
one-year RMS displacement `sqrt(2D) = 22.360680 m`, the `10x` to `100x` gap to
the historical pollen band, the `100x` to `10,000x` inflation required in
either parameter, and the values of `r` or `D` required to reach each end of
that band while holding the other parameter fixed.

Second, it constructs two continuous, symmetric kernels with mean zero and
variance exactly `1,600 m^2`: a Gaussian with standard deviation `40 m`, and a
Student t kernel with 3 degrees of freedom rescaled to the same variance. It
independently integrates each implemented density over the whole real line by
numerical quadrature, checking its normalization, first moment, and second
central moment. It checks that the Gaussian moment generating function is
finite and proves the Student t MGF divergent by its positive exponential
integrand eventually increasing against the algebraic tail.

Finally, it samples each kernel on the same `8,192`-cell, `10 m` lattice and
runs the same integrodifference model as the page for `36` generations:

```text
growth:      g(n) = 1.5 n / (1 + 0.5 n)
redisperse:  n[t+1](x) = integral K(x-y) g(n[t](y)) dy
front:       rightmost x where n >= 0.01
```

Convolution is evaluated by an in-file radix-2 FFT. The verifier prints the
front-position series and compares early and late window speeds. It requires
the Gaussian speed to settle within 12 percent while the Student t speed rises
by more than 50 percent, verifies super-linear front growth, and checks that
the heavy-tail front remains far from the finite computational boundary.

## Primary sources

- Clark, J. S., Fastie, C., Hurtt, G., Jackson, S. T., Johnson, C., King,
  G. A., Lewis, M., Lynch, J., Pacala, S. W., Prentice, C., Schupp, E. W.,
  Webb III, T., and Wyckoff, P. (1998). "Reid's Paradox of Rapid Plant
  Migration: Dispersal theory and interpretation of paleoecological records."
  *BioScience* 48(1), 13-24.
  [doi:10.2307/1313224](https://doi.org/10.2307/1313224).
  This review frames the `100-1,000 m/yr` historical pollen estimates and
  their discrepancy with local seed movement.

- Clark, J. S. (1998). "Why Trees Migrate So Fast: Confronting Theory with
  Dispersal Biology and the Paleorecord." *The American Naturalist* 152(2),
  204-224. [doi:10.1086/286162](https://doi.org/10.1086/286162).
  Its field-parameterized local kernels give seed displacement on the order of
  `2-40 m`, local-kernel spread below `20 m/yr`, and mostly `1-10 m/yr`; the
  paper reports `12.9 +/- 1.8 m` for the fitted *Quercus rubra* local
  dispersal scale, with generation time `39.0 yr` and net reproductive rate
  `189`. These data bound the page's representative Fisher-Skellam defaults.

- Kot, M., Lewis, M. A., and van den Driessche, P. (1996). "Dispersal Data and
  the Spread of Invading Organisms." *Ecology* 77(7), 2027-2042.
  [doi:10.2307/2265698](https://doi.org/10.2307/2265698).
  This is the source for the integrodifference framework, the sensitivity of
  spread to kernel tails, finite constant speed when the kernel MGF exists,
  and accelerating spread for tails without an exponential bound.

- Skellam, J. G. (1951). "Random Dispersal in Theoretical Populations."
  *Biometrika* 38(1/2), 196-218.
  [doi:10.1093/biomet/38.1-2.196](https://doi.org/10.1093/biomet/38.1-2.196).
  This is the founding diffusion treatment of population spread used for the
  classical front-speed comparison.

- Reid, C. (1899). *The Origin of the British Flora*. London: Dulau and Co.
  [Internet Archive scan](https://archive.org/details/originofbritishf00reid).
  The page treats the often repeated million-year oak journey as Reid's own
  order-of-magnitude estimate, not as an observation.

- Feurdean, A., Bhagwat, S. A., Willis, K. J., Birks, H. J. B., Lischke, H.,
  and Hickler, T. (2013). "Tree Migration-Rates: Narrowing the Gap between
  Inferred Post-Glacial Rates and Projected Rates." *PLOS ONE* 8(8), e71797.
  [doi:10.1371/journal.pone.0071797](https://doi.org/10.1371/journal.pone.0071797).
  Macrofossils and northern refugia revise estimates to about `60-260 m/yr`,
  compared with `115-550 m/yr` under the southern-refugia assumption.

- McLachlan, J. S., Clark, J. S., and Manos, P. S. (2005). "Molecular
  Indicators of Tree Migration Capacity under Rapid Climate Change."
  *Ecology* 86(8), 2088-2098.
  [doi:10.1890/04-1036](https://doi.org/10.1890/04-1036).
  Chloroplast markers support scattered northern populations and estimates
  below `100 m/yr`, so cryptic refugia remain a competing resolution rather
  than a footnote.

## Scope and modelling choices

The `r = 0.1` and `D = 250` defaults are representative inputs inside the broad
local-dispersal and growth ranges summarized by Clark, not a fitted parameter
pair for one oak population. Translating a local seed shadow into a yearly
diffusion coefficient is itself a model choice, which the page states. The
Fisher-Skellam result is a linear-front result for a continuous
reaction-diffusion model, not a universal speed limit for trees.

The matched-kernel simulation is a mathematical diagnostic, not a
reconstruction of Holocene oak spread. The Student t kernel was chosen because
it has finite variance but no finite MGF away from zero. Its exact algebraic
tail makes the theorem visible. Real seed-shadow tails are hard to measure,
and a merely peaked or leptokurtic kernel with an exponential bound would
still have a finite asymptotic speed. The simulation uses a finite lattice,
finite time, a chosen establishment threshold, a Beverton-Holt growth map,
and no landscape, climate, competition, Allee effect, or life-stage structure.
