# What unitary commutes with all local Pauli operators?

I was thinking about this problem of identifying a set of unitary operations (other than the identity operation) that commute with local pauli $$\sigma_X$$ and $$\sigma_Z$$ matrices, i.e. find $$U$$ such that $$[U, \sigma_{X, i}] = [U, \sigma_{Z, i}] = 0 ~ \forall i \in [1, n]$$. When considering only $$\sigma_{X, i}$$ or $$\sigma_{Z, i}$$, the problem is easy. However, when considering both operators, the problem gets increasingly hard, and I'm even wondering if that $$U$$ ever exists. If anyone could point me to right references or give me any insights, I'd be much appreciated!

TL;DR: The only $$U$$ that commutes with all $$\sigma_{X,i}$$ and all $$\sigma_{Z,i}$$ is a scalar multiple of identity. This follows from the Schur's lemma, but can also be shown using elementary linear algebra.

The set of $$n$$-fold tensor products of Pauli operators $$\sigma_{P_1,1}\otimes\dots\otimes\sigma_{P_n,n}$$ forms a basis $$\mathcal{P}_n$$ of the vector space of $$2^n\times 2^n$$ complex matrices, so any $$n$$-qubit unitary may be written as $$U=\sum_{\sigma_k\in\mathcal{P}_n}a_k\sigma_k.\tag1$$ We can use fact that the basis is orthogonal with respect to the Hilbert-Schmidt inner product to compute the coefficients in $$(1)$$ using $$a_k=\frac{\mathrm{tr}(\sigma_kU)}{2^n}\tag2$$ which can be checked by hitting $$(1)$$ with $$\sigma_k$$ and taking the trace.

Now, suppose that $$\sigma_k$$ anticommutes with $$\sigma_{X,i}$$ for some $$i\in[1,n]$$. Then \begin{align} a_k&=\frac{\mathrm{tr}(\sigma_kU)}{2^n}\tag3\\ &=\frac{\mathrm{tr}(\sigma_k\sigma_{X,i}U\sigma_{X,i})}{2^n}\tag4\\ &=-\frac{\mathrm{tr}(\sigma_{X,i}\sigma_kU\sigma_{X,i})}{2^n}\tag5\\ &=-\frac{\mathrm{tr}(\sigma_kU)}{2^n}\tag6\\ &=-a_k\tag7 \end{align} which means that $$a_k=0$$. The same is true for $$\sigma_{Z,i}$$. However, every non-identity Pauli operator $$\sigma_k$$ anticommutes with at least one operator of the form $$\sigma_{X,i}$$ or $$\sigma_{Z,i}$$. Therefore, all coefficients $$a_k$$ in $$(1)$$ other than the one corresponding to identity are zero and we conclude that $$U=aI$$ for some $$a\in\mathbb{C}$$ which by unitarity has $$|a|=1$$.

• Nice answer, but OP was asking for unitary, so maybe add that $a=e^{i\theta}$ to ensure that. I'm going to remove my sloppy answer :) Feb 8 at 3:30
• Thank you, Balint! :-) I added a remark about the coefficient. Feb 8 at 3:37

If $$P$$ commutes with $$U$$, that means $$U$$ conjugates $$P$$ into $$P$$.

\begin{aligned} &([P, U] = 0) \\\equiv& (P U = U P) \\\equiv& (U^\dagger P U = P) \end{aligned}

In the stabilizer formalism, operations are defined by how they conjugate generators of the Pauli group. Typically these generators are chosen to be $$X_q$$ and $$Z_q$$ for each $$q$$ the operator acts on:

import stim
t = stim.Tableau.from_named_gate("CZ")
print(repr(t))
# stim.Tableau.from_conjugated_generators(
#     xs=[
#         stim.PauliString("+XZ"),
#         stim.PauliString("+ZX"),
#     ],
#     zs=[
#         stim.PauliString("+Z_"),
#         stim.PauliString("+_Z"),
#     ],
# )

The fact operations are defined this way betrays the answer to your question. If you tell me how $$U$$ conjugates $$X_q$$ and $$Z_q$$ for each $$q$$, you've told me the exact operation (up to global phase). The operation that conjugates every $$X_q$$ into $$X_q$$, and every $$Z_q$$ into $$Z_q$$, is the identity operation:

import stim
t = stim.Tableau.from_conjugated_generators(
xs=[
stim.PauliString("+X_"),
stim.PauliString("+_X"),
],
zs=[
stim.PauliString("+Z_"),
stim.PauliString("+_Z"),
],
)
print(t.to_unitary_matrix(endian='little'))
# [[1.+0.j 0.+0.j 0.+0.j 0.+0.j]
#  [0.+0.j 1.+0.j 0.+0.j 0.+0.j]
#  [0.+0.j 0.+0.j 1.+0.j 0.+0.j]
#  [0.+0.j 0.+0.j 0.+0.j 1.+0.j]]

If you want a "proper" proof, I'd start by proving it for the single qubit case. Knowing $$UX = XU$$ and $$UZ = ZU$$ forces $$U = \begin{bmatrix}a&0\\0&a\end{bmatrix}$$. In the multi-qubit case this constraint broadcasts over the tensor product structure of the matrix; for example in the two qubit case you get this constraint:

$$\begin{bmatrix} a_1&0&\ast&\ast\\ 0&a_1&\ast&\ast\\ \ast&\ast&\ast&\ast\\ \ast&\ast&\ast&\ast\\ \end{bmatrix}$$

as well as this one:

$$\begin{bmatrix} \ast&\ast&\ast&\ast\\ \ast&\ast&\ast&\ast\\ \ast&\ast&a_2&0\\ \ast&\ast&0&a_2\\ \end{bmatrix}$$

and this one:

$$\begin{bmatrix} a_3&\ast&0&\ast\\ \ast&\ast&\ast&\ast\\ 0&\ast&a_3&\ast\\ \ast&\ast&\ast&\ast\\ \end{bmatrix}$$

and even ones like this one:

$$\begin{bmatrix} a_4&\ast&\ast&0\\ \ast&\ast&\ast&\ast\\ \ast&\ast&\ast&\ast\\ 0&\ast&\ast&a_4\\ \end{bmatrix}$$

The combination of all the constraints you can derive by broadcasting will force the whole operation to be the identity up to a scalar factor.