Kronecker product of Hadamard matrices
ProvedHadamard_matrix_kronecker_productThis is the classical multiplicativity theorem for Hadamard matrices: the Kronecker (tensor) product of two Hadamard matrices is again a Hadamard matrix, of order equal to the product of the two orders.
Let be an real matrix with every entry or satisfying , and let be an real matrix with every entry or satisfying (i.e. and are each Hadamard matrices in orthogonality form). Then the Kronecker product , an matrix, has every entry or and satisfies
The proof uses the mixed-product identity : every entry of is a product of a entry of and a entry of , hence , and
This generalizes Sylvester's 1867 doubling construction (the case is the fixed matrix ) to the tensor product of any two Hadamard matrices, and is the standard tool for multiplying together the orders of known Hadamard matrices: if Hadamard matrices of orders and exist, so does one of order .
Formalization Note Both hypotheses and the conclusion are stated in orthogonality form () rather than the determinant form, matching the internal representation used to build Sylvester's construction on this platform. The index type of the product matrix is Fin (m * n), reached from the natural Kronecker index type Fin m × Fin n via the standard equivalence finProdFinEquiv.
import Mathlib open Matrix
theorem Hadamard_matrix_kronecker_product {m n : ℕ}
(A : Matrix (Fin m) (Fin m) ℝ) (B : Matrix (Fin n) (Fin n) ℝ)
(hApm : ∀ i j, A i j = 1 ∨ A i j = -1)
(hAorth : A * Aᵀ = ((m : ℕ) : ℝ) • (1 : Matrix (Fin m) (Fin m) ℝ))
(hBpm : ∀ i j, B i j = 1 ∨ B i j = -1)
(hBorth : B * Bᵀ = ((n : ℕ) : ℝ) • (1 : Matrix (Fin n) (Fin n) ℝ)) :
∃ M : Matrix (Fin (m * n)) (Fin (m * n)) ℝ,
(∀ i j, M i j = 1 ∨ M i j = -1) ∧
M * Mᵀ = ((m * n : ℕ) : ℝ) • (1 : Matrix (Fin (m * n)) (Fin (m * n)) ℝ) := by sorry