Finite uniform-seed distribution ensembles -- proof internals #
The generic finite probability laws are proved by exact cardinal arithmetic. Ensemble laws then instantiate them with each slice's explicit nonempty seed space.
theorem
Complexity.uniformProbability_le_one_internal
{Ω : Type u}
[Fintype Ω]
[Nonempty Ω]
(event : Finset Ω)
:
theorem
Complexity.uniformProbability_compl_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
[Nonempty Ω]
(event : Finset Ω)
:
theorem
Complexity.uniformProbability_union_le_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
(event₁ event₂ : Finset Ω)
:
theorem
Complexity.uniformProbability_eq_sum_fiberwise_internal
{Ω : Type u}
{ι : Type v}
[Fintype Ω]
[DecidableEq Ω]
[DecidableEq ι]
(event : Finset Ω)
(indices : Finset ι)
(f : Ω → ι)
(hmaps : Set.MapsTo f ↑event ↑indices)
:
theorem
Complexity.uniformProbability_product_internal
{Ω : Type u}
{Ξ : Type v}
[Fintype Ω]
[DecidableEq Ω]
[Fintype Ξ]
[DecidableEq Ξ]
(P : Ω → Prop)
(Q : Ξ → Prop)
[DecidablePred P]
[DecidablePred Q]
:
uniformProbability {seed : Ω × Ξ | P seed.1 ∧ Q seed.2} = uniformProbability (Finset.filter P Finset.univ) * uniformProbability (Finset.filter Q Finset.univ)
theorem
Complexity.uniformProbability_product_eq_average_fibers_internal
{advice : Type u}
{challenge : Type v}
[Fintype advice]
[DecidableEq advice]
[Nonempty advice]
[Fintype challenge]
[DecidableEq challenge]
[Nonempty challenge]
(event : advice → challenge → Prop)
[DecidablePred fun (sample : advice × challenge) => event sample.1 sample.2]
[(fixed : advice) → DecidablePred (event fixed)]
:
uniformProbability {sample : advice × challenge | event sample.1 sample.2} = (∑ fixed : advice, uniformProbability (Finset.filter (event fixed) Finset.univ)) / ↑(Fintype.card advice)
theorem
Complexity.exists_fiber_uniformProbability_ge_internal
{advice : Type u}
{challenge : Type v}
[Fintype advice]
[DecidableEq advice]
[Nonempty advice]
[Fintype challenge]
[DecidableEq challenge]
[Nonempty challenge]
(event : advice → challenge → Prop)
[DecidablePred fun (sample : advice × challenge) => event sample.1 sample.2]
[(fixed : advice) → DecidablePred (event fixed)]
:
∃ (fixed : advice),
uniformProbability {sample : advice × challenge | event sample.1 sample.2} ≤ uniformProbability (Finset.filter (event fixed) Finset.univ)
theorem
Complexity.uniformMean_le_threshold_add_probability_internal
{sample : Type u}
[Fintype sample]
[DecidableEq sample]
[Nonempty sample]
(value : sample → ℚ)
(threshold : ℚ)
(hupper : ∀ (input : sample), value input ≤ 1)
:
uniformMean value ≤ threshold + uniformProbability {input : sample | threshold ≤ value input} * (1 - threshold)
theorem
Complexity.uniformMean_sub_div_le_probability_ge_internal
{sample : Type u}
[Fintype sample]
[DecidableEq sample]
[Nonempty sample]
(value : sample → ℚ)
(lower threshold : ℚ)
(hupper : ∀ (input : sample), value input ≤ 1)
(hlower : lower ≤ uniformMean value)
(hthreshold : threshold < 1)
:
theorem
Complexity.half_epsilon_le_probability_ge_of_le_uniformMean_internal
{sample : Type u}
[Fintype sample]
[DecidableEq sample]
[Nonempty sample]
(value : sample → ℚ)
(epsilon : ℚ)
(hepsilon : 0 ≤ epsilon)
(hupper : ∀ (input : sample), value input ≤ 1)
(hmean : 1 / 2 + epsilon ≤ uniformMean value)
:
theorem
Complexity.uniformAtLeastOneProbability_eq_one_sub_pow_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
[Nonempty Ω]
(event : Finset Ω)
(trials : ℕ)
:
theorem
Complexity.one_sub_pow_le_uniformAtLeastOneProbability_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
[Nonempty Ω]
(event : Finset Ω)
(trials : ℕ)
(singleDrawLower : ℚ)
(hlower : singleDrawLower ≤ uniformProbability event)
:
theorem
Complexity.trials_mul_div_one_add_le_uniformAtLeastOneProbability_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
[Nonempty Ω]
(event : Finset Ω)
(trials : ℕ)
:
↑trials * uniformProbability event / (1 + ↑trials * uniformProbability event) ≤ uniformAtLeastOneProbability event trials
theorem
Complexity.half_le_uniformAtLeastOneProbability_of_singleDrawLower_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
[Nonempty Ω]
(event : Finset Ω)
(trials : ℕ)
(singleDrawLower : ℚ)
(hlower : singleDrawLower ≤ uniformProbability event)
(htrials : 1 ≤ ↑trials * singleDrawLower)
:
theorem
Complexity.uniformProbability_equiv_internal
{Ω : Type u}
{Ξ : Type v}
[Fintype Ω]
[DecidableEq Ω]
[Fintype Ξ]
[DecidableEq Ξ]
(e : Ω ≃ Ξ)
(P : Ξ → Prop)
[DecidablePred P]
:
theorem
Complexity.uniformProbability_eq_internal
{Ω : Type u}
[Fintype Ω]
[DecidableEq Ω]
(x : Ω)
:
theorem
Complexity.FiniteEnsemble.probability_nonneg_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P : α → Prop)
[DecidablePred P]
:
theorem
Complexity.FiniteEnsemble.probability_le_one_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P : α → Prop)
[DecidablePred P]
:
theorem
Complexity.FiniteEnsemble.probability_false_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
:
theorem
Complexity.FiniteEnsemble.probability_true_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
:
theorem
Complexity.FiniteEnsemble.probability_not_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P : α → Prop)
[DecidablePred P]
:
theorem
Complexity.FiniteEnsemble.probability_or_le_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P Q : α → Prop)
[DecidablePred P]
[DecidablePred Q]
:
theorem
Complexity.FiniteEnsemble.probability_mono_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P Q : α → Prop)
[DecidablePred P]
[DecidablePred Q]
(hPQ : ∀ (x : α), P x → Q x)
:
theorem
Complexity.FiniteEnsemble.probability_congr_internal
{α : Type u}
(D : FiniteEnsemble α)
(n : ℕ)
(P Q : α → Prop)
[DecidablePred P]
[DecidablePred Q]
(hPQ : ∀ (x : α), P x ↔ Q x)
:
theorem
Complexity.FiniteEnsemble.probability_map_internal
{α : Type u}
{β : Type w}
(D : FiniteEnsemble α)
(f : α → β)
(n : ℕ)
(P : β → Prop)
[DecidablePred P]
:
theorem
Complexity.FiniteEnsemble.sum_mass_eq_one_internal
{α : Type u}
[DecidableEq α]
(D : FiniteEnsemble α)
(n : ℕ)
:
theorem
Complexity.FiniteEnsemble.probability_product_internal
{α : Type u}
{β : Type w}
(D : FiniteEnsemble α)
(E : FiniteEnsemble β)
(n : ℕ)
(P : α → Prop)
(Q : β → Prop)
[DecidablePred P]
[DecidablePred Q]
:
((D.product E).probability n fun (xy : α × β) => P xy.1 ∧ Q xy.2) = D.probability n P * E.probability n Q
theorem
Complexity.FiniteEnsemble.probability_dirac_internal
{α : Type u}
(x : ℕ → α)
(n : ℕ)
(P : α → Prop)
[DecidablePred P]
:
theorem
Complexity.DyadicEnsemble.probability_toFinite_internal
{α : Type u}
(D : DyadicEnsemble α)
(n : ℕ)
(P : α → Prop)
[DecidablePred P]
: