Documentation

LeanPool.Superdiffusion.Algsuperdiff.Section3.Provider.Localization.GoodEventAggregation

GoodEventAggregation #

Ported from scottnarmstrong/Superdiffusion at 7f20476385d4af418f110303085ad0740c9eba46. Module imports, support namespace and local option directives adapted for Lean Pool.

Part 1 --- the v-uniform injection endpoint #

The three steps (i), bottom up.

Step A --- the response-J sensitivity switch, v-uniform #

BadEvents.responseJ_sensitivity_of_mem_goodLocalEvent_ae binds (p, q) outside its ∀ᵐ, but its whole proof is one filter_upwards on the v- BadEvents.lambda_transfer_ae, applied to the pointwise public …_of_lambdaTransfer. Moving ∀ p q inside the event is therefore free.

theorem Algsuperdiff.Section3.Provider.Localization.responseJ_sensitivity_of_mem_goodLocalEvent_ae_forall_loads {d : ℕ} (M : ABKModel d) (Ccg : ℝ) (Q : HCPolySupport.TriadicCube d) (n L : ℤ) (hL : n ≤ L) (delta : ℝ) (hdelta : 0 < delta) (hdelta1 : delta ≤ 1) :

The response-J sensitivity switch on the good event, uniformly in the loads. On ONE probability-one event (the one of BadEvents.lambda_transfer_ae), simultaneously for every pair of loading vectors (p, q), the coefficient switch of ABK26 holds in the form used.

This is BadEvents.responseJ_sensitivity_of_mem_goodLocalEvent_ae with the two loading binders moved INSIDE the almost-sure quantifier; the statement is otherwise character-identical.

Conditional on the caller-supplied omega ∈ goodLocalEvent M Ccg Q n, the manuscript's own indicator, inherited verbatim.

Step B --- the composed delta = 1 endpoint, v-uniform #

The second a.e. input of the composed delta = 1 sensitivity display, namely BadEvents.gradientW1Infinity_incrementUnitCube₂_le_responseGate_ae, is already v-free, and every remaining ingredient of that proof is deterministic. The composition below is the proved one, re-threaded with ∀ p q inside.

The composed delta = 1 sensitivity endpoint, uniformly in the loads.

The composed delta = 1 sensitivity display of SensitivityBridges, with the two loading binders moved INSIDE the almost-sure quantifier. The event is the intersection of the two v-free events already used there.

The deterministic ingredients are consumed unchanged: the response gate (BadEvents.gradientW1Infinity_incrementUnitCube₂_le_responseGate_ae), the 3^{4l} fingerprints (SensitivityBridges.w1Infinity_sq_incrementUnitCube₂_le, …gradientW1Infinity_sq_incrementUnitCube₂_le), the reciprocal gauge conversions (SensitivityBridges.inv_unitCubeLambda_le_inv_lambdaSq_oneEighth and its square), the rescale companion (SensitivityBridges.responseJ_cutoffFamily_eq_unitRescaledCutoffCoeff), and CoarseGraining's Ch02.responseJ_nonneg.

Conditional on omega ∈ goodLocalEvent M Ccg Q n, inherited verbatim.

Step C --- the priced injection endpoint, v-uniform #

theorem Algsuperdiff.Section3.Provider.Localization.responseJ_injection_priced_ae_forall_loads (d : ℕ) :
∃ (C : ℝ), 0 < C ∧ ∀ (M : ABKModel d) (m0 : ℤ) (E : { E : ℝ // 1 ≤ E }), mStarStar M < m0 → Frozen.Section3.inductionState M (m0 - 1) E → C * (Disorder.cstar M)⁻¹ ≤ ↑E → M.gamma ≤ (↑E)⁻¹ ^ 10 → ∀ (Ccg : ℝ), 0 < Ccg → ∀ (Q : HCPolySupport.TriadicCube d) (hgap : ℕ) (L : ℤ), Q.scale - ↑hgap ≤ L → Q.scale - ↑hgap ≤ m0 → M.gamma * ↑hgap ≤ 1 → ∀ᵐ (omega : Cutoff.CutoffSample d) ∂↑(Cutoff.cutoffSampleLaw M), omega ∈ BadEvents.goodLocalEvent M Ccg Q (Q.scale - ↑hgap) → ∀ (v : HCPolySupport.Vec d), HCPolySupport.vecNormSq v ≤ 2 → HCPolySupport.Book.Ch02.responseJ (HCPolySupport.Book.Ch02.cubeDomain (HCPolySupport.originCube d 0)) (Frozen.Section24.perturbCoeffOn (HCPolySupport.Book.Ch02.cubeDomain (HCPolySupport.originCube d 0)) (BadEvents.unitRescaledCutoffCoeff M Q (Q.scale - ↑hgap) omega) (BadEvents.incrementUnitCube₂ Q (Q.scale - ↑hgap) L omega).toLInfSkewMatrixFieldOn 1) (Observable.inverseSqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) (Observable.sqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) ≤ 3 * HCPolySupport.Book.Ch02.responseJ (HCPolySupport.Book.Ch02.cubeDomain Q) ((Cutoff.coefficientCutoffTriadicCoeffFamily M (Q.scale - ↑hgap) omega).coeffOn Q) (Observable.inverseSqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) (Observable.sqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) + 324 * BadEvents.responseSensitivityConst d * (16 * Ccg + 8 * Ccg ^ 2) * ((Disorder.cstar M)⁻¹ * M.gamma * 3 ^ (4 * ↑Q.scale - 2 * M.gamma * ↑Q.scale)) * underlineW2Gauge Q (Stream.shellIncrement (↑omega) (Q.scale - ↑hgap) L) ^ 2

The per-(l,z) priced injection display, uniformly in the loads.

The priced injection display of LambdaGateChain with ∀ v, vecNormSq v ≤ 2 moved INSIDE the almost-sure quantifier: on ONE probability-one event, simultaneously for every loading direction, the printed display holds. The premise list, the witness C (the l.shom.continuity constant) and the four explicit constants 3, 324, 16 Ccg + 8 Ccg², c⋆^{-1} γ 3^{4l-2γl} are inherited character-for-character; nothing is weakened and nothing is added.

This is the form the composed switch endpoints SwitchNormalization.breakdownLeg{A,B}_le_of_shom_switch need for their hdeep binder, which quantifies over the loading ball at a fixed sample.

Conditional on omega ∈ goodLocalEvent M Ccg Q (Q.scale - hgap), 0 < Ccg and the displayed scale premises, all inherited verbatim.

Step D --- one null set for the whole grid #

The previous endpoint still produces ONE null set per (Q, hgap, L). Part 2's consumer entry point geometricDiscount_mul_gridScaleSeries_good_le fixes omega and demands the per-(j, R) estimate for descendant cube, so the z-aggregation needs the cube/gap/scale-uniform form as well. It is available at zero mathematical cost: TriadicCube d is countable, so three MeasureTheory.ae_all_iff rewrites move ∀ Q hgap L outside the almost-sure quantifier, and the three scale premises are discharged by case analysis (when one of them fails the conclusion is vacuous).

theorem Algsuperdiff.Section3.Provider.Localization.responseJ_injection_priced_ae_forall_cubes_and_loads (d : ℕ) :
∃ (C : ℝ), 0 < C ∧ ∀ (M : ABKModel d) (m0 : ℤ) (E : { E : ℝ // 1 ≤ E }), mStarStar M < m0 → Frozen.Section3.inductionState M (m0 - 1) E → C * (Disorder.cstar M)⁻¹ ≤ ↑E → M.gamma ≤ (↑E)⁻¹ ^ 10 → ∀ (Ccg : ℝ), 0 < Ccg → ∀ᵐ (omega : Cutoff.CutoffSample d) ∂↑(Cutoff.cutoffSampleLaw M), ∀ (Q : HCPolySupport.TriadicCube d) (hgap : ℕ) (L : ℤ), Q.scale - ↑hgap ≤ L → Q.scale - ↑hgap ≤ m0 → M.gamma * ↑hgap ≤ 1 → omega ∈ BadEvents.goodLocalEvent M Ccg Q (Q.scale - ↑hgap) → ∀ (v : HCPolySupport.Vec d), HCPolySupport.vecNormSq v ≤ 2 → HCPolySupport.Book.Ch02.responseJ (HCPolySupport.Book.Ch02.cubeDomain (HCPolySupport.originCube d 0)) (Frozen.Section24.perturbCoeffOn (HCPolySupport.Book.Ch02.cubeDomain (HCPolySupport.originCube d 0)) (BadEvents.unitRescaledCutoffCoeff M Q (Q.scale - ↑hgap) omega) (BadEvents.incrementUnitCube₂ Q (Q.scale - ↑hgap) L omega).toLInfSkewMatrixFieldOn 1) (Observable.inverseSqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) (Observable.sqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) ≤ 3 * HCPolySupport.Book.Ch02.responseJ (HCPolySupport.Book.Ch02.cubeDomain Q) ((Cutoff.coefficientCutoffTriadicCoeffFamily M (Q.scale - ↑hgap) omega).coeffOn Q) (Observable.inverseSqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) (Observable.sqrtLoad (Annealed.sigmaBar M (Q.scale - ↑hgap)) v) + 324 * BadEvents.responseSensitivityConst d * (16 * Ccg + 8 * Ccg ^ 2) * ((Disorder.cstar M)⁻¹ * M.gamma * 3 ^ (4 * ↑Q.scale - 2 * M.gamma * ↑Q.scale)) * underlineW2Gauge Q (Stream.shellIncrement (↑omega) (Q.scale - ↑hgap) L) ^ 2

The priced injection display on ONE null set, uniformly in the cube, the gap, the coefficient scale AND the load (as read by the z-aggregation).

responseJ_injection_priced_ae_forall_loads with ∀ Q hgap L and their three scale premises ALSO moved inside the ∀ᵐ: on one probability-one event, simultaneously for every triadic cube, every gap, every coefficient scale and every loading direction, the printed display holds. Nothing is weakened: the premise list, the witness C and the four constants are those of the endpoint above, and instantiating this form at a fixed (Q, hgap, L) recovers it.

This is what the grid aggregation needs, because geometricDiscount_mul_gridScaleSeries_good_le's hstep binder quantifies over all descendants at a fixed sample.

Conditional on omega ∈ goodLocalEvent M Ccg Q (Q.scale - hgap) and 0 < Ccg, both inherited verbatim.

Part 2 --- the good-event grid aggregation engine #

Everything below is gauge-free and carrier-free: no diffusivity, no threshold, no coefficient family occurs. The only development-specific object is the remainder carrier AggregationRemainder.switchRemainder, at which the remainder collapse is consumed.

The per-scale step (grid Minkowski) #

Breakdown.legScaleAverage Q k s leg is the printed (⨍_{z ∈ 3^k ℤ^d ∩ Q} leg(z+□_k)^{d/s})^{s/d}. For s ≤ 1 ≤ d the inner exponent d/s is at least one, so the power mean is subadditive; it is also degree-one homogeneous, and the power mean of a constant is at most that constant (with equality off the empty grid).

theorem Algsuperdiff.Section3.Provider.Localization.legScaleAverage_le_three_term {d : ℕ} (Q : HCPolySupport.TriadicCube d) (k : ℤ) {s : ℝ} (hs : 0 < s) (hs1 : s ≤ 1) (hd : d ≠ 0) {leg deep wave : HCPolySupport.TriadicCube d → ℝ} {c b rem : ℝ} (hc : 0 ≤ c) (hb : 0 ≤ b) (hrem : 0 ≤ rem) (hleg : ∀ R ∈ HCPolySupport.descendantsAtScale Q k, 0 ≤ leg R) (hdeep : ∀ R ∈ HCPolySupport.descendantsAtScale Q k, 0 ≤ deep R) (hwave : ∀ R ∈ HCPolySupport.descendantsAtScale Q k, 0 ≤ wave R) (hsplit : ∀ R ∈ HCPolySupport.descendantsAtScale Q k, leg R ≤ c * deep R + b * wave R + rem) :
legScaleAverage Q k s leg ≤ c * legScaleAverage Q k s deep + b * legScaleAverage Q k s wave + rem

The three-term reinjection at one scale. A per-cube estimate

leg(z+□_k) ≤ c · deep(z+□_k) + b · wave(z+□_k) + rem

valid on the whole grid passes through the printed L^{d/s} average with unchanged multiplicative constants and an unchanged additive remainder. Two applications of Minkowski, two of homogeneity, one constant lane.

This is the printed "summing over z ∈ 3^l ℤ^d ∩ □_m and applying the triangle inequality", at one localization scale. The grid's cardinality enters only through the average's own normalization.

theorem Algsuperdiff.Section3.Provider.Localization.legScaleAverage_indicator_eq {d : ℕ} {Omega : Type u_1} (Q : HCPolySupport.TriadicCube d) (k : ℤ) {s : ℝ} (hs : 0 < s) (hd : d ≠ 0) {leg : HCPolySupport.TriadicCube d → ℝ} (B : HCPolySupport.TriadicCube d → Set Omega) (omega : Omega) :
(legScaleAverage Q k s fun (R : HCPolySupport.TriadicCube d) => leg R * (B R).indicator (fun (x : Omega) => 1) omega) = (HCPolySupport.Book.Ch02.finsetAverageReal (HCPolySupport.descendantsAtScale Q k) fun (R : HCPolySupport.TriadicCube d) => (leg R).rpow (↑d / s) * (B R).indicator (fun (x : Omega) => 1) omega).rpow (s / ↑d)

The printed spelling of the good part. The manuscript writes the indicator INSIDE the d/s-th power, (⨍_z (max_e J)^{d/s} 1_{𝒬(l,l-h,z)})^{s/d}; the statements above truncate the leg first. No sign hypothesis on the leg is needed.

The l-sum #

Breakdown.breakdownLegSum carries ONE leg for all scales, which is what the printed left-hand side needs (a_m and σ_m do not move). The right-hand sides of the good-event aggregation are genuinely scale-indexed --- a_{l-h}, σ_{l-h} and 3^{4l-2γl}‖k_m-k_{l-h}‖² all move with l --- so the sum below is taken over a per-scale of legs. On a constant family the two agree by rfl.

The printed weighted grid sum Σ_{l ≤ m} 3^{-s(m-l)} (⨍_z leg_l(z+□_l)^{d/s})^{s/d} of a per-scale leg family, reindexed by the depth j = m - l ∈ ℕ.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    A weighted grid sum of a nonnegative leg family is nonnegative.

    theorem Algsuperdiff.Section3.Provider.Localization.summable_gridScaleSeries_terms {d : ℕ} [NeZero d] (m : ℤ) {s : ℝ} (hs : 0 < s) {leg : ℕ → HCPolySupport.TriadicCube d → ℝ} {D : ℝ} (hD : 0 ≤ D) (hleg0 : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ leg j R) (hlegle : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), leg j R ≤ D) :
    Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (leg j)

    The named producer of the Summable caller obligations below. A uniform descendant bound D on the whole leg family makes the weighted grid series summable, by domination against the bare geometric series.

    This is the per-scale-family analogue of the proved Breakdown.summable_breakdownLegSum_terms, and it carries the same [NeZero d] binder, which the consumers themselves do not.

    theorem Algsuperdiff.Section3.Provider.Localization.gridScaleSeries_le_three_term {d : ℕ} (m : ℤ) {s : ℝ} (hs : 0 < s) (hs1 : s ≤ 1) (hd : d ≠ 0) {good deep wave : ℕ → HCPolySupport.TriadicCube d → ℝ} {rem : ℕ → ℝ} {c b : ℝ} (hc : 0 ≤ c) (hb : 0 ≤ b) (hrem : ∀ (j : ℕ), 0 ≤ rem j) (hgood : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ good j R) (hdeep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ deep j R) (hwave : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ wave j R) (hstep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), good j R ≤ c * deep j R + b * wave j R + rem j) (hsumGood : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (good j)) (hsumDeep : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (deep j)) (hsumWave : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (wave j)) (hsumRem : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * rem j) :
    gridScaleSeries m s good ≤ c * gridScaleSeries m s deep + b * gridScaleSeries m s wave + ∑' (j : ℕ), Real.rpow 3 (-s * ↑j) * rem j

    The three-term reinjection of the whole l-sum. The per-scale estimate of legScaleAverage_le_three_term, summed against the printed weights 3^{-s(m-l)}.

    A: the four Summable binders are caller obligations (a divergent tsum is 0 in Lean); the producer of the first three is summable_gridScaleSeries_terms.

    The composed good-event aggregation #

    The remainder lane is routed into the proved remainder collapse at the sibling's own switchRemainder carrier, so that the cross-file seam (AggregationRemainder.switchRemainder_eq_of_int_gap) is the ONLY place where the σ-switch remainder is reshaped.

    theorem Algsuperdiff.Section3.Provider.Localization.geometricDiscount_mul_gridScaleSeries_le {d : ℕ} (m : ℤ) {s gam Eval : ℝ} {h : ℕ} {c b Crem : ℝ} (hgam : 0 < gam) (hsgam : 8 * gam ≤ s) (hs1 : s ≤ 1) (hgh : gam * ↑h ≤ 1) (hd : d ≠ 0) (hc : 0 ≤ c) (hb : 0 ≤ b) (hCrem : 0 ≤ Crem) {good deep wave : ℕ → HCPolySupport.TriadicCube d → ℝ} (hgood : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ good j R) (hdeep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ deep j R) (hwave : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ wave j R) (hstep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), good j R ≤ c * deep j R + b * wave j R + Crem * switchRemainder gam Eval h j) (hsumGood : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (good j)) (hsumDeep : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (deep j)) (hsumWave : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (wave j)) :

    The good-event aggregation at the printed weights. With the per-(l,z) reinjection estimate available at every depth, at a per-cube remainder dominated by C_rem · the corrected σ-switch remainder, the whole printed left-hand side collapses to

    c · (c_{2s} Σ_l 3^{-s(m-l)} (⨍_z deep^{d/s})^{s/d})
      + b · (c_{2s} Σ_l 3^{-s(m-l)} (⨍_z wave^{d/s})^{s/d})
      + 1024 C_rem γ² (h² + s^{-2} + E⁴|log γ|⁴) .
    

    The last summand is the fifth term of e.localization.mathcalE.estimate; its 1024 is the proved absolute constant of AggregationRemainder.localization_remainder_series_le_of_termwise, and the caller's own C_rem passes through multiplicatively.

    A: the three Summable binders, as above. The remainder lane's summability is discharged internally.

    theorem Algsuperdiff.Section3.Provider.Localization.geometricDiscount_mul_gridScaleSeries_good_le {d : ℕ} {Omega : Type u_1} (m : ℤ) {s gam Eval : ℝ} {h : ℕ} {c b Crem : ℝ} (hgam : 0 < gam) (hsgam : 8 * gam ≤ s) (hs1 : s ≤ 1) (hgh : gam * ↑h ≤ 1) (hd : d ≠ 0) (hc : 0 ≤ c) (hb : 0 ≤ b) (hCrem : 0 ≤ Crem) {leg deep wave : ℕ → HCPolySupport.TriadicCube d → ℝ} (B : ℕ → HCPolySupport.TriadicCube d → Set Omega) (omega : Omega) (hleg : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ leg j R) (hdeep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ deep j R) (hwave : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), 0 ≤ wave j R) (hstep : ∀ (j : ℕ), ∀ R ∈ HCPolySupport.descendantsAtScale (HCPolySupport.originCube d m) (m - ↑j), omega ∈ B j R → leg j R ≤ c * deep j R + b * wave j R + Crem * switchRemainder gam Eval h j) (hsumGood : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s fun (R : HCPolySupport.TriadicCube d) => leg j R * (B j R).indicator (fun (x : Omega) => 1) omega) (hsumDeep : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (deep j)) (hsumWave : Summable fun (j : ℕ) => Real.rpow 3 (-s * ↑j) * legScaleAverage (HCPolySupport.originCube d m) (m - ↑j) s (wave j)) :
    (HCPolySupport.Book.Ch02.geometricDiscount s 2 * gridScaleSeries m s fun (j : ℕ) (R : HCPolySupport.TriadicCube d) => leg j R * (B j R).indicator (fun (x : Omega) => 1) omega) ≤ c * (HCPolySupport.Book.Ch02.geometricDiscount s 2 * gridScaleSeries m s deep) + b * (HCPolySupport.Book.Ch02.geometricDiscount s 2 * gridScaleSeries m s wave) + 1024 * Crem * gam ^ 2 * (↑h ^ 2 + (s ^ 2)⁻¹ + Eval ^ 4 * |Real.log gam| ^ 4)

    The consumer entry point of the good lane. The composed aggregation with the manuscript's indicator in place: the per-(l,z) estimate is assumed only ON the good event 𝒬(l,l-h,z), and the left-hand side is the printed good part.

    Together with legScaleAverage_indicator_eq (which puts the indicator back inside the d/s-th power) this is the printed display at the abstract legs; the assembly supplies the legs, the constants c, b, C_rem and the per-(l,z) estimate.