Quantum Computing SEArchived Mar 16, 2026✓ Full text saved
I'm trying to implement some of the surgery schemes to perform measurement of joint Pauli operators in qLDPC codes (like CKBB). In the papers, they often mention that after measuring the stabilisers of the merged code, one must measure the ancilla and use the outcome to determine the resulting code space. How exactly should I deduce the frame correction based on these measurements? If we assume a simple example where I have 2 surface codes, and I use an ancilla system to measure the parity X1X2,
Full text archived locally
✦ AI Summary· Claude Sonnet
Frame correction after qLDPC surgery
Ask Question
Asked 13 days ago
Modified 12 days ago
Viewed 158 times
1
I'm trying to implement some of the surgery schemes to perform measurement of joint Pauli operators in qLDPC codes (like CKBB). In the papers, they often mention that after measuring the stabilisers of the merged code, one must measure the ancilla and use the outcome to determine the resulting code space. How exactly should I deduce the frame correction based on these measurements?
If we assume a simple example where I have 2 surface codes, and I use an ancilla system to measure the parity X1X2, s.t. the product of the X stabilisers of the ancilla system is equal to X1X2. After extracting this, what frame correction should be applied to my logical operators?
EDIT: Here is what I'm trying to do, I have 2 repetition codes C1 and C2,
with Z checks over 3 qubits as follow:
C1: C2:
1-Z-2-Z-3 4-Z-5-Z-6
I initialise all qubits in |0> and I measure stabilisers (everything stay in |0>). I assume I have the logical operators
L
1z
=qb(1);
L
2z
=qb(4)
𝐿
1
𝑧
=
𝑞
𝑏
(
1
)
;
𝐿
2
𝑧
=
𝑞
𝑏
(
4
)
Now I measure the stabilisers generators of the following graph (to extract parity
L
1x
L
2x
𝐿
1
𝑥
𝐿
2
𝑥
):
1- Z- 2- Z- 3 4- Z- 5- Z- 6
| | | | | | | | | |
X- 7- X- 8- X--9--X- 10-X- 12-X
| | | | | | | | | | |
13-Z- 14-Z- 15-Z--16-Z- 17-Z- 18
| | | | | | | | | | |
X- 19-X- 20-X--21-X- 22-X- 23-X
I expect this to project my logical state in the eigenspace of
L
1x
∗
L
2x
𝐿
1
𝑥
∗
𝐿
2
𝑥
, which should be |++>+|--> or |+-> + |-+> (normalised). Now if I write these in Z basis, it should be
|00>±|11>
|
00
>
±
|
11
>
. So when after readout of the ancilla system, I measure
L
1z
𝐿
1
𝑧
and
L
2z
𝐿
2
𝑧
, I expect to get either |00> or |11>. assuming no noise, If I measure the logical Z as they were before the merge process. Yet I get all 4 possible outcomes, so I assume I must correct these logicals Z somehow. What modification should I apply?
lattice-surgerymeasurement-based-qcqldpc
Share
Improve this question
Follow
edited Mar 4 at 17:01
asked Mar 3 at 10:31
L.DZ
1836
6 bronze badges
Add a comment
2 Answers
Sorted by:
Highest score (default)
Date modified (newest first)
Date created (oldest first)
0
Given you are gauge fixing, the logical you wish to measure is now a stabilizer of the new code space you are in. The pauli frame will just be a result of the local errors that are detectable and correctable on both the stabilizers of the subsystem, and those of the new code, which in this case is also a product logical of the two previous code patches. So the only corrections you would need to perform are those that are taking the stabilizer of the merged code out of it's +1 space.
In our case, however, the stabilizer is likely non-determininistic, as the initials state of the two patches was unlikely to be in the logical
X
1
X
2
𝑋
1
𝑋
2
, and you don't want to correct it to the +1 space, as this would change the logical information also. But you do at least want to perform any corrections that arise from errors on the support of the stabilizer, ie the logical, which you identify using the rest of the stabilizers in the ancilla tanner graph you prepare.
Or are you referring to the measurement of the whole ancilla code in the
Z
𝑍
basis. In this case, this is just used to return to the original code.
To summarize,
X
1
X
2
𝑋
1
𝑋
2
goes from a logical to a stabilizer. It's generally not a stabilizer before, so we do d rounds of error correction to build up enough history to ensure we are accurately determining it's value. Then we use the syndrome information to correct for any errors, ensuring the code remains in whatever subspace of the logical, +1 or -1, it is meant to be in. We DO NOT correct it to +1. We only ensure that the measurements are correct.
Edit: also the same reasoning applies if you just do an ordinary merge on the surface code without an ancilla system.
Share
Improve this answer
Follow
edited Mar 4 at 10:03
answered Mar 4 at 9:58
GaussStrife
1,4429
9 silver badges
17
17 bronze badges
If we assume there is not noise. When we do the "split" part to return to the original code (reading out the ancilla systen), is there any update on the original Z-logicals? –
L.DZ
Commented
Mar 4 at 10:29
If there isn't any noise in the system then you don't need to perform any corrections. In that case you'd just do one round with the ancilla system. Technically, you'd be able to make it a lot smaller as you wouldn't need d rounds for fault tolerance. Any change to the Z logicals should only be a problem if you have propagating errors and the Z logical has some sort of non-trivial support on the qubits you are attaching the
X
𝑋
generators to. But from just measuring out the ancilla, no, there should be no problems, as the addition of the ancilla does not make the
Z
L
𝑍
𝐿
a stabilizer. –
GaussStrife
Commented
Mar 4 at 10:39
Although you could do this for a different logical qubit, and measure something like
X
1
X
2
Z
3
𝑋
1
𝑋
2
𝑍
3
with the right ancilla. CKBB goes into this on page 8 –
GaussStrife
Commented
Mar 4 at 10:40
Typically, we have that Z logical's share some data qubits with the X logicals, thus we'll attach a X stabilisers to it. How do we deal with that? –
L.DZ
Commented
Mar 4 at 11:13
Deal with what exactly? The
X
𝑋
generators you introduce won't detect X errors on the data qubits originally in the patch, and those qubits already have
Z
𝑍
stabilizers from the original code attached to them to detect errors. Now the support of these stabilizers has changed, as you have measured out qubits in the primal layer you introduced in the ancilla. So you may need to update the frame of the
Z
𝑍
stabilizers in the original patch using the measurement results of the qubits in the ancilla that has support on those stabilizers. –
GaussStrife
Commented
Mar 4 at 12:08
Show 2 more comments
0
I think you're conceiving of this problem backwards. The goal is not to find Pauli operations that fix whether the logical operator is flipped, the goal is to correctly track how the logical operator is mapped into the physical operators including the sign. You want to solve for
m
𝑚
in
L
X
→
L
′
X
(−1
)
m
𝐿
𝑋
→
𝐿
𝑋
′
(
−
1
)
𝑚
, but are being distracted by the unnecessary problem of finding a set of Pauli operations to invert
m
𝑚
while leaving other signs unchanged. You don't need to force the value of
m
𝑚
, you only need to track it.
(If you really just want to find Paulis that flip only
m
𝑚
, I would do that with a combination of stim.Tableau.from_conjugated_generators to specify the system of logical qubits and then stim.Tableau.inverse to enable performing
TP
T
−1
𝑇
𝑃
𝑇
−
1
where
P
𝑃
is the correction for the unencoded system where the correction is a single qubit operator, and then stim.Tableau.to_pauli_string to pull out the encoded correction in any easy to read form.)
This is not just an issue with the sign, by the way. There is an inherent ambiguity in whether changes to a logical operator are mere changes to the mapping or actual intended logical operations. For example, suppose a circuit contains the flow X1*X2*X3 -> X1*X2*X3*X4*X5*X6 and you have a logical operator that starts as X1*X2*X3. This flow could easily be a circuit growing the distance of the code, or it could be the logical qubit getting deformed and stretched as part of loading it into a dense memory, or it could be a logical CNOT gate spreading the logical operator from the logical control X1*X2*X3 to the logical target X4*X5*X6. The physical circuit does not record the intent, it only records the action.
What I would do in your shoes is to declare the intent. I would separately declare the flows the physical operators will undergo and the logical operations the logical qubits are supposed to undergo. For example, suppose:
The X, Z operators of logical qubit 0 are pauli products
A
𝐴
and
B
𝐵
The X, Z operators of logical qubit 1 are pauli products
C
𝐶
and
D
𝐷
I want physically
A→E
𝐴
→
𝐸
I want physically
B→F
𝐵
→
𝐹
I want physically
C→G
𝐶
→
𝐺
I want physically
D→H
𝐷
→
𝐻
I want logically CX 0 1
Then, ignoring the logical operation for now, the physical mappings imply that after the circuit I have this:
The X, Z operators of logical qubit 0 are pauli products
E
𝐸
and
F
𝐹
The X, Z operators of logical qubit 1 are pauli products
G
𝐺
and
H
𝐻
The logical operation then simply does some relabeling. A CX multiplies the X operator of the control into the target and the Z operator of the target into the control, so the final logical mapping is:
The X, Z operators of logical qubit 0 are pauli products
E⋅G
𝐸
⋅
𝐺
and
F
𝐹
The X, Z operators of logical qubit 1 are pauli products
G
𝐺
and
F⋅H
𝐹
⋅
𝐻
As you can see, there was no need for any pauli feedback on the actual machine here. Just correct tracking of the outcome of the intent and the action.
As an example, separately declaring intent and action makes it possible to express Clifford-deferred computation where all Clifford gates correspond to doing nothing. Although no actions have happened, the mapping of logical operators into physical qubits has changed. The result is that later operations take on a different form, because the logical operators that they apply to have been remapped into a different physical operator.
Share
Improve this answer
Follow
edited Mar 4 at 18:04
answered Mar 4 at 17:49
Craig Gidney
51.2k1
1 gold badge
53
53 silver badges
133
133 bronze badges
Well the intent is just to have a well defined primitive that, given 2 pairs of logical operators support, return Mxx and the valid logical operators after the operation. –
L.DZ
Commented
Mar 4 at 18:42
Add a comment
Your Answer
Sign up or log in
Sign up using Google
Sign up using Email and Password
Post as a guest
Name
Email
Required, but never shown
Post Your Answer
By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.
Start asking to get answers
Find the answer to your question by asking.
Ask question
Explore related questions
lattice-surgerymeasurement-based-qcqldpc
See similar questions with these tags.
The Overflow Blog
Open source for awkward robots
Domain expertise still wanted: the latest trends in AI-assisted knowledge for...
Featured on Meta
Logo updates to Stack Overflow's visual identity
Related
1
Using Pymatching to decode lattice surgery process
0
error correction after lattice surgery for merging
3
Measurement of a logical operator in a Foliated Surface Code
2
BP decoders for qLDPC codes
4
Why are there different Implementations of the CX Gate through Lattice-Surgery?
1
Surface Code Lattice Surgery CNOT Logical Gate
1
Ambiguity in the lattice surgery merge operation
Hot Network Questions
AI overview in normal Firefox window but not in Private Window
How do I set a static IP on startup?
Why are dialetheias sometimes described as “nondualisms”?
Cockroach carrying a spy video camera in a movie?
Is this spell balanced by the consequence?
Hard position for Stockfish to analyze
In what sense is the Axiom of Multiple Choice weaker than the Axiom of Choice?
How could an egg survive below freezing temperatures for long periods of time?
Arbitrary precision calculator for π in Python using only integer arithmetic
Regarding Transferred Manuscript
ATTiny816 - How are these two code fragments different?
Is there credible evidence that Pakistan’s ISI funds or supports the Khalistan movement abroad?
How should I compare two survival prediction models when a predictor’s definition drifts over time?
Grammaticality of "Nabila isn't using the mobile phone anymore (used to)"
Is compound assignment on atomic variables guaranteed to be atomic prior to C23?
Mirror stopped working
SAT Solver Using Rubik's Cube
a dual definition of atomistic lattice
In 1 Corinthians 7:8, does ἀγάμοις (agamois) refer to all unmarried people or specifically to widowers?
The assumptions for causal inference seem obvious - why state them?
How do I equip previously unlocked costumes in SM64: Beyond the Cursed Mirror?
What do I do? I am underqualified for my job
What state of matter is a black hole?
Typical length and structure of “selection criteria responses” in Australian academic job applications (math/statistics)
Question feed
By continuing to use this website, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. By exiting this window, default cookies will be accepted. To reject cookies, select an option from below.
Customize settings
Cookie Consent Preference Center
When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences, or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
Cookie Policy
Accept all cookies
Manage Consent Preferences
Strictly Necessary Cookies
Always Active
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
Targeting Cookies
Targeting Cookies
These cookies are used to make advertising messages more relevant to you and may be set through our site by us or by our advertising partners. They may be used to build a profile of your interests and show you relevant advertising on our site or on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device.
Performance Cookies
Performance Cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
Functional Cookies
Functional Cookies
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
Cookie List
Clear
checkbox label label
Apply Cancel
Consent Leg.Interest
checkbox label label
checkbox label label
checkbox label label
Necessary cookies only Confirm My Choices