ε-Almost Universal Hashing #
This file proves things about
ε-almost-universal₂ (ε-AU₂), seeHashFamily.almostUniversal2ε-almost-strongly-universal₂ (ε-ASU₂), seeHashFamily.almostStronglyUniversal2- uniformity, see
HashFamily.uniform
These are relaxations of HashFamily.universal2 and
HashFamily.stronglyUniversal2 where equality/bounds are replaced by ε.
The definitions are in UniversalHashing.Basic.
Main results #
HashFamily.universal2_iff_probUniform(inBasic):universal2 ↔ almostUniversal2 (1 / |Output|).HashFamily.almostUniversal2_mono: ε-AU₂ is monotone inε.HashFamily.almostStronglyUniversal2_mono: ε-ASU₂ is monotone inε.HashFamily.almostUniversal2_of_almostStronglyUniversal2:almostStronglyUniversal2 εimpliesalmostUniversal2 ε.HashFamily.stronglyUniversal2_iff_almostStronglyUniversal2:stronglyUniversal2 ↔ almostStronglyUniversal2 (1 / |Output|).HashFamily.almostStronglyUniversal2_of_stronglyUniversal2:stronglyUniversal2impliesalmostStronglyUniversal2 (1 / |Output|).HashFamily.uniform_of_stronglyUniversal2:stronglyUniversal2impliesuniform.HashFamily.almostStronglyUniversal2_eps_lower_bound:almostStronglyUniversal2 εimplies1 / |Output| ≤ ε.
References #
theorem
HashFamily.almostUniversal2_mono
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[DecidableEq Output]
{ε₁ ε₂ : ℚ}
(hε : ε₁ ≤ ε₂)
(H : HashFamily Seed Input Output)
(h : almostUniversal2 ε₁ H)
:
almostUniversal2 ε₂ H
theorem
HashFamily.almostStronglyUniversal2_mono
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
{ε₁ ε₂ : ℚ}
(hε : ε₁ ≤ ε₂)
(H : HashFamily Seed Input Output)
(h : almostStronglyUniversal2 ε₁ H)
:
theorem
HashFamily.almostUniversal2_of_almostStronglyUniversal2
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
[Nonempty Seed]
{ε : ℚ}
(H : HashFamily Seed Input Output)
(h : almostStronglyUniversal2 ε H)
:
almostUniversal2 ε H
theorem
HashFamily.almostStronglyUniversal2_of_stronglyUniversal2
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
[Nonempty Seed]
(H : HashFamily Seed Input Output)
(hsu : H.stronglyUniversal2)
:
almostStronglyUniversal2 (1 / ↑(Fintype.card Output)) H
theorem
HashFamily.stronglyUniversal2_iff_almostStronglyUniversal2
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
[Nonempty Seed]
(H : HashFamily Seed Input Output)
:
stronglyUniversal2 is equivalent to almostStronglyUniversal2 (1 / |Output|).
Since 1 / |Output| is the minimum possible ε for any ε-ASU₂ family
(see almostStronglyUniversal2_eps_lower_bound), this characterizes strongly universal
families as exactly those achieving the tightest possible near-independence bound.
theorem
HashFamily.uniform_of_stronglyUniversal2
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
[Nonempty Seed]
[Nontrivial Input]
(H : HashFamily Seed Input Output)
(hsu : H.stronglyUniversal2)
:
H.uniform
theorem
HashFamily.almostStronglyUniversal2_eps_lower_bound
{Seed : Type u_1}
{Input : Type u_2}
{Output : Type u_3}
[Fintype Seed]
[Fintype Output]
[DecidableEq Output]
[Nonempty Seed]
[Nontrivial Input]
{ε : ℚ}
(H : HashFamily Seed Input Output)
(h : almostStronglyUniversal2 ε H)
: