mimiqcircuits.decomposition.rules.canonical¶
Canonical rewrite rule for decomposing operations to GateU and GateCX.
Classes
Rewrite rule that decomposes operations using their built-in decomposition. |
- class mimiqcircuits.decomposition.rules.canonical.CanonicalRewrite[source]¶
Bases:
RewriteRuleRewrite rule that decomposes operations using their built-in decomposition.
This rule delegates to each operation’s
_decomposemethod, which typically reduces gates to a minimal set of primitives (GateU, GateCX, etc.).The canonical decomposition is the default decomposition defined by each gate class. Most gates decompose down to GateU (arbitrary single-qubit) and GateCX (two-qubit entangling gate).
Example
>>> from mimiqcircuits import GateH >>> from mimiqcircuits.decomposition import CanonicalRewrite >>> rule = CanonicalRewrite() >>> rule.matches(GateH()) True >>> circ = rule.decompose_step(GateH(), [0], [], []) >>> print(circ) 1-qubit circuit with 1 instruction: └── U((1/2)*pi, 0, pi, 0.0) @ q[0]
- matches(op)[source]¶
Check if this rule can decompose the operation.
Matches every operation that has a canonical decomposition, that is whose
supports_canonical_rewrite()is true. The answer does not depend on any basis: an operation thatCanonicalBasiskeeps terminal (such asResetX) still matches, so other bases can expand it. Primitives without a decomposition (GateU,GateCX,Measure,Reset,Barrier, …) do not match.