Skip to content

Port core pyzx features #119

@ABorgna

Description

@ABorgna

QuiZX is not intended to have all the features of PyZX, but certainly the core stuff. Here's where it's at:

  • ZX-diagrams
    • building ZX-diagrams and doing basic graph manipulations
    • converting ZX-diagrams to Z + hadamard form
    • switchable underlying graph model (fast vector-based model for sparse graphs, slower hash-based model for dense graphs)
  • ZX-calculus rules
    • spider fusion
    • local complementation
    • pivoting
    • remove identity spiders
    • colour-change
    • pivoting variations (boundary-pivot and gadget-pivot)
  • simplifiers
    • clifford simplifier (from this paper)
    • phase gadget simplifier (from this paper)
    • simplification-based equality checker
  • tensor evaluation based on ndarray
    • exact scalars with cyclotomic
      rational numbers
    • floating point scalars based on num_complex
    • tensor contraction for arbitrary ZX-diagrams
    • equality of tensors with exact scalars
    • approximate equality of tensors with floating point scalars
    • space optimisations
    • choose good contraction ordering (currently uses
      reverse-insertion-order)
    • more human-readable tensor output (e.g. converting to normal matrices, pretty printing)
  • circuits
    • circuit data type
    • read and write QASM
    • conversion from circuits to ZX-diagrams
    • circuit extraction

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions