TimeDependentBlockEncoding user defined type


This documentation refers to the Classic QDK, which has been replaced by the Modern QDK.

Please see https://aka.ms/qdk.api for the API documentation for the Modern QDK.

Namespace: Microsoft.Quantum.Simulation

Package: Microsoft.Quantum.Standard

Represents a BlockEncoding that is controlled by a clock register.

newtype TimeDependentBlockEncoding = (((Qubit[], Qubit[], Qubit[]) => Unit is Adj + Ctl));


An operation marked as a TimeDependentBlockEncoding can be represented by a unitary matrix $U$ controlled by a state $\ket{k}_d$ in clock register d such that an arbitrary operator $H_k$ of interest that acts on the system register s is encoded in the top- left block corresponding to auxiliary state $\ket{0}_a$. That is,

$$ \begin{align} (\bra{0}_a\otimes I_{ds})U(\ket{0}_a\otimes I_{ds}) = \sum_{k}\ket{k}\bra{k}_d\otimes H_k. \end{align} $$.

The inputs to the operation wrapped by this user-defined type are:

  • An array of qubits representing the time register that controls $H_k$.
  • An array of qubits representing the auxiliary register acted on by $U$. The action of $U$ is only defined when this is $\ket{0}_a$.
  • An array of qubits representing the system register acted on by $H$.