Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix string and standard gate mismatch in commutation checker #13991
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
Fix string and standard gate mismatch in commutation checker #13991
Changes from all commits
da53e59
822f8be
50ac8f9
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is now a logical change since it will eagerly return
false
on instructions, which is fine here since we don't check commutations between directives and these don't have defined matrices. Should we also check forOperationRef::Operation
here, which also doesn't have a matrix and is not in the commutation library (it isn't right?)?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't view it as a logical change, just a small efficiency change while I was removing string usage, because we were matching a bit too restrictively before here. We know that no
Instruction
either standard (like measure, reset, etc) or from python (likeIntialize
). Since as you say we can't have a commutation any instruction as they're explicitly non-unitary.I left
Operation
because I thought they could have a matrix (likeClifford
) but looking at the operation trait forPyOperation
we have it hard coded toNone
qiskit/crates/circuit/src/operations.rs
Lines 2726 to 2728 in 6f317f9
Clifford
thoughThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm yes I based this off the Rust implementation for when operations always return
None
... but I'm fine keeping the code logically correct as is, since we can add operations that have matrices 👍🏻(Otherwise it would be very easy to introduce a bug if we forget to remove the
Operation
case here once we add e.g. Cliffords to Rust)