Kronecker product of matrices #
This defines the Kronecker product.
Main definitions #
Matrix.kroneckerMap: A generalization of the Kronecker product: given a mapf : α → β → γand matricesAandBwith coefficients inαandβ, respectively, it is defined as the matrix with coefficients inγsuch thatkroneckerMap f A B (i₁, i₂) (j₁, j₂) = f (A i₁ j₁) (B i₁ j₂).Matrix.kroneckerMapBilinear: whenfis bilinear, so iskroneckerMap f.
Specializations #
Matrix.kronecker: An alias ofkroneckerMap (*). Prefer using the notation.Matrix.kroneckerBilinear:Matrix.kroneckeris bilinearMatrix.kroneckerTMul: An alias ofkroneckerMap (⊗ₜ). Prefer using the notation.Matrix.kroneckerTMulBilinear:Matrix.kroneckerTMulis bilinear
Notation #
These require open Kronecker:
A ⊗ₖ BforkroneckerMap (*) A B. Lemmas about this notation use the tokenkronecker.A ⊗ₖₜ BandA ⊗ₖₜ[R] BforkroneckerMap (⊗ₜ) A B. Lemmas about this notation use the tokenkroneckerTMul.
Produce a matrix with f applied to every pair of elements from A and B.
Equations
- Matrix.kroneckerMap f A B = Matrix.of fun (i : l × n) (j : m × p) => f (A i.1 j.1) (B i.2 j.2)
Instances For
Alias of Matrix.kroneckerMap_single_single.
When f is bilinear then Matrix.kroneckerMap f is also bilinear.
Equations
- Matrix.kroneckerMapBilinear f = LinearMap.mk₂' R S (Matrix.kroneckerMap fun (r : α) (s : β) => (f r) s) ⋯ ⋯ ⋯ ⋯
Instances For
Matrix.kroneckerMapBilinear commutes with * if f does.
This is primarily used with R = ℕ to prove Matrix.mul_kronecker_mul.
trace distributes over Matrix.kroneckerMapBilinear.
This is primarily used with R = ℕ to prove Matrix.trace_kronecker.
determinant of Matrix.kroneckerMapBilinear.
This is primarily used with R = ℕ to prove Matrix.det_kronecker.
Specialization to Matrix.kroneckerMap (*) #
The Kronecker product. This is just a shorthand for kroneckerMap (*). Prefer the notation
⊗ₖ rather than this definition.
Equations
- Matrix.kronecker = Matrix.kroneckerMap fun (x1 x2 : α) => x1 * x2
Instances For
Produce a matrix with f applied to every pair of elements from A and B.
Equations
- Kronecker.«term_⊗ₖ_» = Lean.ParserDescr.trailingNode `Kronecker.«term_⊗ₖ_» 100 100 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ₖ ") (Lean.ParserDescr.cat `term 101))
Instances For
Matrix.kronecker as a bilinear map.
Equations
Instances For
What follows is a copy, in order, of every Matrix.kroneckerMap lemma above that has
hypotheses which can be filled by properties of *.
Alias of Matrix.single_kronecker_single.
Specialization to Matrix.kroneckerMap (⊗ₜ) #
The Kronecker tensor product. This is just a shorthand for kroneckerMap (⊗ₜ).
Prefer the notation ⊗ₖₜ rather than this definition.
Equations
- Matrix.kroneckerTMul R = Matrix.kroneckerMap fun (x1 : α) (x2 : β) => x1 ⊗ₜ[R] x2
Instances For
The Kronecker tensor product. This is just a shorthand for kroneckerMap (⊗ₜ).
Prefer the notation ⊗ₖₜ rather than this definition.
Equations
- Kronecker.«term_⊗ₖₜ_» = Lean.ParserDescr.trailingNode `Kronecker.«term_⊗ₖₜ_» 100 100 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ₖₜ ") (Lean.ParserDescr.cat `term 101))
Instances For
The Kronecker tensor product. This is just a shorthand for kroneckerMap (⊗ₜ).
Prefer the notation ⊗ₖₜ rather than this definition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Matrix.kronecker as a bilinear map.
Equations
Instances For
What follows is a copy, in order, of every Matrix.kroneckerMap lemma above that has
hypotheses which can be filled by properties of ⊗ₜ.
Alias of Matrix.single_kroneckerTMul_single.