Documentation

LeanPool.Superdiffusion.Algsuperdiff.Section3.Provider.Affine.KuhnInterpolation

KuhnInterpolation #

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

The Kuhn-cell affine interpolant #

This module provides a proved local carrier-level implementation for ABK26's l.piecewise.affine.approx: the operation "assign a value at each vertex, then extend affinely to the simplex" of the lemma's Step 1, together with the Step-2 gradient computation.

On a Kuhn cell T -- one triadic simplex of e.simplex.def, with the d + 1 vertices V(△) represented by KuhnCell.vertex -- the affine function agreeing with a datum g : Vec d → ℝ at those vertices is unique, and its gradient is the vector of Kuhn-edge difference quotients. This file defines that gradient (kuhnSlope) and that affine function (kuhnInterp) and proves the characterizing A:

What of the manuscript this file already carries #

Scope: what this file does NOT do #

This file is the cell-level carrier only. It does not construct the global ℓ̂_p of l.piecewise.affine.approx, does not mention bad cubes, components, neighborhoods, layers, or the collar, and asserts nothing about how cells of different scales meet. In particular:

References #

The linear function ℓ_p #

ABK26 ℓ_p: "we let ℓ_e(x) = e · x denote the linear function with slope e ∈ ℝ^d".

Equations
Instances For

    Elementary vecDot algebra #

    The Kuhn edge chain #

    The upper endpoint of the r-th edge of the Kuhn vertex chain of a cell: the vertex v_{d-r} of KuhnCell.vertex.

    Equations
    Instances For

      The lower endpoint of the r-th edge of the Kuhn vertex chain of a cell: the vertex v_{d-r-1} of KuhnCell.vertex.

      Equations
      Instances For

        The Kuhn edge chain. Consecutive vertices of a Kuhn cell differ in exactly one coordinate, by exactly one cube side: the r-th edge points along the coordinate direction T.order r. This is the geometric fact that makes the vertex list of KuhnCell.vertex a monotone lattice path from the lower to the upper corner of the support cube.

        The slope of the interpolant #

        The gradient of the affine interpolant on a Kuhn cell. Along the coordinate direction T.order r the cell has exactly one edge, from v_{d-r-1} to v_{d-r}, of length 3^{scale}; the gradient coordinate is the corresponding difference quotient. This is the "∇ℓ̂_e is constant on each coarse simplex" made explicit.

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

          The gradient formula, indexed in the ambient coordinate order.

          The gradient formula, indexed in the cell's own edge order.

          theorem Algsuperdiff.Section3.Provider.Affine.kuhnSlope_congr {d : ℕ} (T : Whitney.KuhnCell d) {g g' : HCPolySupport.Vec d → ℝ} (hvert : ∀ (k : Fin (d + 1)), g (T.vertex k) = g' (T.vertex k)) :

          The gradient depends on the vertex datum only through its d + 1 vertex values.

          e.hat.linear.linearity at the cell level: the interpolant's gradient is additive in the vertex datum.

          theorem Algsuperdiff.Section3.Provider.Affine.kuhnSlope_eq_zero_of_vertex_const {d : ℕ} (T : Whitney.KuhnCell d) {g : HCPolySupport.Vec d → ℝ} {c : ℝ} (hconst : ∀ (k : Fin (d + 1)), g (T.vertex k) = c) :
          kuhnSlope T g = 0

          Clause 1 of e.hat.linear.properties at the cell level, as the manuscript proves it: if every vertex of the cell receives the same value, the interpolant has vanishing gradient there.

          Clause 3 of e.hat.linear.properties ((clause 3; the cases-end line asserts nothing —, format)) at the cell level, as the manuscript proves it: the vertex datum ℓ_p has interpolant gradient exactly p.

          The interpolant #

          The affine interpolant of vertex data on a Kuhn cell, the object of Step 1 of the proof of l.piecewise.affine.approx: the affine function anchored at the cell's lower corner v_0 with gradient kuhnSlope T g. kuhnInterp_vertex shows it agrees with g at all d + 1 vertices, and eq_kuhnInterp_of_vertex_eq shows it is the only affine function that does; so this is the manuscript's "extend affinely" of the vertex datum g. It is defined, and affine, on all of Vec d; the manuscript uses its restriction to the cell.

          Equations
          Instances For

            e.hat.linear.2 at the cell level: kuhnInterp T g is affine, with constant gradient kuhnSlope T g.

            theorem Algsuperdiff.Section3.Provider.Affine.kuhnInterp_add {d : ℕ} (T : Whitney.KuhnCell d) (g g' : HCPolySupport.Vec d → ℝ) :
            (kuhnInterp T fun (x : HCPolySupport.Vec d) => g x + g' x) = fun (x : HCPolySupport.Vec d) => kuhnInterp T g x + kuhnInterp T g' x

            e.hat.linear.linearity at the cell level.

            Agreement at the vertices #

            The interpolant agrees with the vertex datum at every vertex. This is the defining property of Step 1's "extend affinely".

            Two cells interpolating the same global vertex datum agree at every point that is a vertex of both. No face-to-face property of the partition is used or asserted.

            The bundled affine map #

            kuhnInterp T g bundled as an affine map on Vec d, with linear part v ↦ (∇ℓ̂) · v. The bundling exists for exactly one purpose: it makes kuhnInterpAffine_eqOn_affineSpan_inter_vertexSet available, which is the well-definedness instrument for a global interpolant assembled cell by cell (the manuscript's "since adjacent coarse simplices share complete faces, this extension is well-defined and continuous"; the mesh-interior half ---). No face-to-face property is assumed anywhere: the statement is about the affine span of whatever vertices two cells happen to share.

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

              Two cells interpolating the same global vertex datum agree on the affine span of the vertices they share. Nothing here asserts that any two cells of SW(□_m) do share a face.

              Determination by the vertex values #

              The interpolant of the vertex datum ℓ_p is ℓ_p itself: clause 3 of e.hat.linear.properties ((clause 3; the cases-end line asserts nothing —, format)) at the cell level.

              theorem Algsuperdiff.Section3.Provider.Affine.kuhnInterp_congr {d : ℕ} (T : Whitney.KuhnCell d) {g g' : HCPolySupport.Vec d → ℝ} (hvert : ∀ (k : Fin (d + 1)), g (T.vertex k) = g' (T.vertex k)) :

              The interpolant depends on the vertex datum only through its d + 1 vertex values.

              The Set.EqOn interface of clauses 1 and 3 #

              These are the shapes that the global competitor of l.piecewise.affine.approx feeds to Multiscale.sum_of_a_decomp (SubadditiveDecomposition.lean), whose hbadF/hbadG carry clause 1 and whose hoffF/hoffG carry clause 3 as statements about the per-cell gradient value. Each is the corresponding vertex statement above, restated over V(△).

              Clause 1 of e.hat.linear.properties in the vertex-set form: a competitor whose vertex datum is constant on V(△) has zero gradient on the cell.

              Clause 3 of e.hat.linear.properties ((clause 3; the cases-end line asserts nothing —, format)) in the vertex-set form: a competitor whose vertex datum agrees with ℓ_p on V(△) has gradient exactly p on the cell.

              The function form of kuhnSlope_eq_of_eqOn_vertexSet: a competitor whose vertex datum agrees with ℓ_p on V(△) is ℓ_p on the cell.

              Step 2: the gradient estimate #

              Step 2 of the proof of l.piecewise.affine.approx, in the coordinate form. If the vertex values of ℓ̂ − ℓ_p oscillate by at most B over the vertices of the cell, then each coordinate of ∇ℓ̂ − p is at most B over the cube side 3^{scale}. This is the printed |∇ℓ̂_e − e|_{L^∞(𝔰)} ≤ (C / diam 𝔰) · max_{v,w ∈ V(𝔰)} |(ℓ̂_e − ℓ_e)(v) − (ℓ̂_e − ℓ_e)(w)| with C = 1 against the cube side.

              Step 2 of the proof of l.piecewise.affine.approx, in the Euclidean form used downstream: the squared Euclidean norm of ∇ℓ̂ − p on the cell is at most d · (B / 3^{scale})². Against the cube side 3^{scale} the constant is √d; the printed display normalizes by diam(𝔰) = √d·3^{scale}, so the printed C(d) is d, not √d.

              The form of Step 2 that the manuscript actually feeds: a pointwise vertex bound |ℓ̂ − ℓ_p| ≤ B at the vertices of the cell gives the gradient bound with the oscillation replaced by 2B.

              Step 2 in the vertex-set form: this is the shape a global competitor feeds, since the manuscript's Step-2 vertex bound |ℓ̂_e(v) − ℓ_e(v)| ≤ |e| diam(𝒞_j) 1_{v ∈ V(𝒞_j)} is a statement about the points of V(△).