Skip to content

🐛 Endless execution of MQT QCEC's verify method #815

@jose

Description

@jose

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.)

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