The sensitivity graph and lambda(f) #
adj f is the adjacency matrix (over ℝ) of the sensitivity graph G_f: vertices are
all inputs, and x ~ y when x and y are Hamming neighbours with f x ≠ f y.
lam f is defined as the largest eigenvalue of adj f, matching the definition
lambda(f) = largest eigenvalue of A_f of Section 1.2 of bs_lambda.txt.
The L2 operator norm on matrices is a scoped instance; we open scoped Matrix.Norms.L2Operator throughout the spectral development.
Adapted for Lean Pool from Timeroot/BS_Lam at commit
7bd39a8d41ee7910d3296d0477ad18f8fff9d870; ported to Lean Pool with proof and dependency cleanup.
The neighbours of x in the sensitivity graph.
Equations
- BSLambda.nbrs f x = {y : BSLambda.Input V | hammingDist x y = 1 ∧ f x ≠ f y}
Instances For
The neighbours of x are exactly the one-coordinate flips at sensitive coordinates.
Column sums of the sensitivity adjacency matrix: it is symmetric (adj_comm), so they
agree with the row sums of sum_adj_row.
The trace of the sensitivity adjacency matrix vanishes: no input is its own neighbour.
lambda(f): the largest eigenvalue of the sensitivity-graph adjacency matrix.
Equations
- BSLambda.lam f = ⨆ (i : BSLambda.Input V), ⋯.eigenvalues i
Instances For
lambda(f) ≥ 0: the eigenvalues of adj f sum to trace (adj f) = 0, so at least one of
them, hence their supremum, is nonnegative (Section 11.1 of bs_lambda.txt).