Documentation

TauCeti.Analysis.Normed.Module.TensorProduct.InjectiveSeminorm

The injective seminorm on a binary tensor product #

A tensor u : E βŠ—[π•œ] F defines a bounded operator StrongDual π•œ E β†’L[π•œ] F, sending f to βˆ‘ i, f (x i) β€’ y i for any decomposition u = βˆ‘ i, x i βŠ—β‚œ y i. The injective seminorm of u is the operator norm of this map. Over ℝ and β„‚ it is the supremum of β€–βˆ‘ i, f (x i) * g (y i)β€– over continuous linear functionals f on E and g on F of norm at most one, which is the classical definition of the injective norm.

This file proves that the injective seminorm is bounded by the projective seminorm. Over ℝ and β„‚, both agree with β€–xβ€– * β€–yβ€– on a pure tensor x βŠ—β‚œ y and are norms when E and F are normed spaces. Definiteness follows, via Hahn–Banach, from the injectivity of the map from tensors to operators on the dual.

The type TauCeti.InjectiveTensor π•œ E F is a copy of E βŠ—[π•œ] F carrying the injective seminorm, and the identity of the underlying tensors is a contraction from TauCeti.ProjectiveTensor π•œ E F to it.

Mathlib's PiTensorProduct.injectiveSeminorm is a different seminorm on finite families of factors, defined by duality against all normed target spaces rather than against the scalar field; it is not the classical injective norm used here.

Main definitions #

Main results #

References #

noncomputable def TensorProduct.contractStrongDual (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
TensorProduct π•œ E F β†’β‚—[π•œ] StrongDual π•œ E β†’L[π•œ] F

The bounded operator StrongDual π•œ E β†’L[π•œ] F induced by a tensor in E βŠ—[π•œ] F: the pure tensor x βŠ—β‚œ y gives f ↦ f x β€’ y.

Instances For
    @[simp]
    theorem TensorProduct.contractStrongDual_tmul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (x : E) (y : F) (f : StrongDual π•œ E) :
    ((contractStrongDual π•œ E F) (x βŠ—β‚œ[π•œ] y)) f = f x β€’ y

    The operator induced by x βŠ—β‚œ y sends f to f x β€’ y.

    theorem TensorProduct.contractStrongDual_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) (f : StrongDual π•œ E) :
    ((contractStrongDual π•œ E F) u) f = (TensorProduct.lid π•œ F) ((LinearMap.rTensor F ↑f) u)

    The operator induced by a tensor sends f to the image of the tensor under f βŠ— id, followed by π•œ βŠ—[π•œ] F ≃ F.

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

    The injective seminorm on E βŠ—[π•œ] F: the operator norm of the operator on the dual of E induced by a tensor. Over ℝ and β„‚ it is the supremum of β€–βˆ‘ i, f (x i) * g (y i)β€– over continuous linear functionals f and g of norm at most one, for any decomposition u = βˆ‘ i, x i βŠ—β‚œ y i; see injectiveSeminorm_le_iff_forall_norm_le_one.

    Instances For
      theorem TensorProduct.injectiveSeminorm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) :
      (injectiveSeminorm π•œ E F) u = β€–(contractStrongDual π•œ E F) uβ€–

      The injective seminorm is the operator norm of the induced operator on the dual.

      theorem TensorProduct.norm_contractStrongDual_apply_le {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) (f : StrongDual π•œ E) :

      The operator induced by a tensor is bounded by its injective seminorm.

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

      The linear map induced on algebraic tensors by the bilinear map (x, y) ↦ f x β€’ g y sends a tensor u to g applied to the operator induced by u on the dual of E, evaluated at f.

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

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

      The injective seminorm is bounded by the projective seminorm.

      theorem TensorProduct.contractStrongDual_id {π•œ : Type u_1} {E : Type u_2} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] (u : TensorProduct π•œ π•œ E) :
      ((contractStrongDual π•œ π•œ E) u) (ContinuousLinearMap.id π•œ π•œ) = (TensorProduct.lid π•œ E) u

      Evaluating the operator induced by u : π•œ βŠ—[π•œ] E at the identity functional of π•œ gives the image of u under a βŠ—β‚œ x ↦ a β€’ x.

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

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

      theorem TensorProduct.apply_contractStrongDual_comm {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : TensorProduct π•œ E F) (f : StrongDual π•œ E) (g : StrongDual π•œ F) :
      f (((contractStrongDual π•œ F E) ((TensorProduct.comm π•œ E F) u)) g) = g (((contractStrongDual π•œ E F) u) f)

      The operators induced by u and by its swap TensorProduct.comm π•œ E F u pair the same way with functionals on both factors: both values are βˆ‘ i, f (x i) * g (y i) for any decomposition u = βˆ‘ i, x i βŠ—β‚œ y i.

      theorem TensorProduct.injectiveSeminorm_le_iff_forall_norm_le_one {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u : TensorProduct π•œ E F} {C : ℝ} (hC : 0 ≀ C) :
      (injectiveSeminorm π•œ E F) u ≀ C ↔ βˆ€ (f : StrongDual π•œ E) (g : StrongDual π•œ F), β€–fβ€– ≀ 1 β†’ β€–gβ€– ≀ 1 β†’ β€–g (((contractStrongDual π•œ E F) u) f)β€– ≀ C

      Over ℝ and β„‚, the injective seminorm is the supremum of β€–g (contractStrongDual π•œ E F u f)β€– = β€–βˆ‘ i, f (x i) * g (y i)β€– over the closed unit balls of the duals of E and F.

      theorem TensorProduct.injectiveSeminorm_le_iff_forall_norm_contractStrongDual_le {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u : TensorProduct π•œ E F} {C : ℝ} (hC : 0 ≀ C) :
      (injectiveSeminorm π•œ E F) u ≀ C ↔ βˆ€ (f : StrongDual π•œ E), β€–fβ€– ≀ 1 β†’ β€–((contractStrongDual π•œ E F) u) fβ€– ≀ C

      The injective seminorm is at most C iff the operator induced on the dual of the left factor maps the closed unit ball into the closed ball of radius C.

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

      The injective seminorm is a cross norm: its value on x βŠ—β‚œ y is β€–xβ€– * β€–yβ€–.

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

      The projective seminorm is a cross norm: its value on x βŠ—β‚œ y is β€–xβ€– * β€–yβ€–.

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

      Over ℝ and β„‚, the injective seminorm is symmetric: swapping the factors preserves it.

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

      Over ℝ and β„‚, on E βŠ—[π•œ] π•œ the injective seminorm is the norm of the image under x βŠ—β‚œ a ↦ a β€’ x.

      theorem TensorProduct.contractStrongDual_injective {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :

      Over ℝ and β„‚, a tensor whose left factor is a normed space is determined by the operator it induces on the dual of that factor.

      @[simp]
      theorem TensorProduct.injectiveSeminorm_eq_zero_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {u : TensorProduct π•œ E F} :
      (injectiveSeminorm π•œ E F) u = 0 ↔ u = 0

      Over ℝ and β„‚, the injective seminorm on a tensor product of normed spaces is definite.

      @[simp]
      theorem TensorProduct.projectiveSeminorm_eq_zero_iff {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] {u : TensorProduct π•œ E F} :
      (projectiveSeminorm π•œ E F) u = 0 ↔ u = 0

      Over ℝ and β„‚, the projective seminorm on a tensor product of normed spaces is definite.

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

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

      This wrapper distinguishes the injective seminorm from other norms on the same algebraic tensor product, such as the projective 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.InjectiveTensor.equiv (π•œ : Type u_1) (E : Type u_2) (F : Type u_3) [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
        InjectiveTensor π•œ E F ≃ TensorProduct π•œ E F

        Forget the injective seminorm.

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

          Forget the injective seminorm and retain the additive structure.

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

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

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

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

              @[simp]
              theorem TauCeti.InjectiveTensor.equiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.addEquiv_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : InjectiveTensor π•œ E F) :
              (addEquiv π•œ E F) u = u.toTensorProduct

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

              @[simp]
              theorem TauCeti.InjectiveTensor.addEquiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.linearEquiv_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (u : InjectiveTensor π•œ E F) :
              (linearEquiv π•œ E F) u = u.toTensorProduct

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

              @[simp]
              theorem TauCeti.InjectiveTensor.linearEquiv_symm_apply {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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]

              The underlying tensor of 0 is 0.

              @[simp]

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

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

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

              @[simp]

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

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

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

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

              Wrapping 0 gives 0.

              @[simp]
              theorem TauCeti.InjectiveTensor.mk_add {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.mk_neg {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.mk_sub {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.mk_smul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [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.InjectiveTensor.ext {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {u v : InjectiveTensor π•œ E F} (h : u.toTensorProduct = v.toTensorProduct) :
              u = v

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

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

              The norm of an injective tensor is the injective seminorm of its underlying tensor.

              @[instance_reducible]
              noncomputable instance TauCeti.InjectiveTensor.instNormedSpace {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] :
              NormedSpace π•œ (InjectiveTensor π•œ E F)
              theorem TauCeti.InjectiveTensor.continuousLinearMap_ext {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] {M : Type u_4} [AddCommGroup M] [Module π•œ M] [TopologicalSpace M] {l l' : InjectiveTensor π•œ 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 injective tensor product agree when they agree on pure tensors.

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

              The identity of the underlying tensors, from the projective to the injective tensor product. It is a contraction because the injective seminorm is bounded by the projective seminorm.

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

                The contraction to the injective tensor product keeps the underlying tensor.

                The identity from the projective to the injective tensor product is a contraction.

                @[instance_reducible]
                noncomputable instance TauCeti.instNormedAddCommGroupProjectiveTensor {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
                @[instance_reducible]
                noncomputable instance TauCeti.instNormedAddCommGroupInjectiveTensor {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F] [NormedSpace π•œ F] :
                @[simp]
                theorem TauCeti.ProjectiveTensor.norm_mk_tmul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (x : E) (y : F) :
                β€–{ toTensorProduct := x βŠ—β‚œ[π•œ] y }β€– = β€–xβ€– * β€–yβ€–

                Over ℝ and β„‚, the norm of a pure projective tensor is the product of the norms.

                @[simp]
                theorem TauCeti.InjectiveTensor.norm_mk_tmul {π•œ : Type u_1} {E : Type u_2} {F : Type u_3} [RCLike π•œ] [SeminormedAddCommGroup E] [NormedSpace π•œ E] [SeminormedAddCommGroup F] [NormedSpace π•œ F] (x : E) (y : F) :
                β€–{ toTensorProduct := x βŠ—β‚œ[π•œ] y }β€– = β€–xβ€– * β€–yβ€–

                Over ℝ and β„‚, the norm of a pure injective tensor is the product of the norms.