- Compilation/
(Clifford + T) Gate Set
(Clifford + T) Gate Set
The (Clifford + T) gate set typically refers to the set of gates
(Clifford+T):={H,S,CNOT,T}.
It is universal in the sense that any quantum circuit can be approximated to arbitrary precision by this set of gates. One distinguishes between Clifford and non-Clifford gates, where the T gate is a special case of a non-Clifford gate. In many fault-tolerant quantum computing settings, T gates are considered the most expensive gates to implement, and their count is often the target metric to minimize in quantum compilation routines (see this blog post on T-gate optimization).
In most quantum error correction codes like the surface code, (Clifford + T) is the target gate set.
Inputs
- Arbitrary circuit U
Outputs
- Approximated circuit U(Clifford + T)
Example
A Pauli rotation about a multiple of 2π is a Clifford operation. For example, we have
RZ(2π)=e−i4πS.
However, in general, Pauli rotations are realized by a series consisting of phase gates S, Hadamard gates H and, in particular, T gates. For example, RZ(128π) is realized by the series
SHTHTHTHTHTHTHTSHTHTHTHTSHTHTHTHTHTSHTSH
THTHTHTHTSHTHTHTSHTSHTHTSHTSHTSHTHTHTHTS
HTHTHTHTHTSHTSHTHTSHTHTSHTSHTSHTSHTHTSHT
SHTSHTSHTHTHTSHTSHTSHTHTHTHTSHTHTSHTHTHT
SHTHTHTHTSHTHTSHTHTSHTSHTSHTHTHTHTHTHTHT
SHTHTSHTHTHTSHTSHTHTHTSHTSHTSHTHTSHTHTHT
HTSHTSHTSHSSS
with a precision of 10−10.
Depending on the definition, Toffoli gates are not considered to be in (Clifford + T), but they can be decomposed in this gate set in the following way.
import pennylane as qml
toffoli = qml.Toffoli([0, 1, 2]).decomposition()
print(qml.draw(lambda: [qml.apply(op) for op in toffoli])())
0: ───────────╭●───────────╭●────╭●──T──╭●─┤
1: ────╭●─────│─────╭●─────│───T─╰X──T†─╰X─┤
2: ──H─╰X──T†─╰X──T─╰X──T†─╰X──T──H────────┤
Typical usage
In most error correction schemes, quantum circuits are assumed to be executed in the (Clifford + T) gate set, where Clifford gates are executed in a fault-tolerant way and T gates are performed via magic state injection. A magic state ∣H⟩=∣0⟩+ei4π∣1⟩ can be used as a resource from an auxiliary wire to apply T on an arbitrary state ∣ψ⟩ in the following way.
0 : |ψ> ─╭●───────S─┤ T|ψ>
aux: |H> ─╰X──┤↗├──║─┤
╚═══╝
This is called magic state injection. Magic states can be created in a noisy way and purified using magic state distillation to arbitrary precision.
References
[1] "Universal Quantum Computation with ideal Clifford gates and noisy ancillas", Sergei Bravyi, Alexei Kitaev, arXiv:quant-ph/0403025, 2004
[2] "The Solovay-Kitaev algorithm", Christopher M. Dawson, Michael A. Nielsen arXiv:quant-ph/0505030, 2005
[3] "Optimal ancilla-free Clifford+T approximation of z-rotations", Neil J. Ross, Peter Selinger, arXiv:1403.2975, 2014
Cite this page
@misc{PennyLane-Clifford_T, title={(Clifford + T) Gate Set}, howpublished={\url{https://pennylane.ai/compilation/clifford-t-gate-set}}, year={2025} }
Page author(s)
Korbinian Kottmann
Quantum simulation & open source software