Documentation

Mathlib.LinearAlgebra.DirectSum.Finsupp

Results on finitely supported functions. #

Case of MvPolynomial #

These functions apply to MvPolynomial, one can define

noncomputable def MvPolynomial.rTensor' :
    MvPolynomial σ S ⊗[R] N ≃ₗ[S] (σ →₀ ℕ) →₀ (S ⊗[R] N) :=
  TensorProduct.finsuppLeft'

noncomputable def MvPolynomial.rTensor :
    MvPolynomial σ R ⊗[R] N ≃ₗ[R] (σ →₀ ℕ) →₀ N :=
  TensorProduct.finsuppScalarLeft

However, to be actually usable, these definitions need lemmas to be given in companion PR.

Case of Polynomial #

Polynomial is a structure containing a Finsupp, so these functions can't be applied directly to Polynomial.

Some linear equivs need to be added to mathlib for that. This belongs to a companion PR.

TODO #

noncomputable def TensorProduct.finsuppLeft (R : Type u_1) [CommSemiring R] (M : Type u_2) [AddCommMonoid M] [Module R M] (N : Type u_3) [AddCommMonoid N] [Module R N] (ι : Type u_4) [DecidableEq ι] :

The tensor product of ι →₀ M and N is linearly equivalent to ι →₀ M ⊗[R] N

Equations
    Instances For
      theorem TensorProduct.finsuppLeft_apply_tmul {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (p : ι →₀ M) (n : N) :
      (finsuppLeft R M N ι) (p ⊗ₜ[R] n) = p.sum fun (i : ι) (m : M) => Finsupp.single i (m ⊗ₜ[R] n)
      @[simp]
      theorem TensorProduct.finsuppLeft_apply_tmul_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (p : ι →₀ M) (n : N) (i : ι) :
      ((finsuppLeft R M N ι) (p ⊗ₜ[R] n)) i = p i ⊗ₜ[R] n
      theorem TensorProduct.finsuppLeft_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (t : TensorProduct R (ι →₀ M) N) (i : ι) :
      ((finsuppLeft R M N ι) t) i = (LinearMap.rTensor N (Finsupp.lapply i)) t
      @[simp]
      theorem TensorProduct.finsuppLeft_symm_apply_single {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (i : ι) (m : M) (n : N) :
      noncomputable def TensorProduct.finsuppRight (R : Type u_1) [CommSemiring R] (M : Type u_2) [AddCommMonoid M] [Module R M] (N : Type u_3) [AddCommMonoid N] [Module R N] (ι : Type u_4) [DecidableEq ι] :

      The tensor product of M and ι →₀ N is linearly equivalent to ι →₀ M ⊗[R] N

      Equations
        Instances For
          theorem TensorProduct.finsuppRight_apply_tmul {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (m : M) (p : ι →₀ N) :
          (finsuppRight R M N ι) (m ⊗ₜ[R] p) = p.sum fun (i : ι) (n : N) => Finsupp.single i (m ⊗ₜ[R] n)
          @[simp]
          theorem TensorProduct.finsuppRight_apply_tmul_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (m : M) (p : ι →₀ N) (i : ι) :
          ((finsuppRight R M N ι) (m ⊗ₜ[R] p)) i = m ⊗ₜ[R] p i
          theorem TensorProduct.finsuppRight_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (t : TensorProduct R M (ι →₀ N)) (i : ι) :
          ((finsuppRight R M N ι) t) i = (LinearMap.lTensor M (Finsupp.lapply i)) t
          @[simp]
          theorem TensorProduct.finsuppRight_symm_apply_single {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (i : ι) (m : M) (n : N) :
          theorem TensorProduct.finsuppLeft_smul' {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] {S : Type u_5} [CommSemiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] (s : S) (t : TensorProduct R (ι →₀ M) N) :
          (finsuppLeft R M N ι) (s t) = s (finsuppLeft R M N ι) t
          noncomputable def TensorProduct.finsuppLeft' (R : Type u_1) [CommSemiring R] (M : Type u_2) [AddCommMonoid M] [Module R M] (N : Type u_3) [AddCommMonoid N] [Module R N] (ι : Type u_4) [DecidableEq ι] (S : Type u_5) [CommSemiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] :

          When M is also an S-module, then TensorProduct.finsuppLeft R M N`` is an S`-linear equiv

          Equations
            Instances For
              theorem TensorProduct.finsuppLeft'_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] {S : Type u_5} [CommSemiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] (x : TensorProduct R (ι →₀ M) N) :
              (finsuppLeft' R M N ι S) x = (finsuppLeft R M N ι) x
              noncomputable def TensorProduct.finsuppScalarLeft (R : Type u_1) [CommSemiring R] (N : Type u_3) [AddCommMonoid N] [Module R N] (ι : Type u_4) [DecidableEq ι] :

              The tensor product of ι →₀ R and N is linearly equivalent to ι →₀ N

              Equations
                Instances For
                  @[simp]
                  theorem TensorProduct.finsuppScalarLeft_apply_tmul_apply {R : Type u_1} [CommSemiring R] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (p : ι →₀ R) (n : N) (i : ι) :
                  ((finsuppScalarLeft R N ι) (p ⊗ₜ[R] n)) i = p i n
                  theorem TensorProduct.finsuppScalarLeft_apply_tmul {R : Type u_1} [CommSemiring R] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (p : ι →₀ R) (n : N) :
                  (finsuppScalarLeft R N ι) (p ⊗ₜ[R] n) = p.sum fun (i : ι) (m : R) => Finsupp.single i (m n)
                  theorem TensorProduct.finsuppScalarLeft_apply {R : Type u_1} [CommSemiring R] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (pn : TensorProduct R (ι →₀ R) N) (i : ι) :
                  @[simp]
                  theorem TensorProduct.finsuppScalarLeft_symm_apply_single {R : Type u_1} [CommSemiring R] {N : Type u_3} [AddCommMonoid N] [Module R N] {ι : Type u_4} [DecidableEq ι] (i : ι) (n : N) :
                  noncomputable def TensorProduct.finsuppScalarRight (R : Type u_1) [CommSemiring R] (M : Type u_2) [AddCommMonoid M] [Module R M] (ι : Type u_4) [DecidableEq ι] :

                  The tensor product of M and ι →₀ R is linearly equivalent to ι →₀ M

                  Equations
                    Instances For
                      @[simp]
                      theorem TensorProduct.finsuppScalarRight_apply_tmul_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {ι : Type u_4} [DecidableEq ι] (m : M) (p : ι →₀ R) (i : ι) :
                      ((finsuppScalarRight R M ι) (m ⊗ₜ[R] p)) i = p i m
                      theorem TensorProduct.finsuppScalarRight_apply_tmul {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {ι : Type u_4} [DecidableEq ι] (m : M) (p : ι →₀ R) :
                      (finsuppScalarRight R M ι) (m ⊗ₜ[R] p) = p.sum fun (i : ι) (n : R) => Finsupp.single i (n m)
                      theorem TensorProduct.finsuppScalarRight_apply {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {ι : Type u_4} [DecidableEq ι] (t : TensorProduct R M (ι →₀ R)) (i : ι) :
                      @[simp]
                      theorem TensorProduct.finsuppScalarRight_symm_apply_single {R : Type u_1} [CommSemiring R] {M : Type u_2} [AddCommMonoid M] [Module R M] {ι : Type u_4} [DecidableEq ι] (i : ι) (m : M) :
                      theorem Finsupp.linearCombination_one_tmul (R : Type u_1) (S : Type u_2) (M : Type u_3) (ι : Type u_5) [CommSemiring R] [AddCommMonoid M] [Module R M] [Semiring S] [Algebra R S] [DecidableEq ι] {v : ιM} :
                      def finsuppTensorFinsupp (R : Type u_1) (S : Type u_2) (M : Type u_3) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [Semiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] :

                      The tensor product of ι →₀ M and κ →₀ N is linearly equivalent to (ι × κ) →₀ (M ⊗ N).

                      Equations
                        Instances For
                          @[simp]
                          theorem finsuppTensorFinsupp_single (R : Type u_1) (S : Type u_2) (M : Type u_3) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [Semiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] (i : ι) (m : M) (k : κ) (n : N) :
                          @[simp]
                          theorem finsuppTensorFinsupp_apply (R : Type u_1) (S : Type u_2) (M : Type u_3) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [Semiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] (f : ι →₀ M) (g : κ →₀ N) (i : ι) (k : κ) :
                          ((finsuppTensorFinsupp R S M N ι κ) (f ⊗ₜ[R] g)) (i, k) = f i ⊗ₜ[R] g k
                          @[simp]
                          theorem finsuppTensorFinsupp_symm_single (R : Type u_1) (S : Type u_2) (M : Type u_3) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] [Semiring S] [Algebra R S] [Module S M] [IsScalarTower R S M] (i : ι × κ) (m : M) (n : N) :
                          def finsuppTensorFinsuppLid (R : Type u_1) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid N] [Module R N] :
                          TensorProduct R (ι →₀ R) (κ →₀ N) ≃ₗ[R] ι × κ →₀ N

                          A variant of finsuppTensorFinsupp where the first module is the ground ring.

                          Equations
                            Instances For
                              @[simp]
                              theorem finsuppTensorFinsuppLid_apply_apply (R : Type u_1) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid N] [Module R N] (f : ι →₀ R) (g : κ →₀ N) (a : ι) (b : κ) :
                              ((finsuppTensorFinsuppLid R N ι κ) (f ⊗ₜ[R] g)) (a, b) = f a g b
                              @[simp]
                              theorem finsuppTensorFinsuppLid_single_tmul_single (R : Type u_1) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid N] [Module R N] (a : ι) (b : κ) (r : R) (n : N) :
                              @[simp]
                              theorem finsuppTensorFinsuppLid_symm_single_smul (R : Type u_1) (N : Type u_4) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid N] [Module R N] (i : ι × κ) (r : R) (n : N) :
                              def finsuppTensorFinsuppRid (R : Type u_1) (M : Type u_3) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] :
                              TensorProduct R (ι →₀ M) (κ →₀ R) ≃ₗ[R] ι × κ →₀ M

                              A variant of finsuppTensorFinsupp where the second module is the ground ring.

                              Equations
                                Instances For
                                  @[simp]
                                  theorem finsuppTensorFinsuppRid_apply_apply (R : Type u_1) (M : Type u_3) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] (f : ι →₀ M) (g : κ →₀ R) (a : ι) (b : κ) :
                                  ((finsuppTensorFinsuppRid R M ι κ) (f ⊗ₜ[R] g)) (a, b) = g b f a
                                  @[simp]
                                  theorem finsuppTensorFinsuppRid_single_tmul_single (R : Type u_1) (M : Type u_3) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] (a : ι) (b : κ) (m : M) (r : R) :
                                  @[simp]
                                  theorem finsuppTensorFinsuppRid_symm_single_smul (R : Type u_1) (M : Type u_3) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] [AddCommMonoid M] [Module R M] (i : ι × κ) (m : M) (r : R) :
                                  def finsuppTensorFinsupp' (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] :
                                  TensorProduct R (ι →₀ R) (κ →₀ R) ≃ₗ[R] ι × κ →₀ R

                                  A variant of finsuppTensorFinsupp where both modules are the ground ring.

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem finsuppTensorFinsupp'_apply_apply (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] (f : ι →₀ R) (g : κ →₀ R) (a : ι) (b : κ) :
                                      ((finsuppTensorFinsupp' R ι κ) (f ⊗ₜ[R] g)) (a, b) = f a * g b
                                      @[simp]
                                      theorem finsuppTensorFinsupp'_single_tmul_single (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] (a : ι) (b : κ) (r₁ r₂ : R) :
                                      theorem finsuppTensorFinsupp'_symm_single_mul (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] (i : ι × κ) (r₁ r₂ : R) :
                                      (finsuppTensorFinsupp' R ι κ).symm (Finsupp.single i (r₁ * r₂)) = Finsupp.single i.1 r₁ ⊗ₜ[R] Finsupp.single i.2 r₂
                                      theorem finsuppTensorFinsuppLid_self (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] :
                                      theorem finsuppTensorFinsuppRid_self (R : Type u_1) (ι : Type u_5) (κ : Type u_6) [CommSemiring R] :