My question is related to this topic
I consider working with error correcting code on which I want to define logical operations.
Let's assume I want to define a logical operation on logical qubit. In the context of Stabilizer code we would have to make sure that this operation acts in the code space as explained here.
But this is not enough, we must also verify that the logical gate, once ensured it preserves the code space does the appropriate operation.
Some general requirements
I call $A$ the gate I want to implement logically under $A_L$. I call $C$ the code space.
One condition I must have is to ensure: $\forall |\psi \rangle \in C, A_L |\psi \rangle \in C$. But this is not enough, I must "preserve" the action of this operation on the logical space.
One necessary condition would be to make sure that:
$$ \forall X: [A,X] \rightarrow [A_L,X_L]$$
I don't know how to phrase it precisely mathematically but basically it is to say that the commutator of $A$ with any other operator has the same "shape" as in the logical space.
And as $n$-Pauli matrices form a basis of $U(n)$, I guess this condition would by linearity be equivalent to say:
$$ \forall E \in G_n, [A,E] \rightarrow [A_L, E_L] $$
Where $G_n$ is the $n$-Pauli matrices group. But still: is ensuring commutation rule enough or is it only necessary to preserve the meaning of the operation ?
My question in the end
What is a rigorous way to define logical operation on a quantum error correcting code. And if there are some "nice" equivalent way to define them I would be interested to know them. If we cannot be absolutely general, I will be fine with a definition for Stabilizer codes.