fastdla.generators.z2lgt_hva.z2lgt_gauss_eigenspace

fastdla.generators.z2lgt_hva.z2lgt_gauss_eigenspace(gauss_eigvals, gauge_op='X', npmod=np)

Get the eigenspace basis of Gauss’s law operators.

The construction follows the projection algorithm for multiple symmetries proposed by LN. To avoid constructing the full \(2^{n_q} \times 2^{n_q}\) matrix, we compose the final projector from local-term projectors, extending the dimension as necessary.

Algorithm:

Let the number of matter sites be \(M\), qubits be indexed from right to left, and qubit 0 correspond to matter site 0.

Start by finding the eigenspace of the left-most (\(M-1\)) Gauss law operator \(X_{M-2,M-1}Z_{M-1}X_{M-1,0}\) corresponding to gauss_eigvals[-1]. Construct a projector \(P(M-1)\) with shape \([d(M-1)=8, p(M-1)=4]\).

For a matter site \(M-j-1 \; (j=1,...,M-2)\), extend the dimensions of the current projector \(P(M-j)\) to \(4d(M-j)\), then project the Gauss law operator onto the subspace to obtain

\[R(M-j-1) = [I \otimes I \otimes P(M-j)^{\dagger}] [X_{M-j-2,M-j-1}Z_{M-j-1}X_{M-j-1,M-j} \otimes I^{\otimes 2j}] [I \otimes I \otimes P(M-j)]\]

(shape \([4p(M-j), 4p(M-j)]\)). Assemble the eigenvectors of \(R(M-j-1)\) with eigenvalue gauss_eigvals[M-j-1] into \(S(M-j-1)=(v_0 \; \dots \; v_{2p(M-j)-1})\). The current projector \(I \otimes I \otimes P(M-j)\) projected onto \(S(M-j-1)\) is the next projector

\[P(M-j-1) = [I \otimes I \otimes P(M-j)] S(M-j-1)\]

(shape \([d(M-j-1)=4d(M-j), p(M-j-1)=2p(M-j)]\)).

For the matter site 0, extend the dimension of \(P(1)\) only by 2. The “local” projector actually acts on the leftmost qubit as well as the rightmost two. \(R(0)\) and \(S(0)\) have shapes \([2p(1), 2p(1)]\) and \([2p(1), p(1)]\) and the final projector will be \([d(0)=2d(1)=2^{2M}, p(0)=p(1)=2^M]\).

Parameters:

gauss_eigvals (Sequence[int]) – Sequence (length \(2N_f\)) of eigenvalues (±1) of \(G_n\).

Return type:

numpy.ndarray

Returns:

An array of shape (2**N_q, 2**N_s), which represents the basis column vectors of the eigenspace.