Recently, I came across ZX calculus. It is an interesting method to describe quantum circuits. However, it seems to me, too complicated for day-to-day use in circuit design (something like to program an application in assembler instead of in higher level language) because it uses only few quantum gates ($Rx$, $Ry$, $H$ and $CNOT$).

My question is for what purposes the ZX calculus was developed?


The ZX calculus was not designed to be a programming language, or a language in which to specify things at a high level. It is a language for reasoning about things on a relatively low level, albeit without digging into the actual physics.

What it was designed for is hinted at in your observations, and by the name of the ZX calculus itself.

  • It can describe individual quantum gates: so it is a notation for circuits (and other quantum procedures — one of the things the ZX calculus was explicitly designed for was to analyse measurement based quantum computing [arXiv:0906.4725]; and Dom Horsman and I showed that it has a very close connection to surface code lattice surgery [arXiv:1704.08670]).

  • It is a calculus : it is a notation in which you can actually do calculations. If you're good with reasoning about commutation relations, you can do this to a limited extent with ordinary circuit diagrams; for the ZX calculus you can in principle do this entirely with diagrams.

There are people who are working on higher-level ZX descriptions of procedures on multiple qubits — eg. [arXiv:1905.00041] — which might become suitable to actually program with if developed further. But the existing version of the ZX calculus is more suitable for an intermediate representation of a compiler, or indeed performing computations or analysis by hand, than as a programming language.

  • $\begingroup$ Do you have some references about higher-level ZX versions? I saw this extention of ZX for multiple wires & matrices, but I'd love to here more about extensions. $\endgroup$ Feb 10 '20 at 21:41
  • 1
    $\begingroup$ @tobiasBora: what you describe is exactly what I have in mind. (I'll add links to references when I get a moment later today.) I couldn't tell you what other people are working on to extend that, but I and others agree that further developments in that direction are one of the better ways to further develop the ZX calculus. If you are looking at [zxcalculus.com], then you'll be relatively up to date. $\endgroup$ Feb 11 '20 at 9:08
  • $\begingroup$ Ok thanks! If you want to save some time I guess the reference is "SZX-calculus: Scalable Graphical Quantum" by Titouan Carette, Dominic Horsman and Simon Perdrix arxiv.org/pdf/1905.00041.pdf $\endgroup$ Feb 11 '20 at 10:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.