The Kronecker product of a family of matrices #
The k-fold tensor product M₁ ⊗ ⋯ ⊗ M_k of matrices on ℂ^ι, as a matrix on
ℂ^{Fin k → ι}: (⊗ᵢ Mᵢ) v w = ∏ᵢ Mᵢ (v i) (w i). This is what the k-fold tensor power of a
strategy measures with (MIPRE.SyncStrategy.tensorPow, Background/Repetition/TensorPower.lean),
and the four facts about it that the value and PCC computations use: it is multiplicative
(tensorFamily_mul), compatible with the adjoint (tensorFamily_conjTranspose), sends the
constant family 1 to 1 (tensorFamily_one), sums coordinatewise (sum_tensorFamily) and
has trace the product of the traces (trace_tensorFamily). All are Fintype.prod_sum, the
distributivity of a product of sums over Fin k into a sum over Fin k → ι.
Mathlib's Matrix.kronecker is the binary case with the product index ι × ι; the family
form is more convenient than iterating it, because Fin k → ι needs no reassociation.