Kronecker product of matrices #
This defines the Kronecker product.
Main definitions #
Matrix.kroneckerMap
: A generalization of the Kronecker product: given a mapf : α → β → γ
and matricesA
andB
with 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
: whenf
is bilinear, so iskroneckerMap f
.
Specializations #
Matrix.kronecker
: An alias ofkroneckerMap (*)
. Prefer using the notation.Matrix.kroneckerBilinear
:Matrix.kronecker
is bilinearMatrix.kroneckerTMul
: An alias ofkroneckerMap (⊗ₜ)
. Prefer using the notation.Matrix.kroneckerTMulBilinear
:Matrix.kroneckerTMul
is bilinear
Notations #
These require open Kronecker
:
A ⊗ₖ B
forkroneckerMap (*) A B
. Lemmas about this notation use the tokenkronecker
.A ⊗ₖₜ B
andA ⊗ₖₜ[R] B
forkroneckerMap (⊗ₜ) 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
When f
is bilinear then Matrix.kroneckerMap f
is also bilinear.
Equations
- Matrix.kroneckerMapBilinear f = LinearMap.mk₂ R (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
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
- Matrix.kroneckerBilinear = Matrix.kroneckerMapBilinear (↑(Algebra.lmul R α)).toLinearMap
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 *
.
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
Equations
- Kronecker.«term_⊗ₖₜ_» = Lean.ParserDescr.trailingNode `Kronecker.«term_⊗ₖₜ_» 100 100 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊗ₖₜ ") (Lean.ParserDescr.cat `term 101))
Instances For
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 ⊗ₜ
.