Circuit Library Synthesis (B2B)¶
This module provides the synthesis methods with which a bosonic gate is broken down into a
BosonicCircuit of smaller bosonic gates. Pass one to the gate’s synthesis argument to
choose how it gets decomposed. For an Evolution gate that is its time evolution:
Evolution(num_modes, operator, time=1.0, synthesis=BosonicLieTrotter())
or choose them for a whole circuit at once with the B2BSynthesis transpiler pass. Any class
with a synthesize(gate) method can leverage a plugin (see B2BSynthesisPlugin), and the ones
registered under the qiskit_bosons.circuit.synthesis entry point are available by name through
the B2BSynthesisPluginManager.
Both sides of this rewrite live in bosonic space, so these methods can exploit the
groups of the evolved operator (see
Group operator terms: use the operator structure) – unlike the boson-to-qubit synthesis that follows, which only sees
the mapped operator, where the grouping is no longer available. That is what lets the outer
Trotter error between non-commuting groups be reduced by a higher order or more repetitions, which a
product formula handed to MapperFnEvolutionSynthesis
cannot do.
A ModeRotation gate is broken down the same way, into Evolution gates, one for
every two-mode rotation and single-mode phase of its mesh. Its synthesis is None by default,
which leaves the gate whole:
ModeRotation(unitary, synthesis=BosonicClementsDecomposition())
Important
This boson-to-boson step is optional. An Evolution gate can be handed straight to
the boson-to-qubit stage regardless of how many terms its operator holds, and so can a
ModeRotation, given a plugin registered for it. Decomposing in bosonic space first is a
choice, taken to obtain cheaper factors or to expose structure that the later stage can exploit.
|
The protocol for plugins to the |
A simple manager of the installed boson-to-boson synthesis plugins. |
Builtin plugins¶
The table below lists the builtin plugins, organized by the BosonicGate that they act
upon. These are the entry points of the qiskit_bosons.circuit.synthesis group, named
<gate>.<method>:
Circuit instruction name |
Plugin method name |
Reference |
|---|---|---|
|
||
|
||
|
||
|
|
The first-order Lie-Trotter product formula, applied in bosonic space. |
|
The higher-order Suzuki-Trotter product formula, applied in bosonic space. |
|
A synthesis method that Trotterizes an |
|
The decomposition of a mode rotation into a mesh of two-mode rotations and phases. |
|
The draws of the qDRIFT protocol for one |