mqt.qmap.plugins.qiskit.clifford_synthesis

Qiskit utilities for Clifford synthesis module.

Functions

synthesize_clifford(...)

Synthesize a Clifford circuit from a given tableau starting from an (optional) initial tableau.

optimize_clifford(...)

Optimize a Clifford circuit starting from an (optional) initial tableau.

Module Contents

synthesize_clifford(target_tableau: str | Clifford | PauliList | mqt.qmap.clifford_synthesis.Tableau, initial_tableau: str | Clifford | PauliList | mqt.qmap.clifford_synthesis.Tableau | None = None, include_destabilizers: bool = False, **kwargs: Any) tuple[QuantumCircuit, mqt.qmap.clifford_synthesis.SynthesisResults][source]

Synthesize a Clifford circuit from a given tableau starting from an (optional) initial tableau.

Parameters:
  • target_tableau – The target tableau to synthesize. If a string is given, it is interpreted as a semicolon separated binary matrix or a list of Pauli strings. The Pauli strings follow the same format as in Stim. If a Clifford or a PauliList is given, it is converted to a Tableau. If a Tableau is given, it is used directly.

  • initial_tableau – The initial tableau to start from. If a string is given, it is interpreted as a semicolon separated binary matrix or a list of Pauli strings. If a Clifford or a PauliList is given, it is converted to a Tableau. If a Tableau is given, it is used directly. If no initial tableau is given, the synthesis starts from the identity tableau.

  • include_destabilizers – Flag to set whether destabilizers should be considered in the synthesis

  • **kwargs – Additional keyword arguments to configure the synthesis. See SynthesisConfiguration for a list of available options.

Returns:

A tuple containing the synthesized circuit and the synthesis results.

optimize_clifford(circuit: mqt.qmap.types.CircuitInputType, initial_tableau: str | Clifford | PauliList | mqt.qmap.clifford_synthesis.Tableau | None = None, include_destabilizers: bool = False, **kwargs: Any) tuple[QuantumCircuit, mqt.qmap.clifford_synthesis.SynthesisResults][source]

Optimize a Clifford circuit starting from an (optional) initial tableau.

Parameters:
  • circuit – The circuit to optimize. If a string is given, it is interpreted as a QASM string or a filename. If a QuantumCircuit is given, it is converted to a QuantumComputation. If a QuantumComputation is given, it is used as is.

  • initial_tableau – The initial tableau to start from. If a string is given, it is interpreted as a semicolon separated binary matrix or a list of Pauli strings. If a Clifford is given or a PauliList is given, it is converted to a Tableau. If a Tableau is given, it is used directly. If no initial tableau is given, the synthesis starts from the identity tableau.

  • include_destabilizers – Flag to set whether destabilizers should be considered in the synthesis

  • **kwargs – Additional keyword arguments to configure the synthesis. See SynthesisConfiguration for a list of available options.

Returns:

A tuple containing the optimized circuit and the synthesis results.