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
-ZZIf 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