Documentation

LeanPool.LeanQuantumAlg.Primitives.PhaseKickback

Phase kickback #

Querying the XOR oracle of f with the target qubit in |−⟩ leaves the target untouched and kicks the value of f back into the phase of the input register [dW19, qcnotes.tex:1167]:

U_f (|x⟩ ⊗ |−⟩) = (−1)^{f(x)} · (|x⟩ ⊗ |−⟩),

the "phase kick-back trick" [dW19, qcnotes.tex:1173]. Dually, a |+⟩ target is left invariant, which lets circuits choose per-branch whether a phase query happens [dW19, qcnotes.tex:1173].

The eigenvalue form replaces the oracle by a controlled unitary: if the target register holds an eigenstate |u⟩ of U, the eigenvalue e^{iθ} is "kicked back" in front of the |1⟩ component of the control [CEMM98, cemm6.tex:163].

Main results #

Phase kickback: on a |−⟩ target the XOR oracle acts as the phase oracle |x⟩ ↦ (−1)^{f(x)} |x⟩; the sign (−1)^{f(x)} is written if f x then -1 else 1.

On a |+⟩ target the XOR oracle acts trivially, whatever f is.

Eigenvalue phase kickback [CEMM98, cemm6.tex:163]: if the target register holds an eigenstate |u⟩ of U with eigenvalue e^{iθ}, the controlled U leaves the target unchanged and kicks the eigenvalue back onto the |1⟩ component of the control [CEMM98, cemm6.tex:142]:

c-U ((a|0⟩ + b|1⟩) ⊗ |u⟩) = (a|0⟩ + e^{iθ} b|1⟩) ⊗ |u⟩.