# CNOT-like Purification Gates

As a reminder, we have the following basis states (written in binary, in decimal, and as list of stabilizers):

```
00 = 0 = +XX
+ZZ
01 = 1 = +XX
-ZZ
10 = 2 = -XX
+ZZ
11 = 3 = -XX
-ZZ
```

If we consider purification circuits that preserve the `00`

state, the majority of useful gates in purification circuits can be written in the form:

Above the entangled pairs are qubit 1&3 and qubits 2&4.

The main property of this type of circuits is that they always map the "good" state to itself, while they permute the rest of the Bell basis states.

The $h_a\otimes h_b$ (and $f_a\otimes f_b$) can be one of the six permutations of `01, 10, 11`

, implemented by single-qubit Clifford gates. There are 6 possible such operations. The hard-coded CNOT gate provides the necessary entangling.

These gates are implemented as `CNOTPerm`

.

The 6 permutations (i.e. the gates $h_a\otimes h_b$ and $f_a\otimes f_b$) are:

`julia> BPGates.good_perm_tuple`

`((1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2))`

The gates represented as Clifford operations are:

TODO finish this listing