ZXCalculus.jl
A implementation of ZX-calculus in Julia.
ZX-calculus is a graphical language for quantum computing. One can represent quantum states and operators as ZX-diagrams, and manipulate them with ZX-calculus rules. As an application of ZX-calculus, one can simplify quantum circuits with it. For more details about ZX-calculus, one can check this website.
GSoC
This package is a Google Summer of Code 2020 project.
Package Features
As an implementation of ZX-calculus, these following features are available similar to the Python implementation PyZX
.
- Building up and manipulating ZX-diagrams
- Simplifying ZX-diagrams with specific rules
- Simplifying quantum circuits with ZX-calculus based algorithms including Clifford simplification and phase teleportation.
- Visualization for ZX-diagrams.
ZXCalculus.jl
can be integrated into the quantum compiler YaoLang.jl
. This makes the following features.
- Reading or outputting quantum circuits in various forms (for example, QASM, YaoBlock instructions, and so on).
- A compiler level circuit simplification engine.
Installation
To install ZXCalculus.jl
, please open Julia's interactive session (known as REPL) and press ]
key in the REPL to use the package mode, then type the following command
pkg> add ZXCalculus
For plotting, please install YaoPlots.jl
in addition.
pkg> add YaoPlots
Contents
Index
ZXCalculus.Match
ZXCalculus.Rule
ZXCalculus.ZXDiagram
ZXCalculus.ZXDiagram
ZXCalculus.ZXDiagram
ZXCalculus.ZXGraph
ZXCalculus.ZXGraph
ZXCalculus.ZXGraph
ZXCalculus.ZXLayout
Base.match
Base.match
Base.replace!
Base.replace!
Graphs.ne
Graphs.neighbors
Graphs.nv
ZXCalculus.add_spider!
ZXCalculus.circuit_extraction
ZXCalculus.clifford_simplification
ZXCalculus.clifford_simplification
ZXCalculus.insert_spider!
ZXCalculus.is_interior
ZXCalculus.phase
ZXCalculus.phase_teleportation
ZXCalculus.phase_teleportation
ZXCalculus.push_gate!
ZXCalculus.push_gate!
ZXCalculus.pushfirst_gate!
ZXCalculus.pushfirst_gate!
ZXCalculus.qubit_loc
ZXCalculus.rem_spider!
ZXCalculus.rem_spiders!
ZXCalculus.rewrite!
ZXCalculus.rewrite!
ZXCalculus.simplify!
ZXCalculus.simplify!
ZXCalculus.spider_type