# Optimizations¶

classConfiguration.Optimizations¶Options that influence which circuit optimizations are applied during pre-processing.

propertybackpropagate_output_permutation¶Backpropagate the output permutation to the input permutation. Defaults to

`False`

since this might mess up the initially given input permutation. Can be helpful for dynamic quantum circuits that have been transformed to a static circuit by enabling the`transform_dynamic_circuit`

optimization.

propertyelide_permutations¶Elide permutations from the circuit by permuting the qubits in the circuit and eliminating SWAP gates from the circuits. Defaults to

`True`

as this typically boosts performance.

propertyfix_output_permutation_mismatch¶Try to fix potential mismatches in output permutations. This is experimental and, hence, defaults to

`False`

.

propertyfuse_single_qubit_gates¶Fuse consecutive single-qubit gates by grouping them together. Defaults to

`True`

as this typically increases the performance of the subsequent equivalence check.

propertyreconstruct_swaps¶Try to reconstruct SWAP gates that have been decomposed (into a sequence of 3 CNOT gates) or optimized away (as a consequence of a SWAP preceded or followed by a CNOT on the same qubits). Defaults to

`True`

since this reconstruction enables the efficient tracking of logical to physical qubit permutations throughout circuits that have been mapped to a target architecture.

propertyremove_diagonal_gates_before_measure¶Remove any diagonal gates at the end of the circuit. This might be desirable since any diagonal gate in front of a measurement does not influence the probabilities of the respective states. Defaults to

`False`

since, in general, circuits differing by diagonal gates at the end should still be considered non-equivalent.

propertyreorder_operations¶The operations of a circuit are stored in a sequential container. This introduces some dependencies in the order of operations that are not naturally present in the quantum circuit. As a consequence, two quantum circuits that contain exactly the same operations, list their operations in different ways, also apply there operations in a different order. This optimization pass established a canonical ordering of operations by, first, constructing a directed, acyclic graph for the operations and, then, traversing it in a breadth-first fashion. Defaults to

`True`

.

propertytransform_dynamic_circuit¶Circuits containing dynamic circuit primitives such as mid-circuit measurements, resets, or classically-controlled operations cannot be verified in a straight-forward fashion due to the non-unitary nature of these primitives, which is why this setting defaults to

`False`

. By enabling this optimization, any dynamic circuit is first transformed to a circuit without non-unitary primitives by, first, substituting qubit resets with new qubits and, then, applying the deferred measurement principle to defer measurements to the end.