lambda (f ∘ g) = lambda f * lambda g #
Write an input of comp f g as a W-indexed family of blocks, blk x w : Input V, and let
topBits g x : Input W be the string of block values w ↦ g (blk x w), so that
comp f g x = f (topBits g x).
Two inputs of comp f g are adjacent in the sensitivity graph exactly when they differ in one
coordinate (w, v), that flip is sensitive for g inside the block w, and the resulting
flip of the w-th top bit is sensitive for f; this is BSLambda.adj_comp_flip, and summing
it over the coordinates gives the master identity BSLambda.adj_comp_mulVec_apply
(A_{f∘g} *ᵥ ψ) x = ∑ w, A_f (topBits g x) ((topBits g x)^w) * (A_g *ᵥ ψ^{x,w}) (blk x w)
where ψ^{x,w} z = ψ (setBlk x w z) is the restriction of ψ to the w-th block through x.
Upper bound. Group the inputs into the fibres of topBits g (BSLambda.sum_sq_fibres). On
the fibre over b the identity above expresses A_{f∘g} ψ as a sum of at most deg_f(b)
terms, each of which is a copy of A_g acting inside one block and the identity elsewhere, so
each has norm at most lambda(g) times the norm of ψ on the fibre over b^w
(BSLambda.sum_sq_block_le). Minkowski's inequality bounds the fibre
(BSLambda.sum_sq_fibre_adj_comp_mulVec_le), and the operator bound for A_f applied to the
vector of fibre norms BSLambda.fibreNorm then gives ‖A_{f∘g}‖ ≤ lambda(f) * lambda(g).
Lower bound. If A_g u = lambda(g) u and A_f v = lambda(f) v, then
φ x = v (topBits g x) * ∏ w, u (blk x w) satisfies A_{f∘g} φ = lambda(f) lambda(g) φ
exactly. It is nonzero because the support of an eigenvector for a nonzero eigenvalue of a
bipartite graph meets both sides.
Adapted for Lean Pool from Timeroot/BS_Lam at commit
7bd39a8d41ee7910d3296d0477ad18f8fff9d870; ported to Lean Pool with proof and dependency cleanup.
Minkowski's inequality #
The lemma below mentions nothing from this development. Mathlib has the two-summand
Minkowski inequality Real.Lp_add_le and the abstract triangle inequality norm_sum_le, but
not the coordinate form for a finite family of vectors at p = 2; the proof is the standard
reduction to norm_sum_le in EuclideanSpace ℝ X. It is stated in the root namespace
because it is Mathlib-shaped, not BSLambda-shaped.
Minkowski's inequality for a finite family of vectors, in sum-of-squares form: if the
ℓ²-norm of each F y is at most t y, then the ℓ²-norm of ∑ y, F y is at most
∑ y, t y.
Blocks of a composed input #
An input of comp f g is a W-indexed family of V-blocks. Passing to that view is
Function.curry, and overwriting one block is Function.update read through it, so the
rewriting API below is Mathlib's Function.update API transported along blk_setBlk.
The string of block values w ↦ g (blk x w), which comp f g feeds into f.
Equations
- BSLambda.topBits g x w = g (BSLambda.blk x w)
Instances For
An input is determined by its blocks.
setBlk x w z replaces the w-th block of x by z.
Equations
- BSLambda.setBlk x w z = Function.uncurry (Function.update (BSLambda.blk x) w z)
Instances For
The blocks of setBlk x w z are the blocks of x with the w-th one updated. Every
other setBlk lemma below is this together with Mathlib's Function.update API.
Writing back the block that is already there does nothing.
Overwriting the w-th block changes exactly one factor of a product over the blocks.
If the top bits of x disagree with c at some coordinate other than w, then no
rewriting of the w-th block lands in the fibre of topBits g over c.
If the top bits of x already agree with c away from w, then setBlk x w z lies in the
fibre of topBits g over c exactly when g z is the w-th bit of c.
The adjacency matrix of a composition #
An edge of the sensitivity graph of comp f g is a g-sensitive flip inside one block
whose effect on the top bits is an f-sensitive flip.
Master identity. A_{f∘g} acts on a vector by applying A_g inside each block and
weighting the blocks by the entries of A_f at the top bits.
The upper bound #
The fibres of topBits g partition the inputs, so the squares of the fibrewise truncations
of F sum to ∑ x, F x ^ 2.
The ℓ²-norm of ψ on the fibre of topBits g over b.
Equations
- BSLambda.fibreNorm g ψ b = √(∑ x : BSLambda.Input (W × V), (if BSLambda.topBits g x = b then ψ x else 0) ^ 2)
Instances For
The defining property of the fibre norm, with the square root cleared.
Splitting an input of comp f g into its w-th block and everything else.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every input decomposes as a value for the w-th block together with an input whose w-th
block is zero, so a sum over all inputs splits accordingly.
Applying A_g inside the block w and the identity elsewhere is an operator of norm at
most lambda(g) from the fibre of topBits g over b^w to the fibre over b.
The w-th summand of the master identity, restricted to the fibre of topBits g over b.
This is sum_sq_block_le with the constant A_f b b^w pulled out of the sum.
The fibrewise bound. On the fibre of topBits g over b, the master identity writes
A_{f∘g} ψ as a sum of #W vectors whose norms sum_sq_fibre_summand_le controls; Minkowski's
inequality then bounds the fibre by lambda(g) times the value at b of A_f applied to the
vector of fibre norms of ψ.
The operator bound for A_{f∘g}, in sum-of-squares form.
The lower bound #
The block step of the product eigenvector computation. Applying A_g inside the
w-th block to x ↦ v (topBits g x) * ∏ w, u (blk x w) multiplies it by lambda(g) and
flips the w-th top bit: only blocks z adjacent to blk x w contribute, and for those the
top bits change exactly at w.
The product eigenvector: if u and v are eigenvectors of A_g and A_f then
x ↦ v (topBits g x) * ∏ w, u (blk x w) is an eigenvector of A_{f∘g}.
The composition theorem (Section 14 of bs_lambda.txt, imported there from ABKRT):
lambda is multiplicative under block composition.
Self-composition #
The one-bit identity function has lambda = 1.