I was just wondering what the difference is between the 2 types of implementations one can take in implementing the OBSERVABLE_INCLUDE command. Given any stim.Circuit() we can append the following:
Method 1: circuit.append("OBSERVABLE_INCLUDE", [stim.target_rec(-1)...], 0)
Method 2: circuit.append("OBSERVABLE_INCLUDE", X1 X2 X3..., 0)
The 1st method makes sense to me: We have done a measurement of our data qubits at the end of the run and therefore can see if errors change the given measurement record.
The 2nd method isn't clear to me yet. Do we look at the current Pauli frame to determine if a logical error occurred, i.e., flipped the observable?
What is the use case even for the 1st method if I can easily just add my logical observables by qubit index instead of additionally needing to add a measurement before?