Quantum computing glossary


The complex conjugate transpose of an operation. For operations that implement a unitary operator, the adjoint is the inverse of the operation and is indicated by a dagger symbol. For example, if the operation U represents the unitary operator $U$, then Adjoint U represents $U^\dagger$. For more information, see Adjoint.


A qubit that serves as temporary memory for a quantum computer and is allocated and de-allocated as needed. For more information, see Multiple qubits.

Bell state

One of four specific maximally entangled quantum states of two qubits. The four states are defined $\ket{\beta_{ij}} = (\mathbb{I} \otimes X^iZ^j) (\ket{00} + \ket{11}) / \sqrt{2}$. A Bell state is also known as an EPR pair.

Bloch sphere

A graphical representation of a single-qubit quantum state as a point in a three-dimensional unit sphere. For more information, see Visualizing Qubits and Transformations using the Bloch Sphere.


An operation or function in the Q# language. For more information, see Operations and functions.

Clifford group

The set of operations that occupy the octants of the Bloch sphere and effect permutations of the Pauli operators. These include the operations $X$, $Y$, $Z$, $H$ and $S$.


A quantum operation that takes one or more qubits as enablers for the target operation. For more information, see Controlled and adjoint operations.

Dirac Notation

A symbolic shorthand that simplifies the representation of quantum states, also called bra-ket notation. The bra portion represents a row vector, for example $\bra{A} = \begin{bmatrix} A{_1} & A{_2} \end{bmatrix}$ and the ket portion represents a column vector, $\ket{B} = \begin{bmatrix} B{_1} \\ B{_2} \end{bmatrix}$. For more information, see Dirac Notation.


The factor by which the magnitude of an eigenvector of a given transformation is changed by the application of the transformation. Given a square matrix $M$ and an eigenvector $v$, then $Mv = cv$, where $c$ is the eigenvalue and can be a complex number of any argument. For more information, see Advanced matrix concepts.


A vector whose direction is unchanged by a given transformation and whose magnitude is changed by a factor corresponding to that vector's eigenvalue. Given a square matrix $M$ and an eigenvalue $c$, then $Mv = cv$, where $v$ is an eigenvector of the matrix and can be a complex number of any argument. For more information, see Advanced matrix concepts.


Quantum particles, such as qubits, can be connected or entangled such that they cannot be described independently from each other. Their measurement results are correlated even when they are separated infinitely far away. Entanglement is essential to measuring the state of a qubit. For more information, see Advanced matrix concepts.

EPR pair

One of four specific maximally entangled quantum states of two qubits. The four states are defined $\ket{\beta_{ij}} = (\mathbb{1} \otimes X^iZ^j) (\ket{00} + \ket{11}) / \sqrt{2}$. An EPR pair is also known as a Bell state


How a quantum state changes over time. For more information, see Matrix exponentials.


A type of subroutine in the Q# language that is purely classical (non-quantum). While functions are used within quantum algorithms, they cannot act on qubits or call operations. For more information, see Operations and functions.


A legacy term for a quantum operation, based on the concept of classical logic gates. A quantum circuit is a network of gates (or operations), based on the similar concept of classical logic circuits.

Global phase

When two states are identical up to a multiple of a complex number $e^{i\phi}$, they are said to differ up to a global phase. Unlike local phases, global phases cannot be observed through any measurment. For more information, see The Qubit.


The Hadamard operation (also referred to as the Hadamard gate or transform) acts on a single qubit and puts it in an even superposition of $\ket{0}$ or $\ket{1}$ if the qubit is initially in the $\ket{0}$ state. In Q#, this operation is applied by the pre-defined H operation.


A variable whose value cannot be changed. An immutable variable in Q# is created using the let keyword. To declare variables that can be changed, use the mutable keyword to declare and the set keyword to modify the value.


A manipulation of a qubit (or set of qubits) that yields the result of an observation, in effect obtaining a classical bit. For more information, see The Qubit.


A variable whose value may be changed after it is created. A mutable variable in Q# is declared using the mutable keyword and modified using the set keyword. Variables created with the let keyword are immutable and their value cannot be changed.


A label for a collection of related names (i.e., operations, functions, and user-defined types). For instance the namespace Microsoft.Quantum.Preparation labels all of the symbols defined in the standard library that help with preparing initial states.


The basic unit of quantum computation in Q#. It is roughly equivalent to a function in C, C++ or Python, or a static method in C# or Java. For more information, see Operations and functions.

Operator application

Performing a quantum operation. This typically applies a unitary matrix to the current quantum state vector.


A subroutine that provides data-dependent information to a quantum algorithm at runtime. Typically, the goal is to provide a superposition of outputs corresponding to inputs that are in superposition. For more information, see Oracles.

Partial application

Calling a function or operation without all the required inputs. This returns a new callable that only needs the missing parameters (indicated by an underscore) to be supplied during a future application. For example, given the function MyFunc(x : int, y : int) : int {return x + y;} you can partially apply it to a new function let NewFunc = MyFunc(_, 3). You can then call the new function at a later time with the missing parameter NewFunc(2) which returns the value 5. For more information, see Partial application.

Pauli operators

A set of three 2 x 2 unitary matrices known as the X, Y and Z quantum operations. The identity matrix, $I$, is often included in the set as well. $I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$, $X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}$, $Y = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}$, $Z = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}$. For more information, see Single-qubit operations.

Quantum circuit diagram

A method to graphically represent the sequence of operations (or gates) for simple quantum programs, for example

Sample circuit diagram.

For more information, see Quantum circuits.

Quantum libraries

Collections of operations, functions and user-defined types for creating Q# programs. The Standard library is installed by default. Other libraries available are the Chemistry library, the Numerics library and the Machine learning library.

Quantum state

The precise state of an isolated quantum system, from which measurement probabilities can be extracted. In quantum computing, the quantum simulator uses this information to simulate how qubits respond to operations. For more information, see The Qubit.


A basic unit of quantum information, analogous to a bit in classical computing. For more information, see The Qubit.


A quantum algorithm that probabilistically succeeds. Upon failure, the routine will retry until successful (or a limit has been reached). For more information, see Repeat Until Success (RUS)

Standard libraries

Operations, functions and user-defined types that are installed along with the Q# compiler during installation. The standard library implementation is agnostic with respect to target machines. For more information, see Standard libraries.


The concept in quantum computing that a qubit is a linear combination of two states, $\ket{0}$ and $\ket{1}$, until it is measured. For more information, see Understanding quantum computing.

Target machine

A compilation target that lowers an abstract quantum program towards hardware or simulation. This typically include re-writes for many purposes including gate replacement, encoding for error correction, geometric layout and others. For more information, see Quantum simulators and host applications.


A method for regenerating data, or the quantum state, of one qubit from one place to another without physically moving the qubit, using entanglement and measurement. For more information, see Quantum circuits and the respective kata at Quantum Katas.


A collection of comma-separated values that acts as a single value. The type of a tuple is defined by the types of values it contains. In Q#, tuples are immutable and can be nested, contain arrays, or used in an array. For more information, see Tuple types.

Unitary operator

An operator whose inverse is equal to its adjoint, i.e., $UU^{\dagger} = \id$.

User-defined type

A collection of built-in or previously defined types that may be referred to as a single unit. For more information, see User-defined types.