Pippenger expander construction proof #
Probabilistic counting argument proving existence of expanders for the rows needed by the Kalton-Roberts bound.
Counting constrained permutations #
theorem
KaltonRoberts.card_perm_constrained
(n s t : ℕ)
(hs : s ≤ t)
(ht : t ≤ n)
:
Fintype.card { σ : Equiv.Perm (Fin n) // ∀ (i : Fin n), ↑i < s → ↑(σ i) < t } = t.descFactorial s * (n - s).factorial
The number of permutations of Fin n that map the first s elements
into {0, …, t-1} is t.descFactorial s * (n - s)!.
Binomial coefficient bounds #
Descending factorial ratio bound #
Geometric and exponential tail bounds #
theorem
KaltonRoberts.bad_sum_split
(A D N : ℕ)
(T : ℕ → ℝ)
(q B : ℝ)
(hq0 : 0 ≤ q)
(hq1 : q < 1)
(hB0 : 0 ≤ B)
(hcard_N : (Finset.Icc 1 A).card ≤ N)
(hsmall : ∀ m ∈ Finset.Icc 1 A, m ≤ D → T m ≤ q ^ m)
(hmid : ∀ m ∈ Finset.Icc 1 A, D < m → T m ≤ B)
:
Entropy bounds for Pippenger bad events #
Subset extension #
Counting constrained permutations with arbitrary subsets #
theorem
KaltonRoberts.card_subtype_perm_mul_right
{n : ℕ}
(π : Equiv.Perm (Fin n))
(P : Equiv.Perm (Fin n) → Prop)
[DecidablePred P]
:
Fintype.card { σ : Equiv.Perm (Fin n) // P σ } = Fintype.card { σ : Equiv.Perm (Fin n) // P (σ * π) }
theorem
KaltonRoberts.card_subtype_perm_mul_left
{n : ℕ}
(π : Equiv.Perm (Fin n))
(P : Equiv.Perm (Fin n) → Prop)
[DecidablePred P]
:
Fintype.card { σ : Equiv.Perm (Fin n) // P σ } = Fintype.card { σ : Equiv.Perm (Fin n) // P (π * σ) }
Good matching existence #
theorem
KaltonRoberts.first_moment_principle
{n : ℕ}
(hn : 0 < n.factorial)
(weights : Finset (Finset (Fin n) × Finset (Fin n)))
(hsum : ∑ p ∈ weights, ↑(Fintype.card { σ : Equiv.Perm (Fin n) // ∀ a ∈ p.1, σ a ∈ p.2 }) / ↑n.factorial < 1)
:
∃ (σ : Equiv.Perm (Fin n)), ∀ p ∈ weights, ¬∀ a ∈ p.1, σ a ∈ p.2
theorem
KaltonRoberts.good_perm_of_sum_lt
(M : ℕ)
(_hM : 0 < M)
(pairs : Finset (Finset (Fin M) × Finset (Fin M)))
(hsum : ∑ p ∈ pairs, ↑(p.2.card.descFactorial p.1.card) * ↑(M - p.1.card).factorial / ↑M.factorial < 1)
(hpairs : ∀ p ∈ pairs, p.1.card ≤ p.2.card ∧ p.2.card ≤ M)
:
∃ (σ : Equiv.Perm (Fin M)), ∀ p ∈ pairs, ¬∀ a ∈ p.1, σ a ∈ p.2
theorem
KaltonRoberts.good_perm_indexed_of_sum_lt
{ι : Type u_1}
(M : ℕ)
(I : Finset ι)
(A B : ι → Finset (Fin M))
(hsum : ∑ i ∈ I, ↑((B i).card.descFactorial (A i).card) * ↑(M - (A i).card).factorial / ↑M.factorial < 1)
(hpairs : ∀ i ∈ I, (A i).card ≤ (B i).card ∧ (B i).card ≤ M)
:
∃ (σ : Equiv.Perm (Fin M)), ∀ i ∈ I, ¬∀ a ∈ A i, σ a ∈ B i
theorem
KaltonRoberts.good_matching_exists_of_ratio_sum_lt_one
(N L r c A : ℕ)
(_hN : 0 < N)
(hL : 0 < L)
(hr : 0 < r)
(hc : r < c)
(hNL : r * N = c * L)
(hA : A ≤ L)
(hsum : ∑ m ∈ Finset.Icc 1 A, ↑(N.choose m) * ↑(L.choose m) * ↑((c * m).choose (r * m)) / ↑((r * N).choose (r * m)) < 1)
:
If the expected number of bad sets is < 1, a good matching exists.
Constructing FiniteExpanderWitness from a good edge function #
noncomputable def
KaltonRoberts.finiteExpanderOfGoodEdge
(N L r A : ℕ)
(hN : 0 < N)
(edge : Fin N → Fin r → Fin L)
(hcov : ∀ (w : Fin L), ∃ (v : Fin N) (e : Fin r), edge v e = w)
(hexp :
∀ (S : Finset (Fin N)), S.card ≤ A → (S.biUnion fun (v : Fin N) => Finset.image (edge v) Finset.univ).card ≥ S.card)
:
Package a good edge function into a FiniteExpanderWitness.
Equations
- One or more equations did not get rendered due to their size.