System and Environment Information
- Apple M3 Max with MacOS v15.6.1 and Rocky Linux v8.5 (aarch64)
- MQT QCEC v3.1.0
- Python v3.13.1
Bug Description
What happened?
Given two specific quantum circuits, MQT QCEC's verify method runs endless and therefore does not report any result.
What did you expect to happen instead?
I would expect MQT QCEC's verify method to report that the two provided quantum circuits are either not_equivalent, equivalent, equivalent_up_to_global_phase, equivalent_up_to_phase, probably_equivalent, probably_not_equivalent, or no_information in case something went wrong.
Steps to Reproduce
Executing the following script:
import sys
from qiskit.qasm2 import load, LEGACY_CUSTOM_INSTRUCTIONS
from mqt.qcec import verify
from mqt.qcec.pyqcec import Configuration
# Load files
print("[DEBUG] Loading inputs...")
a = sys.argv[1]
b = sys.argv[2]
a_qc = load(filename=a, custom_instructions=LEGACY_CUSTOM_INSTRUCTIONS)
print(f"[INFO] {a_qc}")
b_qc = load(filename=b, custom_instructions=LEGACY_CUSTOM_INSTRUCTIONS)
print(f"[INFO] {a_qc}")
# Configure MTQ QCEC
print("[DEBUG] Configuring 'MTQ QCEC'...")
config = Configuration()
config.execution.run_construction_checker = False
config.execution.run_alternating_checker = True
config.execution.run_simulation_checker = True
config.execution.run_zx_checker = True
config.functionality.trace_threshold = 1e-13
config.functionality.check_partial_equivalence = False
config.simulation.fidelity_threshold = 1e-13
# Run verify
print("[DEBUG] Running 'verify'...")
v = verify(a_qc, b_qc, config)
print(f"[INFO] {v}")
as
python bug-issue-report.py <file> <file>
results in the following:
| Command |
Result |
python bug-issue-report.py a.txt a.txt |
equivalent (as expected) |
python bug-issue-report.py b.txt b.txt |
equivalent (as expected) |
python bug-issue-report.py a.txt b.txt |
unknown |
python bug-issue-report.py b.txt a.txt |
unknown |
I ran the third and fourth command for an hour and MTQ QCEC's verify did not report result. I also tried both commands with a timeout of 60 seconds, i.e.,
config.execution.timeout = 60
but the execution never stopped. (This note could perhaps explain why.)
(You might find the quantum circuits a.txt and b.txt in here and here.)
System and Environment Information
Bug Description
What happened?
Given two specific quantum circuits, MQT QCEC's
verifymethod runs endless and therefore does not report any result.What did you expect to happen instead?
I would expect MQT QCEC's
verifymethod to report that the two provided quantum circuits are eithernot_equivalent,equivalent,equivalent_up_to_global_phase,equivalent_up_to_phase,probably_equivalent,probably_not_equivalent, orno_informationin case something went wrong.Steps to Reproduce
Executing the following script:
as
results in the following:
python bug-issue-report.py a.txt a.txtpython bug-issue-report.py b.txt b.txtpython bug-issue-report.py a.txt b.txtpython bug-issue-report.py b.txt a.txtI ran the third and fourth command for an hour and MTQ QCEC's
verifydid not report result. I also tried both commands with a timeout of 60 seconds, i.e.,but the execution never stopped. (This note could perhaps explain why.)
(You might find the quantum circuits
a.txtandb.txtin here and here.)