Documentation

LeanPool.OSforGFF.GaussianField.Nuclear.NuclearTensorProduct

Nuclear Tensor Product via Köthe Sequence Spaces #

Defines RapidDecaySeq, the Köthe sequence space s(ℕ) of rapidly decreasing sequences, and proves it is a nuclear Fréchet space. Then defines NuclearTensorProduct E₁ E₂ as RapidDecaySeq (via Cantor pairing), providing a DyninMityaginSpace instance for tensor products of nuclear spaces.

Main definitions #

Mathematical background #

Every nuclear Fréchet space with a Schauder basis is isomorphic to a Köthe sequence space s(ℕ) with rapidly decreasing weights (Dynin-Mityagin). The tensor product s(ℕ) ⊗̂ s(ℕ) ≅ s(ℕ²) ≅ s(ℕ) via Cantor pairing.

References #

Rapidly Decreasing Sequences #

A rapidly decreasing sequence: val : ℕ → ℝ such that ∑ₘ |val m| · (1 + m)^k converges for all k : ℕ.

Instances For
    theorem GaussianField.RapidDecaySeq.ext {a b : RapidDecaySeq} (h : ∀ (m : ), a.val m = b.val m) :
    a = b
    theorem GaussianField.RapidDecaySeq.ext_iff {a b : RapidDecaySeq} :
    a = b ∀ (m : ), a.val m = b.val m

    Weight function lemmas #

    theorem GaussianField.RapidDecaySeq.weight_pos (m k : ) :
    0 < (1 + m) ^ k

    Algebraic structure #

    @[implicit_reducible]
    Equations
    @[simp]
    theorem GaussianField.RapidDecaySeq.add_val (a b : RapidDecaySeq) (m : ) :
    (a + b).val m = a.val m + b.val m
    @[implicit_reducible]
    Equations
    @[simp]
    @[implicit_reducible]
    Equations
    @[simp]
    theorem GaussianField.RapidDecaySeq.smul_val (r : ) (a : RapidDecaySeq) (m : ) :
    (r a).val m = r * a.val m
    @[implicit_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[implicit_reducible]
    Equations
    • One or more equations did not get rendered due to their size.

    Seminorm family #

    The k-th seminorm on rapid decay sequences: ∑ₘ |aₘ| · (1+m)^k.

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

      Topology from seminorms #

      Standard basis and coefficients #

      The m-th standard basis vector: 1 at position m, 0 elsewhere.

      Equations
      Instances For
        @[simp]

        Seminorm of a basis vector is exactly (1 + m)^k.

        The m-th coefficient linear map: extracts coordinate m.

        Equations
        Instances For

          The m-th coefficient as a continuous linear map.

          Continuity follows from |a.val m| ≤ rapidDecaySeminorm 0 a: the coordinate projection is bounded by the 0-th seminorm.

          Equations
          Instances For

            DyninMityaginSpace instance #

            RapidDecaySeq is T1: if a ≠ 0, the 0-th seminorm ∑ |a_m| > 0.

            @[implicit_reducible]
            Equations
            • One or more equations did not get rendered due to their size.

            Helper lemmas for seminorm transfer #

            Monotonicity of rapid-decay seminorms: for j ≤ j', seminorm j ≤ seminorm j'.

            The sup of rapid-decay seminorms over a finset is bounded by the seminorm at the max index.

            The sup of rapid-decay seminorms evaluated at a basis vector gives polynomial growth.

            Transfer constructor for DyninMityaginSpace #

            @[reducible]

            Transfer a DyninMityaginSpace structure from RapidDecaySeq to any space that is continuously linearly equivalent to it. Given seminorms p with WithSeminorms p and a CLE equiv : E ≃L[ℝ] RapidDecaySeq, constructs the DyninMityaginSpace instance using basis m := equiv.symm (basisVec m) and coeff m := coeffCLM m ∘ equiv. Countability of ι and completeness of E (transferred from RapidDecaySeq via the CLE) are propagated automatically.

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

              Cantor Pairing Bound #

              theorem GaussianField.nat_pair_bound (n m : ) :
              Nat.pair n m (n + m + 1) ^ 2

              The Cantor pairing function is bounded by a quadratic.

              Converse bound: each component of Nat.unpair is bounded by the pair index.

              Nuclear Tensor Product #

              def GaussianField.NuclearTensorProduct (_E₁ : Type u_1) (_E₂ : Type u_2) :

              The nuclear tensor product of two nuclear spaces, realized as the Köthe sequence space of rapidly decreasing sequences. The product basis indices ℕ × ℕ are encoded into via Nat.pair.

              Mathematically, if E₁ ≅ s(ℕ) and E₂ ≅ s(ℕ) as nuclear Fréchet spaces, then E₁ ⊗̂ E₂ ≅ s(ℕ × ℕ) ≅ s(ℕ) via the Cantor pairing.

              Equations
              Instances For
                theorem GaussianField.NuclearTensorProduct.ext {E₁ : Type u_1} {E₂ : Type u_2} {a b : NuclearTensorProduct E₁ E₂} (h : ∀ (m : ), a.val m = b.val m) :
                a = b
                theorem GaussianField.NuclearTensorProduct.ext_iff {E₁ : Type u_1} {E₂ : Type u_2} {a b : NuclearTensorProduct E₁ E₂} :
                a = b ∀ (m : ), a.val m = b.val m
                @[implicit_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                @[implicit_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                @[simp]
                theorem GaussianField.NuclearTensorProduct.add_val {E₁ : Type u_1} {E₂ : Type u_2} (a b : NuclearTensorProduct E₁ E₂) (m : ) :
                (a + b).val m = a.val m + b.val m
                @[simp]
                theorem GaussianField.NuclearTensorProduct.smul_val {E₁ : Type u_1} {E₂ : Type u_2} (r : ) (a : NuclearTensorProduct E₁ E₂) (m : ) :
                (r a).val m = r * a.val m
                @[implicit_reducible]
                Equations
                @[implicit_reducible]
                noncomputable instance GaussianField.NuclearTensorProduct.dyninMityaginSpace {E₁ : Type u_1} {E₂ : Type u_2} :

                The nuclear tensor product is a nuclear space.

                Equations

                Map from product basis indices to the Cantor-paired linear index.

                Equations
                Instances For

                  Recover product basis indices from a linear index.

                  Equations
                  Instances For

                    Pure tensor embedding #

                    ∑_n 1/(1+n)^2 converges, as a shifted version of ∑ 1/n^2.

                    noncomputable def GaussianField.NuclearTensorProduct.pure {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] (e₁ : E₁) (e₂ : E₂) :

                    The pure tensor map: given e₁ : E₁ and e₂ : E₂ with DM structure, produces the sequence m ↦ coeff(unpair(m).1, e₁) * coeff(unpair(m).2, e₂).

                    This is the bilinear embedding E₁ × E₂ → E₁ ⊗̂ E₂ realized at the level of Köthe sequence spaces.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem GaussianField.NuclearTensorProduct.pure_val {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] (e₁ : E₁) (e₂ : E₂) (m : ) :
                      theorem GaussianField.NuclearTensorProduct.pure_seminorm_bound {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] (k : ) :
                      ∃ (C : NNReal) (s₁ : Finset (DyninMityaginSpace.ι E₁)) (s₂ : Finset (DyninMityaginSpace.ι E₂)), ∀ (e₁ : E₁) (e₂ : E₂), (RapidDecaySeq.rapidDecaySeminorm k) (pure e₁ e₂) C * (s₁.sup DyninMityaginSpace.p) e₁ * (s₂.sup DyninMityaginSpace.p) e₂

                      Seminorm bound for the pure tensor: for each target seminorm index k, there exist constants C, source seminorm index sets s₁, s₂ such that rapidDecaySeminorm k (pure e₁ e₂) ≤ C * (s₁.sup p) e₁ * (s₂.sup p) e₂.

                      The pure tensor map as a bilinear map.

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

                        For fixed e₁, the map e₂ ↦ pure e₁ e₂ is a continuous linear map. Continuity follows from the seminorm bound via continuous_of_isBounded.

                        Equations
                        Instances For
                          theorem GaussianField.NuclearTensorProduct.pure_continuous_left {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] (e₂ : E₂) :
                          Continuous fun (e₁ : E₁) => pure e₁ e₂

                          For fixed e₂, the map e₁ ↦ pure e₁ e₂ is continuous.

                          The pure tensor map is jointly continuous on E₁ × E₂.

                          Universal Property: Lift #

                          noncomputable def GaussianField.NuclearTensorProduct.lift {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] [CompleteSpace G] (B : E₁ →ₗ[] E₂ →ₗ[] G) {C : } {s₁ : Finset (DyninMityaginSpace.ι E₁)} {s₂ : Finset (DyninMityaginSpace.ι E₂)} (hC : 0 < C) (hB : ∀ (e₁ : E₁) (e₂ : E₂), (B e₁) e₂ C * (s₁.sup DyninMityaginSpace.p) e₁ * (s₂.sup DyninMityaginSpace.p) e₂) :

                          Universal property of the nuclear tensor product.

                          Every continuous bilinear map B : E₁ × E₂ → G (into a complete normed space) factors through pure via a CLM lift B : NuclearTensorProduct E₁ E₂ →L[ℝ] G.

                          The definition is lift B a = ∑' m, aₘ • B(ψ₁ᵢ, ψ₂ⱼ) where (i,j) = unpair(m). Linearity follows from tsum linearity; continuity from a seminorm bound.

                          Equations
                          Instances For
                            theorem GaussianField.NuclearTensorProduct.lift_pure {E₁ : Type u_1} {E₂ : Type u_2} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₁] [DyninMityaginSpace E₂] {G : Type u_3} [NormedAddCommGroup G] [NormedSpace G] [CompleteSpace G] (B : E₁ →ₗ[] E₂ →ₗ[] G) {C : } {s₁ : Finset (DyninMityaginSpace.ι E₁)} {s₂ : Finset (DyninMityaginSpace.ι E₂)} (hC : 0 < C) (hB : ∀ (e₁ : E₁) (e₂ : E₂), (B e₁) e₂ C * (s₁.sup DyninMityaginSpace.p) e₁ * (s₂.sup DyninMityaginSpace.p) e₂) (e₁ : E₁) (e₂ : E₂) :
                            (lift B hC hB) (pure e₁ e₂) = (B e₁) e₂

                            The lift factors through pure: lift B (pure e₁ e₂) = B e₁ e₂.

                            The proof uses the double Schauder expansion: hasSum_basis gives convergent expansions e₁ = ∑ c₁_n • ψ₁_n and e₂ = ∑ c₂_j • ψ₂_j, then applies B (continuous from the bound) and rearranges via Cantor pairing.

                            Bilinear evaluation: tensor product of functionals #

                            Tensor product of continuous linear functionals.

                            Given φ₁ ∈ E₁' and φ₂ ∈ E₂', the tensor product functional φ₁ ⊗ φ₂ : E₁ ⊗̂ E₂ → ℝ is defined via the universal property lift applied to the bilinear form (e₁, e₂) ↦ φ₁(e₁) · φ₂(e₂).

                            On pure tensors: evalCLM φ₁ φ₂ (pure e₁ e₂) = φ₁ e₁ * φ₂ e₂.

                            The bilinear bound ‖φ₁(e₁) · φ₂(e₂)‖ ≤ C · p₁(e₁) · p₂(e₂) follows from Seminorm.bound_of_continuous applied to each functional.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem GaussianField.NuclearTensorProduct.evalCLM_pure {E₁ : Type u_3} [AddCommGroup E₁] [Module E₁] [TopologicalSpace E₁] [IsTopologicalAddGroup E₁] [ContinuousSMul E₁] [DyninMityaginSpace E₁] {E₂ : Type u_4} [AddCommGroup E₂] [Module E₂] [TopologicalSpace E₂] [IsTopologicalAddGroup E₂] [ContinuousSMul E₂] [DyninMityaginSpace E₂] (φ₁ : E₁ →L[] ) (φ₂ : E₂ →L[] ) (e₁ : E₁) (e₂ : E₂) :
                              (evalCLM φ₁ φ₂) (pure e₁ e₂) = φ₁ e₁ * φ₂ e₂

                              evalCLM on pure tensors gives the product of evaluations.

                              Under biorthogonality, basis vectors equal pure tensors of basis elements. basisVec m = pure (basis a) (basis b) where (a,b) = unpair(m).