  Optimising quantum circuits to minimise resource usage is crucial, especially
with near-term hardware limited by quantum volume. This paper introduces an
optimisation algorithm aiming to minimise non-Clifford gate count and two-qubit
gate count by building on ZX-calculus-based strategies. By translating a
circuit into a ZX-diagram it can be simplified before being extracted back into
a circuit. We assert that simplifications preserve a graph-theoretic property
called causal flow. This has the advantage that qubit lines are well defined
throughout, permitting a trivial extraction procedure and in turn enabling the
calculation of an individual transformation's impact on the resulting circuit.
A general procedure for a decision strategy is introduced, inspired by an
existing heuristic based method. Both phase teleportation and the neighbour
unfusion rule are generalised. In particular, allowing unfusion of multiple
neighbours is shown to lead to significant improvements in optimisation. When
run on a set of benchmark circuits, the algorithm developed reduces the
two-qubit gate count by an average of 19.8%, beating both the previous best
ZX-based strategy (14.6%) and non-ZX strategy (18.5%) at the time of
publication. This lays a foundation for multiple avenues of improvement. A
particularly effective strategy for optimising QFT circuits is also noted,
resulting in exactly one two-qubit gate per non-Clifford gate.
