Natural selection, Fisher's theorem and the Price equation
Haploid selection
DefinitionMean fitness of a population#✓fully proved
The mean fitness w̄ = ∑ i, p i * w i of a population with type frequencies p and
fitnesses w.
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
Used by 7
DefinitionVariance of fitness#✓fully proved
The variance of fitness Var_p(w) = ∑ i, p i * (w i - w̄) ^ 2 under the type frequencies
p.
def fitnessVariance (p w : ι → ℝ) : ℝ := ∑ i, p i * (w i - meanFitness p w) ^ 2
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
Uses 1 · Used by 2
DefinitionOne generation of haploid selection#✓fully proved
One generation of haploid selection: select p w i = p i * w i / w̄.
noncomputable def select (p w : ι → ℝ) (i : ι) : ℝ := p i * w i / meanFitness p w
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
TheoremFisher's fundamental theorem of natural selection#✓fully proved
Fisher's fundamental theorem of natural selection in its exact haploid, discrete-generation
form: the change in mean fitness over one generation of selection is the variance of fitness
divided by the mean fitness, w̄(p') - w̄(p) = Var_p(w) / w̄(p) (cf. Fisher 1930, who states the
theorem for the additive genetic variance). The identity needs only ∑ p = 1 and w̄ ≠ 0; the
model domain is the simplex with w > 0 (meanFitness_pos).
theorem meanFitness_select_sub {p w : ι → ℝ} (hp : ∑ i, p i = 1) (hw : meanFitness p w ≠ 0) :
meanFitness (select p w) w - meanFitness p w = fitnessVariance p w / meanFitness p w
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
noncomputable def select (p w : ι → ℝ) (i : ι) : ℝ := p i * w i / meanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:77
def fitnessVariance (p w : ι → ℝ) : ℝ := ∑ i, p i * (w i - meanFitness p w) ^ 2
MathlibExt/Biology/PopulationGenetics/Selection.lean:74
Uses 3 · Used by 1
TheoremPositivity of mean fitness on the simplex#✓fully proved
Mean fitness is positive on the simplex when every fitness is positive.
theorem meanFitness_pos {p w : ι → ℝ} (hp0 : ∀ i, 0 ≤ p i) (hp : ∑ i, p i = 1)
(hw : ∀ i, 0 < w i) : 0 < meanFitness p w
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
Uses 1 · Used by 2
TheoremMean fitness never decreases under haploid selection#✓fully proved
Mean fitness never decreases under haploid selection (corollary of Fisher's theorem).
theorem meanFitness_le_meanFitness_select {p w : ι → ℝ} (hp0 : ∀ i, 0 ≤ p i)
(hp : ∑ i, p i = 1) (hw : ∀ i, 0 < w i) : meanFitness p w ≤ meanFitness (select p w) w
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
noncomputable def select (p w : ι → ℝ) (i : ι) : ℝ := p i * w i / meanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:77
TheoremHaploid selection preserves nonnegative frequencies#✓fully proved
Haploid selection keeps frequencies nonnegative.
theorem select_nonneg {p w : ι → ℝ} (hp0 : ∀ i, 0 ≤ p i) (hp : ∑ i, p i = 1)
(hw : ∀ i, 0 < w i) (i : ι) : 0 ≤ select p w i
noncomputable def select (p w : ι → ℝ) (i : ι) : ℝ := p i * w i / meanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:77
Uses 3
TheoremHaploid selection preserves total frequency one#✓fully proved
Haploid selection keeps the frequencies summing to 1 whenever w̄ ≠ 0 (for w̄ = 0
the division by zero would give 0).
theorem sum_select {p w : ι → ℝ} (hw : meanFitness p w ≠ 0) : ∑ i, select p w i = 1
def meanFitness (p w : ι → ℝ) : ℝ := ∑ i, p i * w i
MathlibExt/Biology/PopulationGenetics/Selection.lean:70
noncomputable def select (p w : ι → ℝ) (i : ι) : ℝ := p i * w i / meanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:77
Uses 2
Diploid viability selection under Hardy–Weinberg proportions
DefinitionMarginal fitness of an allele#✓fully proved
The marginal fitness ∑ j, (w i j + w j i) / 2 * p j of allele i: the mean fitness of a
genotype carrying i whose other allele is drawn from the frequencies p, averaging the two
positions at which i can sit in the ordered genotype.
noncomputable def marginalFitness (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
∑ j, (w i j + w j i) / 2 * p j
Used by 10
TheoremMarginal fitness for symmetric genotype fitnesses#✓fully proved
For symmetric genotype fitnesses the marginal fitness is the row marginal
∑ j, w i j * p j.
theorem marginalFitness_of_symm {p : ι → ℝ} {w : ι → ι → ℝ} (hw : ∀ i j, w i j = w j i)
(i : ι) : marginalFitness p w i = ∑ j, w i j * p j
noncomputable def marginalFitness (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
∑ j, (w i j + w j i) / 2 * p j
MathlibExt/Biology/PopulationGenetics/Selection.lean:146
Uses 1
DefinitionDiploid mean fitness under Hardy–Weinberg proportions#✓fully proved
The mean fitness w̄ = ∑ i, ∑ j, p i * p j * w i j of a population in Hardy–Weinberg
proportions with allele frequencies p and genotype fitnesses w.
def diploidMeanFitness (p : ι → ℝ) (w : ι → ι → ℝ) : ℝ := ∑ i, ∑ j, p i * p j * w i j
Used by 11
DefinitionOne generation of diploid viability selection#✓fully proved
One generation of diploid viability selection under random mating, followed by Mendelian
transmission of either allele of each survivor:
diploidSelect p w i = p i * (∑ j, (w i j + w j i) / 2 * p j) / w̄.
noncomputable def diploidSelect (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
p i * marginalFitness p w i / diploidMeanFitness p w
noncomputable def marginalFitness (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
∑ j, (w i j + w j i) / 2 * p j
MathlibExt/Biology/PopulationGenetics/Selection.lean:146
def diploidMeanFitness (p : ι → ℝ) (w : ι → ι → ℝ) : ℝ := ∑ i, ∑ j, p i * p j * w i j
MathlibExt/Biology/PopulationGenetics/Selection.lean:159
Uses 2 · Used by 8
TheoremPositivity of diploid mean fitness#✓fully proved
Diploid mean fitness is positive on the simplex when every genotype fitness is positive.
theorem diploidMeanFitness_pos {p : ι → ℝ} {w : ι → ι → ℝ} (hp0 : ∀ i, 0 ≤ p i)
(hp : ∑ i, p i = 1) (hw : ∀ i j, 0 < w i j) : 0 < diploidMeanFitness p w
def diploidMeanFitness (p : ι → ℝ) (w : ι → ι → ℝ) : ℝ := ∑ i, ∑ j, p i * p j * w i j
MathlibExt/Biology/PopulationGenetics/Selection.lean:159
Uses 1 · Used by 1
TheoremDiploid selection preserves nonnegative allele frequencies#✓fully proved
Diploid viability selection keeps allele frequencies nonnegative.
theorem diploidSelect_nonneg {p : ι → ℝ} {w : ι → ι → ℝ} (hp0 : ∀ i, 0 ≤ p i)
(hp : ∑ i, p i = 1) (hw : ∀ i j, 0 < w i j) (i : ι) : 0 ≤ diploidSelect p w i
noncomputable def diploidSelect (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
p i * marginalFitness p w i / diploidMeanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:164
TheoremDiploid selection preserves total allele frequency one#✓fully proved
Diploid viability selection keeps allele frequencies summing to 1.
theorem sum_diploidSelect {p : ι → ℝ} {w : ι → ι → ℝ} (hw : diploidMeanFitness p w ≠ 0) :
∑ i, diploidSelect p w i = 1
def diploidMeanFitness (p : ι → ℝ) (w : ι → ι → ℝ) : ℝ := ∑ i, ∑ j, p i * p j * w i j
MathlibExt/Biology/PopulationGenetics/Selection.lean:159
noncomputable def diploidSelect (p : ι → ℝ) (w : ι → ι → ℝ) (i : ι) : ℝ :=
p i * marginalFitness p w i / diploidMeanFitness p w
MathlibExt/Biology/PopulationGenetics/Selection.lean:164
Uses 3 · Used by 4
The Price equation
TheoremPrice equation#✓fully proved
The Price equation (exact, finite population). Individual i has fitness w i (number of
offspring), trait value z i, and mean offspring trait value z' i. With population means
w̄ = 𝔼 i, w i, z̄ = 𝔼 i, z i and offspring mean trait z̄' = ∑ i, w i * z' i / ∑ i, w i,
w̄ (z̄' - z̄) = Cov(w, z) + E[w (z' - z)], where Cov is the population covariance
(Price 1970). Nonnegativity of w is not needed; only a nonzero total offspring number.
theorem price (w z z' : ι → ℝ) (hw : ∑ i, w i ≠ 0) :
(𝔼 i, w i) * ((∑ i, w i * z' i) / ∑ i, w i - 𝔼 i, z i) =
(𝔼 i, (w i - 𝔼 j, w j) * (z i - 𝔼 j, z j)) + 𝔼 i, w i * (z' i - z i)
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.