Processing math: 100%

qml.liealg.even_odd_involution

even_odd_involution(op)[source]

The Even-Odd involution.

This is defined in quant-ph/0701193. For Pauli words and sentences, it comes down to counting non-trivial Paulis in Pauli words. For an even (odd) number of qubits, it is of type AI (AII).

Parameters

op (Union[PauliSentence, np.ndarray, Operator]) – Input operator

Returns

Boolean output True or False for odd (k) and even parity subspace (m), respectively

Return type

bool

See also

cartan_decomp()

Example

>>> from pennylane import X, Y, Z
>>> from pennylane.liealg import even_odd_involution
>>> ops = [X(0), X(0) @ Y(1), X(0) @ Y(1) @ Z(2)]
>>> [even_odd_involution(op) for op in ops]
[True, False, True]

Operators with an odd number of non-identity Paulis yield 1, whereas even ones yield 0.

The function also works with dense matrix representations.

>>> ops_m = [qml.matrix(op, wire_order=range(3)) for op in ops]
>>> [even_odd_involution(op_m) for op_m in ops_m]
[True, False, True]