Documentation

TauCeti.LinearAlgebra.TensorPower.Basic

Basic operations on tensor powers #

Mathlib's TensorPower.mulEquiv identifies ⨂[R]^k M ⊗[R] ⨂[R]^m M with ⨂[R]^(k + m) M. This file records the inverse operation: TensorPower.splitAt cuts a tensor power of length n after its first k factors, landing in ⨂[R]^k M ⊗[R] ⨂[R]^(n - k) M, together with its value on pure tensors and the fact that it is injective. It also identifies the first tensor power with the underlying module.

Main definitions #

noncomputable def TauCeti.TensorPower.oneEquiv (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] :

A tensor word of length one is a single letter.

Equations
Instances For
    @[simp]
    theorem TauCeti.TensorPower.oneEquiv_tprod (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (f : Fin 1 → M) :
    (oneEquiv R M) ((PiTensorProduct.tprod R) f) = f 0

    The length-one tensor-power equivalence evaluates a pure tensor at its unique index.

    @[simp]
    theorem TauCeti.TensorPower.oneEquiv_symm_apply (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (a : M) :
    (oneEquiv R M).symm a = (PiTensorProduct.tprod R) fun (x : Fin 1) => a

    The inverse length-one tensor-power equivalence sends a letter to the corresponding pure tensor.

    noncomputable def TensorPower.splitAt (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (n k : ℕ) (hk : k ≤ n) :

    Split a tensor power after its first k factors.

    Equations
    Instances For
      @[simp]
      theorem TensorPower.mulEquiv_splitAt (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (n k : ℕ) (hk : k ≤ n) (x : TensorPower R n M) :
      mulEquiv ((splitAt R M n k hk) x) = (cast R M ⋯) x
      theorem TensorPower.splitAt_injective (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (n k : ℕ) (hk : k ≤ n) :
      Function.Injective ⇑(splitAt R M n k hk)

      Splitting a tensor power at a fixed position loses no information: it is the composite of two linear equivalences.

      @[simp]
      theorem TensorPower.splitAt_tprod (R : Type uR) (M : Type uM) [CommSemiring R] [AddCommMonoid M] [Module R M] (n k : ℕ) (hk : k ≤ n) (x : Fin n → M) :
      (splitAt R M n k hk) ((PiTensorProduct.tprod R) x) = ((PiTensorProduct.tprod R) fun (i : Fin k) => x (Fin.castLE hk i)) ⊗ₜ[R] (PiTensorProduct.tprod R) fun (j : Fin (n - k)) => x ⟨k + ↑j, ⋯⟩

      Splitting a pure tensor separates its first k entries from the remaining entries.

      Identifying the empty left tensor block with scalars agrees with concatenation.

      Identifying the empty right tensor block with scalars agrees with concatenation.

      Splitting a tensor power into three consecutive blocks is independent of the order of the two cuts, after applying the tensor associator.