5

The terms $II$ and $ZZ$ do not uniquely specify the state $|11\rangle$ because you could equally have the state $|00\rangle$. Indeed, you should not include the identity term in your stabilizer. Thus, you need to add a second term, which could be either $-ZI$ or $-IZ$. Either way, you can easily see how to make a product $-ZI$ out of your stabilizers.


4

If it were me, I'd write out the $k$ $N$-qubit stabilizer generators in a $k\times 2N$ binary matrix, where each row corresponds to a stabilizer generator, with the first $N$ bits being the positions of the $X$ rotations, and the second $N$ being the positions of the $Z$s. A CSS code can be converted into a block structure where there are rows with only $X$ ...


3

Bacon Shor code is still very hot today! Assume you have some familiarity with Shor's code, here I just highlight the difference between these two. The Shor's code has distance 3 for both X and Z type errors. The distance is a metric for error-correcting capability. It means some errors with such weight can be undetected but produce a logical failure. ...


3

TL;DR Yes, the two error syndromes are identical, because the two errors trip the same set of stabilizers. Let $|\psi\rangle$ denote a state in the code subspace of the Shor's 9-qubit code. Every operator $\hat{S}$ in the stabilizer group $S$ of the code fixes $|\psi\rangle$, i.e. $\hat{S}|\psi\rangle = |\psi\rangle$. In particular, generators $\hat{S}_1, \...


3

Let $\mathcal{H}$ be the Hilbert space of a set of physical qubits and let $S$ be the stabilizer group of a stabilizer code $\mathcal{G} \subset \mathcal{H}$. A transversal operator $U$ on $\mathcal{H}$ implements a logical operator on $\mathcal{G}$ if it maps $\mathcal{G}$ back to itself. This can be established by showing that $U$ does not change the ...


3

It should be $IY \ne - YI$ instead of $IY = - YI$. $$IY \ne - YI \\ \begin{pmatrix} 1&0\\ 0& 1 \end{pmatrix} \begin{pmatrix} 0&-i\\ i& 0 \end{pmatrix} \ne -\begin{pmatrix} 0&-i\\ i& 0 \end{pmatrix} \begin{pmatrix} 1&0\\ 0& 1 \end{pmatrix} \\ Y = \begin{pmatrix} 0&-i\\ i& 0 \end{pmatrix} \ne -\begin{pmatrix} 0&-i\...


3

In the classic paper https://arxiv.org/pdf/quant-ph/9608006.pdf, on page 10, the distance of an $[n,0]$ code is defined as the smallest non-zero weight of any stabilizer in the code. The physical interpretation for this definition given is, "An $[[n, 0, d]]$ code is a quantum state such that, when subjected to a decoherence of $[(d − 1)/2]$ coordinates, ...


3

Note that in the case $k = 0$, the stabiliser 'code' is a $2^0 = 1$ dimensional subspace of the Hilbert space, which is to say that it consists of a single stabiliser state. This will have somewhat peverse effects on the features such as the 'distance' of the code. The "code distance" is ultimately defined in terms of the minimum weight of a Pauli ...


2

Well, it seems that the question is still unanswered. In general, there are different ways of encoding, but -- as I understand it -- you are asking for a unitary way of doing it. Suppose we have a $[[n,k]]$ stabiliser code $C$ with generators $g_1,\dots,g_{n-k}$. This code is Clifford-equivalent to the code $\mathsf{Z}_k:=|0^{n-k}\rangle\otimes (\mathbb{C}^2)...


2

Let me briefly elaborate on my comment. I'm not an expert on coding theory but I certainly know the symplectic formalism. If you want to know more about codes, I would recommend that you read "Quantum Error Correction Via Codes Over GF(4)" by Calderbank, Rains, Shor, and Sloane for the $\mathbb{F}_4$ formulation or "Quantum error-correcting ...


2

Yes. We will define a procedure for checking whether a given stabilizer code $\mathcal{G}$ is a Calderbank-Shor-Steane (CSS) code using the following Theorem. Stabilizer code $\mathcal{G}$ is a CSS code if and only if $\mathcal{G}$ has transversal CNOT. Proof sketch: Suppose $\mathcal{G}$ is a CSS code on $n$ qubits with stabilizer $S$. We can choose a set ...


2

Finding stabilizers By definition, a stabilizer group of a subspace of the Hilbert space of $n$ qubits is a subgroup of the $n$-qubit Pauli group. It is easy to see that stabilizers can only have $+1$ and $-1$ phase. Therefore, there are $2 \cdot 4^n$ candidate operators that could be stabilizers for the subspace. This seems large, but in practice one can ...


2

There is no circuit for $F$ in terms of $X$ and $Z$, because $\{X, Z\}$ is not a universal set of gates and $F\notin\langle X,Z\rangle$. The first assertion follows from the fact that the action of any product of $X$ and $Z$ on a state in the computational basis is in the computational basis. The second one follows from the observation that the action of $F$ ...


2

As you say, non-degenerate codes have a lot of well-understood machinery that's brought in from the classical side. That helps us from a conceptual stance, and a mathematical one (making rigorous results easier to prove), although, in terms of practical implementation, doesn't necessarily mean that one is easier to implement than the other. Errors in a ...


2

You can use stim for this, although you do have to write the stabilizer projection procedure for yourself. Write some methods to project a system into the +1 eigenstate of several stabilizers: from typing import List import stim def find_compatible_tableau(stabilizers: List[stim.PauliString]) -> stim.Tableau: num_qubits = max(len(e) for e in ...


2

An arbitrary choice will work. Note that your choice will affect the logical basis (i.e. the eigenbasis of $\bar{Z}$), so some choices might be more convenient for you. You might find these lecture notes helpful, especially section III on logical operators for stabilizer codes.


1

(1) The operators $\bar X$ and $\bar Z$ are found by requiring two operators that (i) commute with all the stabilizers and (ii) cannot be expressed as a product of the stabilizers. Note that the two will anti-commute with each other. The way that I would do this computationally is to fill in an $M\times 2N$ binary matrix, where $M$ is the number of ...


1

Assuming the encoder itself doesn't have to be fault tolerant, you can do the proof constructively. Prepare the code space by projecting each of the stabilizers into the +1 eigenstate. For each stabilizer $S$: Measure $S$. If you're in the -1 eigenspace of $S$, apply Pauli gates to flip the stabilizer (but not other stabilizers). E.g. stim can compute ...


1

Suppose you have a logical qubit encoded using a stabilizer code with generators $g_1, g_2, \dots, g_k$. If you measure all the generators and each of the measurements yields $+1$ then you know that the state of your logical qubit belongs to the code subspace. On the other hand, if one or more of then measurements of the generators returns $-1$ then you know ...


1

Every $[[n,k,d]]$ stabilizer code can be mapped to a $[[4n,2k,2d]]$ CSS code. This may not be what you want if you want to keep $n$ fixed, but look at this paper for possible clues; it gives explicit mappings from one to the other (with fermionic codes as an intermediate step) : Majorana Fermion Codes https://arxiv.org/abs/1004.3791


1

In the case of stabilizer codes, one generally starts with the group, $\cal{G}$, of tensor products of basis vectors on $n$ qubits. On one qubit the applicable group is the Pauli Group, which is order 16, call it $\cal{G}_0$. So at the general level $\cal{G} = \bigotimes_{i=1}^n \cal{G}_0$. Simplifying assumptions are made in many treatments that make it ...


1

Look at the start of the multiqubit section in this tutorial. In particular the section on basis vector ordering. I found the ordering of qubits to be very strange in qiskit possibly this is your error as well? For example the state $|10\rangle$ corresponds to qubit 0 being in state $|0\rangle$ and qubit 1 in state $|1\rangle$, contrary to what you might ...


1

These are related to simulation of a quantum device on a classical computer. If all the gates in a circuit are H, S, and CNOT, then the circuit can be simulated on a classical computer in polynomial time. This is what the stabilizer simulator does. If the circuit is composed mostly of H, S, and CNOT, but there is also a small number t of T gates, then the ...


1

For doing that in Qiskit, first create a multi qubit gate as a custom gate: from qiskit import * x_circuit = QuantumCircuit(3, name='Xs') x_circuit.x(range(3)) xs_gate = x_circuit.to_gate() Then create a controlled version of that custom gate: cxs_gate = xs_gate.control() Finally, use that controlled custom gate in a circuit: circuit = QuantumCircuit(8) ...


Only top voted, non community-wiki answers of a minimum length are eligible