Symmetry

PauliPropagation.symmetrymergeMethod
symmetrymerge(psum::AbstractPauliSum, mapfunc::Function) -> AbstractPauliSum

Merge equivalent Pauli strings in psum under a symmetry mapping. Each Pauli string is transformed using mapfunc(pstr) to its canonical representative, and identical representatives are combined.

Arguments

  • psum: A PauliSum containing Pauli strings and coefficients.
  • mapfunc: A function mapping each PauliString to its canonical representative.

Returns

A new PauliSum where symmetric terms have been merged.

Example

psum = PauliSum(6)
add!(psum, :Z, 3)
add!(psum, :Z, 6)
symmetrymerge(psum, pstr -> _translatetolowestinteger(pstr, psum.nqubits))
source
PauliPropagation.translationmergeMethod
translationmerge(psum::AbstractPauliSum, nx::Integer, ny::Integer)

Shift and merge of a psum in a system with 2D translational symmetry.

psum = PauliSum(6)
add!(psum, :Z, 3)
add!(psum, :Z, 6)
translationmerge(psum, 2, 3)
source
PauliPropagation.translationmergeMethod
translationmerge(psum::AbstractPauliSum)

Shift and merge of a psum in a system with 1D translational symmetry.

psum = PauliSum(6)
add!(psum, :Z, 3)
add!(psum, :Z, 6)
translationmerge(psum)
>>> PauliSum(nqubits: 6, 1 Pauli term: 
 2.0 * ZIIIII
)
source