Vector form of Pauli operators and the generator matrix#

It is getting quite tedious to write down multi-qubit Pauli operators like $X \otimes X \otimes I$. Here we are going to discuss a compact form for Pauli operators, that will make it very easy to do computations.

Vector form of Pauli operators#

We are going to map operators in the Pauli group $\group{P}_n$ to binary vectors of length $2n$. This vector has form $v = (a|b)$ where

• $a$ is the "$X$ part", and is of length $n$,and
• $b$ is the "$Z$ part", and is also of length $n$.

Let $P = \otimes_i P_i$, where $P_i \in \{I_i, X_i, Y_i, Z_i\}$. Then, \begin{align} a_i &= 0, b_i = 0 \text{ if } P_i = I_i, \\ a_i &= 1, b_i = 0 \text{ if } P_i = X_i, \\ a_i &= 1, b_i = 1 \text{ if } P_i = Y_i, \\ a_i &= 0, b_i = 1 \text{ if } P_i = Z_i. \end{align} For example if $n=4$, then $X_0I_1Z_2Y_3$ is associated with the vector $v=(1 0 0 1|0 0 1 1)$.

Determine the vector form of the following operators

• $X_0Z_0X_1Z_1$
• $Y_0Y_1Y_2$
• $Z_0Z_1X_2$

Multiplying operators#

One of the immediate benefits of the binary vector form is that multiplying two Pauli's corresponds to adding their vectors mod 2 (up to an overall phase).

For the simplest example, note that $X = (1|0)$ and $Z = (0|1)$ and their product is $XZ = (1|0) + (0|1) = (1|1) = Y$. Quite ingenius! Please note that we will ignore the overall phase here as $XZ = -\iu Y$, but as you delve more into error-correcting codes you will realize that such phases are not very important.

Question: Use the binary vector form to compute $XX$.

Commutation relations#

One of the best advantages of writing Pauli operators as binary vectors is that commutation relations become very easy to compute.

First, we define the symplectic inner product between binary vectors of length $2n$

Let $P_1 = (a|b)$ and $P_2 = (c|d)$. Then, the symplectic inner product between $P_1$ and $P_2$ is

$$P_1 \cdot P_2 = a\cdot d + b\cdot c\mod 2.$$

Be very careful about how we multiplying the first part of $P_1$ with the second part of $P_2$ and vice versa.

Let $P_1 = (101|110)$ and $P_2 = (011|111)$. Determine $P_1\cdot P_2$.

Complete the function symplectic_inner_product that computes the symplectic product of two input vectors.

• Parameters:
P1: a list, guaranteed to only contain 0 or 1, and length divisible by 2. P2: a list, guaranteed to only contain 0 or 1, and length divisible by 2.
• Returns:
An int that is symplectic inner product of P1 and P2
def symplectic_inner_product(P1, P2):
pass

Now we state the following theorem about the commutation relations of Pauli operators.

Lemma: Let $P_1 = (a|b)$ and $P_2 = (c|d)$ be two Pauli operators. Then,

• $P_1$ and $P_2$ commute if and only if $P_1 \cdot P_2 = 0$,
• $P_1$ and $P_2$ commute if and only if $P_1 \cdot P_2 = 1$.

Question: Use the commutation relations of $I_i,X_i,Y_i,Z_i$ to prove this theorem.

In Task 1 in stabilizer codes we computed everything by hand. Now use the symplectic_inner_product function to recompute the table with code.

Generator matrix#

To compactly represent the stabilizer group, and its associated code, we usually write the generators of the stabilizer code as rows of a matrix. This matrix is called sometimes called the generator matrix (because it contains the generators of the code) or the check-matrix (because it is actually analogous to the classical parity-check matrix rather than the classical generator matrix). Sorry for the confusing notation.

Example: For the repetition code for phase flips, the generators are \begin{align} X \otimes X \otimes I &= (110|000), \\ X \otimes I \otimes X &= (101|000). \end{align} Hence, the generator matrix is $$G = \left(\begin{array}{ccc|ccc} 1 & 1 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 & 0 \end{array}\right).$$