Tapering Module
Symbolic qubit tapering utilities for Pauli Hamiltonians.
v1: diagonal Z2 tapering (single-qubit Z generators).
v2: general Z₂ symmetry detection via symplectic representation, independent generator selection over GF(2), Clifford rotation synthesis, and a unified tapering pipeline.
Types
| Type | Description |
|
Elementary Clifford gate for tapering rotation. |
|
|
Binary (GF(2)) symplectic vector representing an n-qubit Pauli string. Layout: [x₀ x₁ … xₙ₋₁ | z₀ z₁ … zₙ₋₁] where I=(0,0), X=(1,0), Y=(1,1), Z=(0,1). |
|
|
Tapering method selection. |
|
|
Options for the unified tapering pipeline. |
|
|
Result of the unified tapering pipeline (extends v1 result). |
|
|
Result of a Z2 tapering operation. |
Functions and values
| Function or value |
Description
|
Full Usage:
applyClifford gates hamiltonian
Parameters:
CliffordGate list
hamiltonian : PauliRegisterSequence
Returns: PauliRegisterSequence
|
Apply a sequence of Clifford gates to a PauliRegisterSequence. Uses the symplectic representation for exact conjugation.
|
Full Usage:
applyGatesToSymplectic gates sv
Parameters:
CliffordGate list
sv : SymplecticVector
Returns: SymplecticVector
|
Apply a sequence of Clifford gates to a symplectic vector.
|
|
Returns true if two Pauli strings commute (symplectic inner product = 0 mod 2).
|
|
Defaults: +1 sector, no cap, full Clifford.
|
Full Usage:
diagonalZ2Generators hamiltonian
Parameters:
PauliRegisterSequence
Returns: PauliRegister[]
|
Returns single-qubit Z generators for all detected diagonal Z2 symmetries.
|
Full Usage:
diagonalZ2SymmetryQubits hamiltonian
Parameters:
PauliRegisterSequence
Returns: int[]
|
Detects qubit indices i such that all terms are diagonal (I or Z) on qubit i.
|
Full Usage:
findCommutingGenerators hamiltonian
Parameters:
PauliRegisterSequence
Returns: SymplecticVector[]
|
Find all Pauli strings (as symplectic vectors) that commute with every term in the Hamiltonian. This is the commutant / symmetry group.
|
|
Convert a symplectic vector back to a PauliRegister with coefficient +1.
|
Full Usage:
independentGenerators generators
Parameters:
SymplecticVector[]
Returns: SymplecticVector[]
|
Select a maximal linearly independent subset of symplectic vectors over GF(2).
|
Full Usage:
symplecticInnerProduct a b
Parameters:
SymplecticVector
b : SymplecticVector
Returns: bool
|
Symplectic inner product mod 2: returns true if the two Pauli strings anti-commute. Two n-qubit Paulis commute iff ⟨a, b⟩_s = Σᵢ (aₓᵢ bᵤᵢ ⊕ aᵤᵢ bₓᵢ) = 0 (mod 2).
|
Full Usage:
synthesizeTaperingClifford generators
Parameters:
SymplecticVector[]
Returns: CliffordGate list * int[]
|
Synthesize a Clifford circuit that rotates a set of independent generators each onto a single-qubit Z operator. Returns the gate list and target qubit indices (one per generator).
|
Full Usage:
taper options hamiltonian
Parameters:
TaperingOptions
hamiltonian : PauliRegisterSequence
Returns: TaperingResult
|
Unified tapering pipeline: detect Z₂ symmetries, synthesize Clifford rotation, apply it, then taper the rotated Hamiltonian diagonally.
|
Full Usage:
taperAllDiagonalZ2WithPositiveSector hamiltonian
Parameters:
PauliRegisterSequence
Returns: Z2TaperingResult
|
Convenience helper: taper all detected diagonal Z2 symmetries in the +1 sector.
|
Full Usage:
taperDiagonalZ2 sector hamiltonian
Parameters:
(int * int) list
-
List of (qubitIndex, eigenvalue) pairs with eigenvalue in {+1,-1}.
hamiltonian : PauliRegisterSequence
-
Input Hamiltonian as a Pauli sum.
Returns: Z2TaperingResult
|
Tapers a Hamiltonian by fixing diagonal Z2 symmetry sectors and removing those qubits.
|
|
Convert a PauliRegister to its symplectic binary representation. Coefficient/phase is discarded — only the Pauli structure matters.
|
Full Usage:
z2SymmetryCount hamiltonian
Parameters:
PauliRegisterSequence
Returns: int
|
Count the number of independent Z₂ symmetries of the Hamiltonian. This equals the maximum number of qubits that can be tapered.
|