1

I understand that, in the surface code, it is generally harder to measure $Y_L$ compared to $X_L$ or $Z_L$, and code deformations are generally required. However, is there an easier way to calculate this information for a Stim surface code circuit, where we have access to a wider range of observables and information than we would in an experimental setting? Or is the best approach to implement a transformation such as the one in the paper I linked?

jchadwick
  • 493
  • 2
  • 10

1 Answers1

1

You can always suddenly terminate a circuit by turning off all noise and measuring the relevant observables and all stabilizers using the MPP instruction. To get a decoder to understand what you did, you must use OBSERVABLE_INCLUDE instructions pointing at each noiseless observable measurement and also DETECTORs comparing each noiseless stabilizer measurement to the last noisy measurement of that stabilizer.

This of course won't work on real hardware. And the performance of a circuit terminated this way is not necessarily representative of a proper hardware-compatible fault tolerant circuit, since the magical boundary can distort nearby logical error rates.

Overall this is a very useful trick to have, which also works for initializing states. It allows you to do things like prepare entangled states that test both the X and Z observables at the same time, and to defer the difficult job of figuring out the time boundaries until after you have finished figuring out the bulk (which can then act as a guide).

Craig Gidney
  • 44,299
  • 1
  • 41
  • 116