Skip to content

stim.target_combiner and stim.PauliString not supported for OBSERVABLE_INCLUDE #955

Open
@oscarhiggott

Description

@oscarhiggott

The new pauli targets for OBSERVABLE_INCLUDE only works with stim.target_pauli but not stim.target_combiner or stim.PauliString. Instead I would have expected stim.target_combiner or stim.PauliString to be supported and not stim.target_pauli alone since it is a pauli product being included into the observable.

For example:

import stim

circuit = stim.Circuit()

obs_pauli = stim.PauliString("IXYZIIXYZ")

# Works fine
circuit.append("MPP", targets=[obs_pauli])

# ValueError: Gate OBSERVABLE_INCLUDE only takes measurement record targets and Pauli targets (rec[-k], Xk, Yk, Zk).
circuit.append("OBSERVABLE_INCLUDE", targets=[obs_pauli], arg=0)
# ValueError: Gate OBSERVABLE_INCLUDE only takes measurement record targets and Pauli targets (rec[-k], Xk, Yk, Zk).
circuit.append(
    "OBSERVABLE_INCLUDE", targets=[*stim.target_combined_paulis(obs_pauli)], arg=1
)

obs_pauli_targets = []
for i in range(len(obs_pauli)):
    if obs_pauli[i] != 0:
        obs_pauli_targets.append(stim.target_pauli(i, obs_pauli[i]))
# Works fine
circuit.append("OBSERVABLE_INCLUDE", targets=obs_pauli_targets, arg=1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions