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 #
LeanPool.LeanQuantumAlg.phase_kickback—U_f (|x⟩ ⊗ |−⟩) = (−1)^{f(x)} (|x⟩ ⊗ |−⟩), with the sign written asif f x then -1 else 1.LeanPool.LeanQuantumAlg.xorOracle_apply_tensor_ketPlus—U_f (|x⟩ ⊗ |+⟩) = |x⟩ ⊗ |+⟩.LeanPool.LeanQuantumAlg.eigenvalue_phase_kickback—c-U ((a|0⟩ + b|1⟩) ⊗ |u⟩) = (a|0⟩ + e^{iθ} b|1⟩) ⊗ |u⟩whenU |u⟩ = e^{iθ} |u⟩.
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.
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⟩.