# Z2Symmetries

`Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, tol=1e-14)`

Bases: `object`

Z2 Symmetries

**Parameters**

**symmetries**(`List`

[`Pauli`

]) – the list of Pauli objects representing the Z_2 symmetries**sq_paulis**(`List`

[`Pauli`

]) – the list of single - qubit Pauli objects to construct the Clifford operators**sq_list**(`List`

[`int`

]) – the list of support of the single-qubit Pauli objects used to build the Clifford operators**tapering_values**(`Optional`

[`List`

[`int`

]]) – values determines the sector.**tol**(`float`

) – Tolerance threshold for ignoring real and complex parts of a coefficient.

**Raises**

**OpflowError** – Invalid paulis

## Methods Defined Here

### consistent_tapering

`Z2Symmetries.consistent_tapering(operator)`

Tapering the operator with the same manner of how this tapered operator is created. i.e., using the same Cliffords and tapering values.

**Parameters**

**operator** (`PauliSumOp`

) – the to-be-tapered operator

**Return type**

**Returns**

The tapered operator

**Raises**

**OpflowError** – The given operator does not commute with the symmetry

### convert_clifford

`Z2Symmetries.convert_clifford(operator)`

This method operates the first part of the tapering. It converts the operator by composing it with the clifford unitaries defined in the current symmetry.

**Parameters**

**operator** (`PauliSumOp`

) – to-be-tapered operator

**Return type**

**Returns**

`PauliSumOp`

corresponding to the converted operator.

**Raises**

**OpflowError** – Z2 symmetries, single qubit pauli and single qubit list cannot be empty

### copy

`Z2Symmetries.copy()`

Get a copy of self. :rtype: `Z2Symmetries`

:returns: copy

### find_Z2_symmetries

`classmethod Z2Symmetries.find_Z2_symmetries(operator)`

Finds Z2 Pauli-type symmetries of an Operator.

**Return type**

**Returns**

a z2_symmetries object contains symmetries, single-qubit X, single-qubit list.

### is_empty

`Z2Symmetries.is_empty()`

Check the z2_symmetries is empty or not. :rtype: `bool`

:returns: Empty or not

### taper

`Z2Symmetries.taper(operator)`

Taper an operator based on the z2_symmetries info and sector defined by tapering_values. The tapering_values will be stored into the resulted operator for a record.

The tapering is a two-step algorithm which first converts the operator into a `PauliSumOp`

with same eigenvalues but where some qubits are only acted upon with the Pauli operators I or X. The number M of these redundant qubits is equal to the number M of identified symmetries.

The second step of the reduction consists in replacing these qubits with the possible eigenvalues of the corresponding Pauli X, giving 2^M new operators with M less qubits. If an eigenvalue sector was previously identified for the solution, then this reduces to 1 new operator with M less qubits.

**Parameters**

**operator** (`PauliSumOp`

) – the to-be-tapered operator

**Returns**

[`PauliSumOp`

]; otherwise, `PauliSumOp`

**Return type**

If tapering_values is None

**Raises**

**OpflowError** – Z2 symmetries, single qubit pauli and single qubit list cannot be empty

### taper_clifford

`Z2Symmetries.taper_clifford(operator)`

This method operates the second part of the tapering. This function assumes that the input operators have already been transformed using `convert_clifford()`

. The redundant qubits due to the symmetries are dropped and replaced by their two possible eigenvalues. The tapering_values will be stored into the resulted operator for a record.

**Parameters**

**operator** (`PauliSumOp`

) – Partially tapered operator resulting from a call to `convert_clifford()`

**Returns**

[`PauliSumOp`

]; otherwise, `PauliSumOp`

**Return type**

If tapering_values is None

**Raises**

**OpflowError** – Z2 symmetries, single qubit pauli and single qubit list cannot be empty

## Attributes

### cliffords

Get clifford operators, build based on symmetries and single-qubit X. :rtype: `List`

[`PauliSumOp`

] :returns: a list of unitaries used to diagonalize the Hamiltonian.

### settings

Return operator settings.

**Return type**

`Dict`

### sq_list

returns sq list

### sq_paulis

returns sq paulis

### symmetries

return symmetries

### tapering_values

returns tapering values

### tol

Tolerance threshold for ignoring real and complex parts of a coefficient.