PauliSum reorders the qubits, possibly in a non-deterministic way #6630
Labels
kind/bug-report
Something doesn't seem to work.
triage/accepted
there is consensus amongst maintainers that this is a real bug or a reasonable feature to add
Description of the issue
When retrieving the terms of a
PauliSum
, the resultingPauliString
may have their qubits reordered compared to what was their original order when added to the sum.What is happening behind the scenes is that the Pauli string
cirq.DensePauliString('XY').on(q0, q1)
is added to the PauliSum, but may be turned into acirq.DensePauliString('YX').on(q1, q0)
when retrieving the first term of the sum. They represent the same operation indeed, but do not have the same representation and unitary.As a result, everything based on
PauliSum
produces consistent results at the circuit level, butx
andPauliSum() + x
are not guaranteed to be equivalent at the representation and unitary level. In addition,PauliSum() + x
might have an inconsistent representation over several calls.How to reproduce the issue
Output
Output in Colab
Cirq version
Observed on
1.5.0.dev
with python3.11.9 (main, Apr 6 2024, 17:59:24) [GCC 9.4.0]
in a dev environement. Non-deterministic behavior.Observed on
1.5.0.dev20240531223815
with python3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
running in Colab. Deterministic behavior, but qubit order consistently swapped in the string repr and unitary.The text was updated successfully, but these errors were encountered: