Let $P_n$ denote the $n$-qubit Pauli group. This has presentation $P_n = \langle iI, X_1, \ldots, X_n, Z_1, \ldots, Z_n \rangle$. Suppose we have a stabilizer group $S = \langle s_1, \ldots, s_k \rangle \leq P_n$ minimally generated by $k$ elements. We know that $N(S)/S \cong P_{n-k}$, and hence there exists a presentation for $N(S)/S$ of the form $\langle \overline{\iota}, \overline{x_1}, \ldots, \overline{x_{n-k}}, \overline{z_1}, \ldots, \overline{z_{n-k}} \rangle$ whose generators obey the same commutativity relations as the generators of $P_{n-k} = \langle iI, X_1, \ldots, X_{n-k}, Z_1, \ldots, Z_{n-k} \rangle$.
My question is: is an efficient way of finding such a presentation for $N(S)/S$ known, for any given $S$?
I've read Gottesman's lecture notes (https://arxiv.org/abs/0904.2557) and a bit of his unpublished textbook, in which $N(S)/S$ is discussed and properties of it proved, but the key proofs I might otherwise use to derive an algorithm are existential rather than constructive.
stac.Code
from the generator matrix[[0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 1, 1]]
. i.e. I created the stabilizer group $S = \langle X_2 X_3, Z_2 Z_3 \rangle$. I expected this to have logical operators represented by $X_1$ and $Z_1$. Instead, when calling.construct_logical_operators()
I got $X$ logicals[[0 1 1 0 0 0]]
and $Z$ logicals[[0 0 0 1 0 1]]
. i.e. I got the Paulis $X_2 X_3$ and $Z_1 Z_3$ respectively. These are not what I expected - e.g. $X_2 X_3$ is a stabilizer, so represents logical $I$. Where have I gone wrong? – Yossarian Apr 05 '23 at 12:01[[0 0 1 0 0 0]]
and $Z$ logicals[[0 0 0 0 0 1]]
, i.e. $X_3$ and $Z_3$. – Yossarian Apr 05 '23 at 12:03