Documentation

TauCeti.Analysis.Normed.Module.TensorProduct.ProjectiveSeminorm

The projective seminorm on a binary tensor product #

For seminormed spaces E and F over a normed field π•œ, the projective seminorm of u : E βŠ—[π•œ] F is the infimum of βˆ‘ i, β€–x iβ€– * β€–y iβ€– over all finite decompositions u = βˆ‘ i, x i βŠ—β‚œ y i. It is the largest seminorm on E βŠ—[π•œ] F that is bounded on pure tensors by the product of the norms of the factors. Over a nontrivially normed field, every bounded bilinear map out of E Γ— F induces a linear map on E βŠ—[π•œ] F bounded by its operator norm for this seminorm. On TauCeti.ProjectiveTensor π•œ E F this gives the norm-preserving universal property on algebraic tensors: bounded bilinear maps E β†’L[π•œ] F β†’L[π•œ] G correspond isometrically to bounded operators ProjectiveTensor π•œ E F β†’L[π•œ] G.

Mathlib's binary tensor product carries no norm of its own for general normed spaces, while for inner product spaces it carries the Hilbert-space norm. The type TauCeti.ProjectiveTensor π•œ E F is therefore a separate copy of E βŠ—[π•œ] F carrying the projective seminorm; its completion is the completed projective tensor product. That the projective seminorm is a norm over ℝ and β„‚ is proved with the injective seminorm in TauCeti.Analysis.Normed.Module.TensorProduct.InjectiveSeminorm.

The finite-family analogue is Mathlib's PiTensorProduct.projectiveSeminorm, whose arguments this file adapts to two factors indexed by Fin n decompositions. The construction of TauCeti.ProjectiveTensor.liftIsometry follows Mathlib's PiTensorProduct.liftIsometry.

Main definitions #

Main results #

References #

noncomputable def TensorProduct.projectiveSeminorm (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
Seminorm π•œ (TensorProduct π•œ E F)

The projective seminorm on E βŠ—[π•œ] F: the infimum of βˆ‘ i, β€–x iβ€– * β€–y iβ€– over all finite decompositions u = βˆ‘ i, x i βŠ—β‚œ y i.

Instances For
    theorem TensorProduct.projectiveSeminorm_sum_tmul_le {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {ΞΉ : Type u_4} (s : Finset ΞΉ) (x : ΞΉ β†’ E) (y : ΞΉ β†’ F) :
    (projectiveSeminorm π•œ E F) (βˆ‘ i ∈ s, x i βŠ—β‚œ[π•œ] y i) ≀ βˆ‘ i ∈ s, β€–x iβ€– * β€–y iβ€–

    The projective seminorm of a finite sum of pure tensors is at most its cost.

    theorem TensorProduct.exists_sum_tmul_eq_of_projectiveSeminorm_lt {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u : TensorProduct π•œ E F} {c : ℝ} (h : (projectiveSeminorm π•œ E F) u < c) :
    βˆƒ (n : β„•) (x : Fin n β†’ E) (y : Fin n β†’ F), βˆ‘ i : Fin n, x i βŠ—β‚œ[π•œ] y i = u ∧ βˆ‘ i : Fin n, β€–x iβ€– * β€–y iβ€– < c

    A strict upper bound on the projective seminorm is beaten by the cost of some finite decomposition.

    theorem TensorProduct.projectiveSeminorm_tmul_le {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (x : E) (y : F) :

    The projective seminorm of a pure tensor is at most the product of the norms.

    theorem TensorProduct.apply_le_mul_projectiveSeminorm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {G : Type u_4} [AddCommGroup G] [Module π•œ G] {p : Seminorm π•œ G} {f : TensorProduct π•œ E F β†’β‚—[π•œ] G} {C : ℝ} (hC : 0 ≀ C) (h : βˆ€ (x : E) (y : F), p (f (x βŠ—β‚œ[π•œ] y)) ≀ C * (β€–xβ€– * β€–yβ€–)) (u : TensorProduct π•œ E F) :
    p (f u) ≀ C * (projectiveSeminorm π•œ E F) u

    A seminorm bounded on the images of pure tensors by C * (β€–xβ€– * β€–yβ€–) is bounded on the image of every tensor by C times the projective seminorm.

    theorem TensorProduct.le_projectiveSeminorm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {p : Seminorm π•œ (TensorProduct π•œ E F)} (h : βˆ€ (x : E) (y : F), p (x βŠ—β‚œ[π•œ] y) ≀ β€–xβ€– * β€–yβ€–) :

    The projective seminorm is the largest seminorm on E βŠ—[π•œ] F bounded on pure tensors by the product of the norms.

    @[simp]
    theorem TensorProduct.projectiveSeminorm_comm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
    (projectiveSeminorm π•œ F E) ((TensorProduct.comm π•œ E F) u) = (projectiveSeminorm π•œ E F) u

    The projective seminorm is symmetric: swapping the factors preserves it.

    theorem TensorProduct.projectiveSeminorm_eq_norm_lid {π•œ : Type u_1} {E : Type u_2} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] (u : TensorProduct π•œ π•œ E) :
    (projectiveSeminorm π•œ π•œ E) u = β€–(TensorProduct.lid π•œ E) uβ€–

    On π•œ βŠ—[π•œ] E, the projective seminorm is the norm of the image under a βŠ—β‚œ x ↦ a β€’ x.

    theorem TensorProduct.projectiveSeminorm_eq_norm_rid {π•œ : Type u_1} {E : Type u_2} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] (u : TensorProduct π•œ E π•œ) :
    (projectiveSeminorm π•œ E π•œ) u = β€–(TensorProduct.rid π•œ E) uβ€–

    On E βŠ—[π•œ] π•œ, the projective seminorm is the norm of the image under x βŠ—β‚œ a ↦ a β€’ x.

    theorem TensorProduct.norm_lift_le_projectiveSeminorm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] [SeminormedAddCommGroup G] [NormedSpace π•œ G] (B : E β†’L[π•œ] F β†’L[π•œ] G) (u : TensorProduct π•œ E F) :

    The linear map on E βŠ—[π•œ] F induced by a bounded bilinear map B is bounded by β€–Bβ€– times the projective seminorm.

    structure TauCeti.ProjectiveTensor (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
    Type (max u_2 u_3)

    The algebraic tensor product E βŠ—[π•œ] F carrying the projective seminorm.

    This wrapper distinguishes the projective seminorm from other norms on the same algebraic tensor product, such as the injective norm or the Hilbert-space norm of inner product spaces.

    • toTensorProduct : TensorProduct π•œ E F

      The underlying element of the algebraic tensor product.

    Instances For
      def TauCeti.ProjectiveTensor.equiv (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
      ProjectiveTensor π•œ E F ≃ TensorProduct π•œ E F

      Forget the projective seminorm.

      Instances For
        @[instance_reducible]
        instance TauCeti.ProjectiveTensor.instAddCommGroup (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
        def TauCeti.ProjectiveTensor.addEquiv (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
        ProjectiveTensor π•œ E F ≃+ TensorProduct π•œ E F

        Forget the projective seminorm and retain the additive structure.

        Instances For
          @[instance_reducible]
          instance TauCeti.ProjectiveTensor.instModule (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
          Module π•œ (ProjectiveTensor π•œ E F)
          def TauCeti.ProjectiveTensor.linearEquiv (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
          ProjectiveTensor π•œ E F ≃ₗ[π•œ] TensorProduct π•œ E F

          The projective tensor product is linearly equivalent to the algebraic tensor product.

          Instances For
            @[simp]
            theorem TauCeti.ProjectiveTensor.equiv_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : ProjectiveTensor π•œ E F) :
            (equiv π•œ E F) u = u.toTensorProduct

            The equivalence with E βŠ—[π•œ] F forgets the wrapper.

            @[simp]
            theorem TauCeti.ProjectiveTensor.equiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
            (equiv π•œ E F).symm u = { toTensorProduct := u }

            The inverse equivalence wraps an algebraic tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.addEquiv_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : ProjectiveTensor π•œ E F) :
            (addEquiv π•œ E F) u = u.toTensorProduct

            The additive equivalence with E βŠ—[π•œ] F forgets the wrapper.

            @[simp]
            theorem TauCeti.ProjectiveTensor.addEquiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
            (addEquiv π•œ E F).symm u = { toTensorProduct := u }

            The inverse additive equivalence wraps an algebraic tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.linearEquiv_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : ProjectiveTensor π•œ E F) :
            (linearEquiv π•œ E F) u = u.toTensorProduct

            The linear equivalence with E βŠ—[π•œ] F forgets the wrapper.

            @[simp]
            theorem TauCeti.ProjectiveTensor.linearEquiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
            (linearEquiv π•œ E F).symm u = { toTensorProduct := u }

            The inverse linear equivalence wraps an algebraic tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.toTensorProduct_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :

            The underlying tensor of 0 is 0.

            @[simp]
            theorem TauCeti.ProjectiveTensor.toTensorProduct_add {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u v : ProjectiveTensor π•œ E F) :

            The underlying tensor of a sum is the sum of the underlying tensors.

            @[simp]
            theorem TauCeti.ProjectiveTensor.toTensorProduct_neg {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : ProjectiveTensor π•œ E F) :

            The underlying tensor of a negation is the negated underlying tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.toTensorProduct_sub {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u v : ProjectiveTensor π•œ E F) :

            The underlying tensor of a difference is the difference of the underlying tensors.

            @[simp]
            theorem TauCeti.ProjectiveTensor.toTensorProduct_smul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (a : π•œ) (u : ProjectiveTensor π•œ E F) :

            The underlying tensor of a scalar multiple is the scalar multiple of the underlying tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.mk_zero {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
            { toTensorProduct := 0 } = 0

            Wrapping 0 gives 0.

            @[simp]
            theorem TauCeti.ProjectiveTensor.mk_add {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u v : TensorProduct π•œ E F) :
            { toTensorProduct := u + v } = { toTensorProduct := u } + { toTensorProduct := v }

            Wrapping a sum gives the sum of the wrapped tensors.

            @[simp]
            theorem TauCeti.ProjectiveTensor.mk_neg {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
            { toTensorProduct := -u } = -{ toTensorProduct := u }

            Wrapping a negation gives the negation of the wrapped tensor.

            @[simp]
            theorem TauCeti.ProjectiveTensor.mk_sub {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u v : TensorProduct π•œ E F) :
            { toTensorProduct := u - v } = { toTensorProduct := u } - { toTensorProduct := v }

            Wrapping a difference gives the difference of the wrapped tensors.

            @[simp]
            theorem TauCeti.ProjectiveTensor.mk_smul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (a : π•œ) (u : TensorProduct π•œ E F) :
            { toTensorProduct := a β€’ u } = a β€’ { toTensorProduct := u }

            Wrapping a scalar multiple gives the scalar multiple of the wrapped tensor.

            theorem TauCeti.ProjectiveTensor.ext {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u v : ProjectiveTensor π•œ E F} (h : u.toTensorProduct = v.toTensorProduct) :
            u = v

            Two projective tensors are equal when their underlying algebraic tensors are equal.

            theorem TauCeti.ProjectiveTensor.ext_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u v : ProjectiveTensor π•œ E F} :
            @[instance_reducible]
            noncomputable instance TauCeti.ProjectiveTensor.instSeminormedAddCommGroup {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
            theorem TauCeti.ProjectiveTensor.norm_def {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : ProjectiveTensor π•œ E F) :

            The norm of a projective tensor is the projective seminorm of its underlying tensor.

            @[instance_reducible]
            noncomputable instance TauCeti.ProjectiveTensor.instNormedSpace {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
            NormedSpace π•œ (ProjectiveTensor π•œ E F)
            theorem TauCeti.ProjectiveTensor.continuousLinearMap_ext {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {M : Type u_4} [AddCommGroup M] [Module π•œ M] [TopologicalSpace M] {l l' : ProjectiveTensor π•œ E F β†’L[π•œ] M} (h : βˆ€ (x : E) (y : F), l { toTensorProduct := x βŠ—β‚œ[π•œ] y } = l' { toTensorProduct := x βŠ—β‚œ[π•œ] y }) :
            l = l'

            Two bounded operators out of the projective tensor product agree when they agree on pure tensors.

            theorem TauCeti.ProjectiveTensor.continuousLinearMap_ext_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {M : Type u_4} [AddCommGroup M] [Module π•œ M] [TopologicalSpace M] {l l' : ProjectiveTensor π•œ E F β†’L[π•œ] M} :
            l = l' ↔ βˆ€ (x : E) (y : F), l { toTensorProduct := x βŠ—β‚œ[π•œ] y } = l' { toTensorProduct := x βŠ—β‚œ[π•œ] y }
            noncomputable def TauCeti.ProjectiveTensor.tmulL (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
            E β†’L[π•œ] F β†’L[π•œ] ProjectiveTensor π•œ E F

            The canonical bounded bilinear map (x, y) ↦ x βŠ—β‚œ y into the projective tensor product.

            Instances For
              @[simp]
              theorem TauCeti.ProjectiveTensor.tmulL_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (x : E) (y : F) :
              ((tmulL π•œ E F) x) y = { toTensorProduct := x βŠ—β‚œ[π•œ] y }

              The canonical bilinear map sends (x, y) to the pure tensor x βŠ—β‚œ y.

              theorem TauCeti.ProjectiveTensor.norm_tmulL_le {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
              β€–tmulL π•œ E Fβ€– ≀ 1

              The canonical bilinear map into the projective tensor product has norm at most one.

              noncomputable def TauCeti.ProjectiveTensor.liftIsometry (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) (G : Type u_4) [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] [SeminormedAddCommGroup G] [NormedSpace π•œ G] :
              (E β†’L[π•œ] F β†’L[π•œ] G) ≃ₗᡒ[π•œ] ProjectiveTensor π•œ E F β†’L[π•œ] G

              The universal property of the projective tensor product: bounded bilinear maps E β†’L[π•œ] F β†’L[π•œ] G correspond isometrically to bounded operators on ProjectiveTensor π•œ E F. The operator induced by B sends x βŠ—β‚œ y to B x y.

              Instances For
                theorem TauCeti.ProjectiveTensor.liftIsometry_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] [SeminormedAddCommGroup G] [NormedSpace π•œ G] (B : E β†’L[π•œ] F β†’L[π•œ] G) (u : ProjectiveTensor π•œ E F) :

                The operator induced by a bounded bilinear map acts on the underlying tensor by TensorProduct.lift.

                @[simp]
                theorem TauCeti.ProjectiveTensor.liftIsometry_apply_tmul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] [SeminormedAddCommGroup G] [NormedSpace π•œ G] (B : E β†’L[π•œ] F β†’L[π•œ] G) (x : E) (y : F) :
                ((liftIsometry π•œ E F G) B) { toTensorProduct := x βŠ—β‚œ[π•œ] y } = (B x) y

                The operator induced by a bounded bilinear map B sends x βŠ—β‚œ y to B x y.

                @[simp]
                theorem TauCeti.ProjectiveTensor.liftIsometry_symm_apply_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] [SeminormedAddCommGroup G] [NormedSpace π•œ G] (l : ProjectiveTensor π•œ E F β†’L[π•œ] G) (x : E) (y : F) :
                (((liftIsometry π•œ E F G).symm l) x) y = l { toTensorProduct := x βŠ—β‚œ[π•œ] y }

                The bilinear map corresponding to an operator l on the projective tensor product is (x, y) ↦ l (x βŠ—β‚œ y).

                @[simp]
                theorem TauCeti.ProjectiveTensor.liftIsometry_tmulL {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
                (liftIsometry π•œ E F (ProjectiveTensor π•œ E F)) (tmulL π•œ E F) = ContinuousLinearMap.id π•œ (ProjectiveTensor π•œ E F)

                The canonical bilinear map induces the identity of the projective tensor product.