  Reducing the number of non-Clifford quantum gates present in a circuit is an
important task for efficiently implementing quantum computations, especially in
the fault-tolerant regime. We present a new method for reducing the number of
T-gates in a quantum circuit based on the ZX-calculus, which matches or beats
previous approaches to T-count reduction on the majority of our benchmark
circuits in the ancilla-free case, in some cases yielding up to 50%
improvement. Our method begins by representing the quantum circuit as a
ZX-diagram, a tensor network-like structure that can be transformed and
simplified according to the rules of the ZX-calculus. We then show that a
recently-proposed simplification strategy can be extended to reduce T-count
using a new technique called phase teleportation. This technique allows
non-Clifford phases to combine and cancel by propagating non-locally through a
generic quantum circuit. Phase teleportation does not change the number or
location of non-phase gates and the method also applies to arbitrary
non-Clifford phase gates as well as gates with unknown phase parameters in
parametrised circuits. Furthermore, the simplification strategy we use is
powerful enough to validate equality of many circuits. In particular, we use it
to show that our optimised circuits are indeed equal to the original ones. We
have implemented the routines of this paper in the open-source library PyZX.
