Integrate tqec
with LaSsynth
#315
Labels
backend
Issue pertaining to the Python backend (tqec package)
data-format
How surface code data is transmitted and stored
enhancement
New feature or request, may not be in the task flow
future
Issues to track future development that is currently blocked by other issues.
suggestion
Suggestions of features or other fixes
Is your feature request related to a problem? Please describe.
What is
LaSsynth
?LaSsynth
is a synthesis for lattice surgery subroutines. After specifying the desired inputs/outputs ports and the stabilizer flows, it will use a SAT solver to solve the internal structure of the lattice surgery construction under limited spacetime volume. You can take a look at this demo to learn more about it.Why is it useful for
tqec
?LaSsynth
provides a way to automatically construct a valid spacetime model but can not run simulations for it. Then it's natural to take the output ofLaSsynth
as the input oftqec
to run and verify the construction at the circuit level.LaSsynth
provides a text format representation(LaSre
) of the spacetime model and it can be taken as a starting point for the design of a portable text format oftqec
computation structure.LaSsynth
provides the functionality to convert aLaSre
file to a.gltf
model and visualized the model as well as the correlation surfaces.LaSsynth
provides the functionality to convert aLaSre
file to the corresponding zx diagrams(usingstimzx
) representation and verify the the stabilizer flows.How it can be used with
tqec
?LaSsynth
provides a representation of the Lattice Surgery subroutine in a text format calledLaSre
.LaSre of CNOT
It can be seen as a complete description of the structure of a 3D spacetime model or our
BlockGraph
. To be more specific:n_i/j/k
s specify the the spacetime volumen_p
/ports
/port_cubes
specify the number and positions of inputs/outputs of the subroutine. And these ports can corresponds to the virtual cubes in theBlockGraph
.n_s
/stabs
specifies the stabilizer flow generators. The concept of the stabilizer flow translates naturally to the correlation surface in the lattice surgery model. And it relates to the existing correlation subgraphs inBlockGraph
.ExistI/J/K
specifies the positions of block structures including the cubes and pipes.ColorI/J
specifies the type of the block structures.CorrIJ...
specifies the explicit correlation surfaces presented in each pipe for each stabilizer flows.NodeY
specifies the existence of the Y basis initialization/measurements, which currently is not implemented intqec
but is planned for sure.As above, the one-to-one translation between
LaSre
andBlockGraph
should be possible.Limitations
To integrate the two libraries, there are some problems that we need to solve in my mind:
LaSynth
is not allowed by default, but can be enabled with some changes to the code.tqec
, or turn off the option for now.LaSre
to represent theBlockGraph
, we need to be able to fill the ports with actual cubes, which corresponds to logical initialization/measurements that instantiate a subroutine into a real computation.The text was updated successfully, but these errors were encountered: