Kronecker product of matrices #
This defines the Kronecker product.
Main definitions #
- Matrix.kroneckerMap: A generalization of the Kronecker product: given a map- f : α → β → γand matrices- Aand- Bwith coefficients in- αand- β, respectively, it is defined as the matrix with coefficients in- γsuch that- kroneckerMap f A B (i₁, i₂) (j₁, j₂) = f (A i₁ j₁) (B i₁ j₂).
- Matrix.kroneckerMapBilinear: when- fis bilinear, so is- kroneckerMap f.
Specializations #
- Matrix.kronecker: An alias of- kroneckerMap (*). Prefer using the notation.
- Matrix.kroneckerBilinear:- Matrix.kroneckeris bilinear
- Matrix.kroneckerTMul: An alias of- kroneckerMap (⊗ₜ). Prefer using the notation.
- Matrix.kroneckerTMulBilinear:- Matrix.kroneckerTMulis bilinear
Notation #
These require open Kronecker:
- A ⊗ₖ Bfor- kroneckerMap (*) A B. Lemmas about this notation use the token- kronecker.
- A ⊗ₖₜ Band- A ⊗ₖₜ[R] Bfor- kroneckerMap (⊗ₜ) A B. Lemmas about this notation use the token- kroneckerTMul.
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.