You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From Henry Makhanov, with comments by me inline as quote blocks:
TODO add definition of Clifford deformation
Each stabilizer $S_i$ is transformed as $S_i \mapsto C^\dagger S_i C$, where $C = \bigotimes_i C_i$ is a product of single-qubit Clifford gates.
In ECC, codes such as Surface, Toric, and others are implemented as subtypes of AbstractECC.
These define the structure of the code (e.g., where checks and qubits are placed), and can be converted into a mutable stabilizer object via:
I plan to add: function apply_clifford_deformation!(stab::AbstractStabilizer, local_cliffords::Dict{Int, AbstractSingleQubitOperator})
This applies Clifford gates in-place (e.g., sHadamard, sPhase, etc), using the symbolic system in symbolic_cliffords.jl. The output is the updated stabilizer with transformed generators.
Let's think through an API that can be more composable. For instances, is this easier/better/faster: apply!(state, CliffordDeformation(gate, local_cliffords))? I am NOT sure this is a better way to do it.
Edit:
On further discussion, there was a significant misunderstanding for what this is to be used for. This is about taking a code and changing that code, creating a new code. Probably the most appropriate API here would be to introduce
struct CliffordDeformedCode <: AbstractECC
code::AbstractECC
deformations::...
end
The text was updated successfully, but these errors were encountered:
Uh oh!
There was an error while loading. Please reload this page.
From Henry Makhanov, with comments by me inline as quote blocks:
Each stabilizer$S_i$ is transformed as $S_i \mapsto C^\dagger S_i C$ , where $C = \bigotimes_i C_i$ is a product of single-qubit Clifford gates.
In ECC, codes such as Surface, Toric, and others are implemented as subtypes of AbstractECC.
These define the structure of the code (e.g., where checks and qubits are placed), and can be converted into a mutable stabilizer object via:
stab = Stabilizer(code) # code <: AbstractECC ⇒ stab <: AbstractStabilizer
I plan to add:
function apply_clifford_deformation!(stab::AbstractStabilizer, local_cliffords::Dict{Int, AbstractSingleQubitOperator})
This applies Clifford gates in-place (e.g., sHadamard, sPhase, etc), using the symbolic system in symbolic_cliffords.jl. The output is the updated stabilizer with transformed generators.
Edit:
The text was updated successfully, but these errors were encountered: