Skip to content

Add handling for sympy conditions in deferred measurement transformer #5824

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

Merged
merged 31 commits into from
Nov 4, 2022

Conversation

daxfohl
Copy link
Collaborator

@daxfohl daxfohl commented Aug 12, 2022

Previously the DeferredMeasurementTransformer could only work with classical conditions of type KeyCondition (triggered iff the measurement value of that key != zero). This PR enables the transformer to work with SympyConditions (which allow arbitrary classical logic with multiple keys in the trigger) as well.

We do this by calculating the truth table of the sympy condition, and constructing a quantum control that has the same truth table for the deferred measurement circuit. This approach actually applies to not only sympy conditions, but all classical control conditions. Thus we removed the existing logic for KeyCondition transformation.

Additionally this adds a control_values reduction in the ControlledGate constructor allowing us to remove the special case logic from the transformer.

@daxfohl daxfohl requested review from a team, vtomole and cduck as code owners August 12, 2022 07:14
@daxfohl daxfohl requested a review from viathor August 12, 2022 07:14
@CirqBot CirqBot added the size: M 50< lines changed <250 label Aug 12, 2022
Copy link
Collaborator

@tanujkhattar tanujkhattar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daxfohl Can you please add a description describing the change in this PR ?

@daxfohl daxfohl requested review from tanujkhattar and removed request for viathor August 23, 2022 00:29
@daxfohl daxfohl marked this pull request as draft October 14, 2022 16:28
@daxfohl
Copy link
Collaborator Author

daxfohl commented Oct 14, 2022

Converting to draft until #5883 is approved

@daxfohl daxfohl marked this pull request as ready for review October 25, 2022 00:46
Copy link
Collaborator

@tanujkhattar tanujkhattar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % nits

@tanujkhattar tanujkhattar self-assigned this Nov 3, 2022
@daxfohl daxfohl requested a review from tanujkhattar November 4, 2022 00:49
@tanujkhattar tanujkhattar merged commit 6fba8be into quantumlib:master Nov 4, 2022
@daxfohl daxfohl deleted the sympy-deferred branch November 4, 2022 19:49
rht pushed a commit to rht/Cirq that referenced this pull request May 1, 2023
…quantumlib#5824)

* Add handling for sympy conditions in deferred measurement transformer

* docstring

* mypy

* mypy

* cover

* Make this more generic, covers all kinds of conditions.

* Better docs

* Sympy can also be CX

* docs

* docs

* Add mixed tests, simplify loop, add simplification in ControlledGate

* Fix error message

* Simplify error message

* Inline variable

* fix merge

* qudit sympy test

* fix build

* Fix test

* Fix test

* Remove need for ControlledGate change

* mypy, comment

* nits

Co-authored-by: Tanuj Khattar <[email protected]>
harry-phasecraft pushed a commit to PhaseCraft/Cirq that referenced this pull request Oct 31, 2024
…quantumlib#5824)

* Add handling for sympy conditions in deferred measurement transformer

* docstring

* mypy

* mypy

* cover

* Make this more generic, covers all kinds of conditions.

* Better docs

* Sympy can also be CX

* docs

* docs

* Add mixed tests, simplify loop, add simplification in ControlledGate

* Fix error message

* Simplify error message

* Inline variable

* fix merge

* qudit sympy test

* fix build

* Fix test

* Fix test

* Remove need for ControlledGate change

* mypy, comment

* nits

Co-authored-by: Tanuj Khattar <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size: M 50< lines changed <250
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants