Documentation

Complexitylib.Classes.PCP.Internal.Mixing

The expander mixing lemma for t-step walks #

The quantitative heart of every expander argument, in the square-norm form set up in RegularGraph: on a graph with SpectralBound lam, the correlation between a function f at the start of a t-step walk and a function g at its end is what independence would predict, up to lam ^ t times the two standard deviations.

Stated with everything squared, so no Real.sqrt appears:

(⟪f, Aᵗ g⟫ - (∑ f)(∑ g)/n) ^ 2 ≤ lam ^ (2t) · Var f · Var g

where Var f = ∑ f² - (∑ f)²/n is the (unnormalised) variance. Specialised to indicator functions of vertex sets this is the usual expander mixing lemma, and it is the estimate Dinur's powering step applies to the sets of vertices whose walk-labels disagree with a global assignment.

Main definitions #

Main results #

Linearity of the walk operator #

@[simp]
theorem Complexity.RegGraph.step_const (G : RegGraph) (c : ) (v : G.V) :
G.step (fun (x : G.V) => c) v = c
theorem Complexity.RegGraph.step_add (G : RegGraph) (f g : G.V) (v : G.V) :
G.step (fun (w : G.V) => f w + g w) v = G.step f v + G.step g v
theorem Complexity.RegGraph.stepIter_const (G : RegGraph) (t : ) (c : ) :
(G.stepIter t fun (x : G.V) => c) = fun (x : G.V) => c
theorem Complexity.RegGraph.stepIter_add (G : RegGraph) (t : ) (f g : G.V) :
(G.stepIter t fun (w : G.V) => f w + g w) = fun (v : G.V) => G.stepIter t f v + G.stepIter t g v

Centering #

noncomputable def Complexity.RegGraph.mean (G : RegGraph) (f : G.V) :

The mean of a function on the vertices.

Equations
Instances For
    noncomputable def Complexity.RegGraph.center (G : RegGraph) (f : G.V) :
    G.V

    The mean-zero part of a function.

    Equations
    Instances For
      theorem Complexity.RegGraph.eq_mean_add_center (G : RegGraph) (f : G.V) :
      f = fun (v : G.V) => G.mean f + G.center f v
      theorem Complexity.RegGraph.sum_center (G : RegGraph) (hn : 0 < G.order) (f : G.V) :
      v : G.V, G.center f v = 0
      theorem Complexity.RegGraph.sum_sq_center (G : RegGraph) (hn : 0 < G.order) (f : G.V) :
      v : G.V, G.center f v ^ 2 = v : G.V, f v ^ 2 - (∑ v : G.V, f v) ^ 2 / G.order
      theorem Complexity.RegGraph.sum_sq_center_nonneg (G : RegGraph) (f : G.V) :
      0 v : G.V, G.center f v ^ 2

      The mixing lemma #

      theorem Complexity.RegGraph.inner_stepIter_eq (G : RegGraph) (hn : 0 < G.order) (t : ) (f g : G.V) :
      v : G.V, f v * G.stepIter t g v = ((∑ v : G.V, f v) * v : G.V, g v) / G.order + v : G.V, G.center f v * G.stepIter t (G.center g) v

      The correlation between f at the start of a t-step walk and g at its end splits into the product of averages plus the correlation of the mean-zero parts.

      theorem Complexity.RegGraph.mixing_sq (G : RegGraph) {lam : } (h : G.SpectralBound lam) (hn : 0 < G.order) (t : ) (f g : G.V) :
      (v : G.V, f v * G.stepIter t g v - ((∑ v : G.V, f v) * v : G.V, g v) / G.order) ^ 2 lam ^ (2 * t) * (v : G.V, f v ^ 2 - (∑ v : G.V, f v) ^ 2 / G.order) * (v : G.V, g v ^ 2 - (∑ v : G.V, g v) ^ 2 / G.order)

      The expander mixing lemma for t-step walks.