-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide equivalence checkers #761
Comments
As in the last one this goes on hold until we are ready to scientifically discuss this. Can you put this back on hold or make it in a roadmap for qiskit 0.8. We will have an equivalence checker but after the transpiler is complete. |
This is being done in Aer now. |
reopening as the API to interact with the equivalence checker may end up in Terra |
We have Operator(circuit).equiv(Operator(other_circuit)) and Statevector(circuit).equiv(Statevector(other_circuit)) Am I misunderstanding, or is this issue asking for something else? |
Both of these scale exponentially with the number of qubits in the system. Verifying the equivalence of two Qiskit circuits is as easy as from mqt.qcec import verify
res = verify(qc1, qc2) Note that the tool uses dedicated data structures (decision diagrams and ZX calculus) plus dedicated verification schemes to make the verification way more scalable than the simple construction and comparison of the circuits' unitaries. More information can be found in the documentation at https://mqt.rtfd.io/projects/qcec |
Thanks @burgholzer for sharing! @1ucian0, @ajavadia this is quite an old issue. Apparently, there are both built-in as well as 3rd party solutions. So, do we still want to keep this open? |
great work @burgholzer and team! Consider submitting the project to the Qiskit Ecosystem :) Indeed, probably this issue can be closed. |
According to @liupibm:
The goal of the quivalence checker
Given two circuits, check whether their final amplitude vectors V1 and V2 are equivalent: they differ only in the global phase, i.e., the equation V1E^(Ix)=V2 has a solution.
This is useful for debugging transpiler passes also.
The text was updated successfully, but these errors were encountered: