Much like Matrix.reindex and Matrix.submatrix, we can reindex a Hermitian matrix to get another
Hermitian matrix; however, this only makes sense when both permutations are the same, accordingly,
HermitianMat.reindex only takes one Equiv argument (as opposed to Matrix.reindex's two).
This file then gives relevant lemmas for simplifying this.
def
HermitianMat.reindex
{d : Type u_1}
{dā : Type u_2}
{š : Type u_5}
[RCLike š]
(A : HermitianMat d š)
(e : d ā dā)
:
HermitianMat dā š
Equations
- A.reindex e = āØ(Matrix.reindex e e) āA, āÆā©
Instances For
@[simp]
theorem
HermitianMat.reindex_coe
{d : Type u_1}
{dā : Type u_2}
{š : Type u_5}
[RCLike š]
(A : HermitianMat d š)
(e : d ā dā)
:
Our simp-normal form for expressions involving HermitianMat.reindex is that we try to push
the reindexing as far out as possible, so that it can be absorbed by HermitianMat.trace, or
cancelled our in a HermitianMat.inner. In places where it commutes (like HermitianMat.inner)
we push it to the right side.
@[simp]
theorem
HermitianMat.ker_reindex
{d : Type u_1}
{dā : Type u_2}
{š : Type u_5}
[RCLike š]
(A : HermitianMat d š)
(e : d ā dā)
[Fintype d]
[Fintype dā]
[DecidableEq d]
[DecidableEq dā]
: