The canonical skew-symmetric matrix as a unit, and block matrices in the symplectic group #
Mathlib's Matrix.J satisfies J * J = -1, so it is a unit with inverse -J. This file records
that unit and the conjugation cancellation it supports — X = J * Y * J⁻¹ iff X * J = J * Y —
and solves the symplectic inverse formula SymplecticGroup.inv_eq_symplectic_inv for the
transpose, Aᵀ = J * A⁻¹ * J⁻¹. Conjugation by J is the shape the matrix exponential consumes:
the exponential does not interact with Aᵀ * J = J * (-A), but it does turn Aᵀ = J * (-A) * J⁻¹
into (exp A)ᵀ = J * (exp A)⁻¹ * J⁻¹.
It also records membership in Matrix.symplecticGroup of three families of block matrices, each a
specialisation of SymplecticGroup.fromBlocks_mem_iff.
Main results #
Matrix.J_mul_neg_J,Matrix.neg_J_mul_JandMatrix.isUnit_J: the canonical skew-symmetric matrix is a unit, with inverse-J.Matrix.eq_J_conj_iff_mul_J_eq: cancelling a conjugation byJ.SymplecticGroup.transpose_eq_J_conj_inv: the transpose of a symplectic matrix is theJ-conjugate of its inverse.SymplecticGroup.fromBlocks_upper_mem:fromBlocks 1 B 0 1for symmetricB;SymplecticGroup.fromBlocks_lower_mem:fromBlocks 1 0 C 1for symmetricC;SymplecticGroup.fromBlocks_diagonal_mem:fromBlocks A 0 0 DwhenAᵀ * D = 1.
J * (-J) = 1: the companion of Matrix.J_squared in the form the conjugation arguments
below use.
The canonical skew-symmetric matrix is a unit, with inverse -J, because J * J = -1.
Cancelling a conjugation by J: since J is a unit, X is the J-conjugate of Y
exactly when X * J = J * Y. This is Mathlib's Matrix.mul_inv_eq_iff_eq_mul_of_invertible with
the invertibility of J supplied; every identity below that moves a matrix past J is an instance
of it.
The transpose of a symplectic matrix is the J-conjugate of its inverse. Mathlib's
SymplecticGroup.inv_eq_symplectic_inv computes the inverse as -J * Aᵀ * J; cancelling the
conjugation by J solves that identity for Aᵀ instead.
An upper unitriangular block matrix is symplectic when its upper-right block is symmetric.
A lower unitriangular block matrix is symplectic when its lower-left block is symmetric.
A block-diagonal matrix is symplectic when its diagonal blocks satisfy the defining inverse transpose relation.