Approximation of Graphons by Step Functions #
This file develops the theory of approximating graphons by step functions, which is central to the regularity lemma and compactness of graphon space.
Main definitions #
Graphon.rectAverage- Average value of a graphon over a rectangleGraphon.Refines- Partition refinement relation
Main results #
Graphon.rectAverage_mem_Icc- Rectangle averages are in [0, 1]Graphon.rectAverage_symm- Rectangle averages are symmetric
Implementation notes #
Given a measurable partition P of α, the stepified graphon takes the average value
on each rectangle S × T for S, T ∈ P:
(stepify P W)(x, y) = (1/(μ(S)μ(T))) ∫_{S×T} W dμ×μ for x ∈ S, y ∈ T
The stepification stepify P W constructs the step-function approximation as an
AEEqFun, with stepify_ae providing the pointwise characterization.
References #
- [L. Lovász, Large Networks and Graph Limits][lovasz2012], Section 9.2-9.3
Rectangle averages #
The average value of a graphon over a rectangle S × T.
This is the building block for stepification:
rectAverage W S T = (1/(μ(S)μ(T))) ∫_{S×T} W dμ×μ
Equations
Instances For
The rectangle average is in [0, 1] for graphons.
The rectangle average is symmetric.
Rectangle average of zero graphon is zero.
Rectangle average of one graphon is one (for positive measure sets).
Refinement #
A partition Q refines P if every part of Q is contained in some part of P.
Equations
- Graphon.Refines Q P = ∀ T ∈ Q.parts, ∃ S ∈ P.parts, T ⊆ S
Instances For
Refinement is reflexive.
Refinement is transitive.
Partition splitting #
Split one part of a partition into two pieces.
Given partition P and a part S ∈ P.parts, and a measurable subset S₁ ⊆ S, construct the refinement Q that replaces S with S₁ and S \ S₁.
Preconditions:
- S ∈ P.parts
- S₁ ⊆ S is measurable
- Both S₁ and S \ S₁ have positive measure (to be non-trivial)
Implementation note: Uses classical decidability for Finset operations on Set α.
Equations
Instances For
Splitting a part produces a refinement.
Splitting adds at most one part.
Split every part of a partition by a measurable set A.
For each S ∈ P.parts, we include S ∩ A and S \ A in the new partition (keeping all pieces, even null ones — this simplifies ae_covers).
This is the global splitting operation needed for the Frieze-Kannan regularity proof when both within-variances are large.
Equations
Instances For
splitAllParts produces a refinement.
splitAllParts has at most 2 * P.parts.card parts.
Stepification #
The stepification function: piecewise constant on partition rectangles.
For a partition P and graphon W, stepifyFun P W (x,y) = rectAverage W S T
when (x,y) ∈ S × T for S, T ∈ P.parts.
Equations
- Graphon.stepifyFun P W p = ∑ S ∈ P.parts, ∑ T ∈ P.parts, (S ×ˢ T).indicator (fun (x : α × α) => W.rectAverage S T) p
Instances For
stepifyFun is measurable.
stepifyFun is symmetric: stepifyFun P W (y,x) = stepifyFun P W (x,y).
At every point in S × T, the stepification equals rectAverage W S T.
For any (x,y), if x ∈ S and y ∈ T for unique parts S, T ∈ P.parts, then stepifyFun P W (x,y) = rectAverage W S T.
stepifyFun takes values in [0,1] a.e.
The stepification of a graphon with respect to a partition.
This is the step graphon that equals rectAverage W S T on each rectangle S × T
for parts S, T ∈ P.parts.
Equations
- Graphon.stepify P W = { toAEEqFun := MeasureTheory.AEEqFun.mk (Graphon.stepifyFun P W) ⋯, symm' := ⋯, ae_mem_Icc := ⋯ }
Instances For
The stepification agrees with the stepification function a.e.