The 'projectors' of a 'kwant.physics.DiscreteSymmetry' are not actually projectors
kwant.physics.DiscreteSymmetry
has as a projectors
property, however the data stored here is not actually a projector.
The actual projectors are constructed in the validate
method (see here).
See here in the Builder where we construct "projectors" by selecting columns from the matrix of eigenvectors.
Clearly a true projector would be those matrices multiplied by their conjugate transposes.
IMO this is just an error in naming. Instead of projectors
these things should be called subspaces
. They are matrices that each have the following properties:
-
M
is a matrix whos columns span a given subspaceV
-
M M^\dagger
is a projector ontoV
Additionally the set of all projectors has the property that it is a partition of unity: \sum_i M_i M_i^\dagger = 1
It's fine that we store M
rather than M M^\dagger
, but we should at least name them correctly.