qml.labs.dla

Experimental dynamical Lie algebra (DLA) functionality

lie_closure_dense(generators[, n, ...])

Compute the dynamical Lie algebra \(\mathfrak{g}\) from a set of generators using their dense matrix representation.

structure_constants_dense(g[, is_orthonormal])

Compute the structure constants that make up the adjoint representation of a Lie algebra.

cartan_decomp(g, involution)

Cartan Decomposition \(\mathfrak{g} = \mathfrak{k} \oplus \mathfrak{m}\).

recursive_cartan_decomp(g, chain[, ...])

Apply a recursive Cartan decomposition specified by a chain of decomposition types.

cartan_subalgebra(g, k, m, ad[, start_idx, ...])

Compute a Cartan subalgebra (CSA) \(\mathfrak{a} \subseteq \mathfrak{m}\).

variational_kak_adj(H, g, dims, adj[, ...])

Variational KaK decomposition of Hermitian H using the adjoint representation.

Utility functions

adjvec_to_op(adj_vecs, basis[, is_orthogonal])

Transform adjoint vector representations back into operator format.

op_to_adjvec(ops, basis[, is_orthogonal])

Decompose a batch of operators onto a given operator basis.

trace_inner_product(A, B)

Implementation of the trace inner product \(\langle A, B \rangle = \text{tr}\left(A B\right)/\text{dim}(A)\) between two Hermitian operators \(A\) and \(B\).

orthonormalize(basis)

Orthonormalize a list of basis vectors.

pauli_coefficients(H)

Computes the coefficients of one or multiple Hermitian matrices in the Pauli basis.

batched_pauli_decompose(H[, tol, pauli])

Decomposes a Hermitian matrix or a batch of matrices into a linear combination of Pauli operators.

check_orthonormal(g, inner_product)

Utility function to check if operators in g are orthonormal with respect to the provided inner_product.

check_commutation(ops1, ops2, vspace)

Helper function to check \([\text{ops1}, \text{ops2}] \subseteq \text{vspace}\).

check_all_commuting(ops)

Helper function to check if all operators in ops commute.

check_cartan_decomp(k, m[, verbose])

Helper function to check the validity of a Cartan decomposition \(\mathfrak{g} = \mathfrak{k} \oplus \mathfrak{m}.\)

change_basis_ad_rep(adj, basis_change)

Apply a basis_change between bases of operators to the adjoint representation adj.

validate_kak(H, g, k, kak_res, n, error_tol)

Helper function to validate a khk decomposition

run_opt(value_and_grad, theta[, n_epochs, ...])

Boilerplate jax optimization

Involutions

A map \(\theta: \mathfrak{g} \rightarrow \mathfrak{g}\) from the Lie algebra \(\mathfrak{g}\) to itself is called an involution when it fulfills \(\theta(\theta(g)) = g \ \forall g \in \mathfrak{g}\) and is compatible with commutators, \([\theta(g), \theta(g')]=\theta([g, g']).\) Involutions are used to construct a cartan_decomp(). There are seven canonical Cartan involutions of real simple Lie algebras (AI, AII, AIII, BDI, CI, CII, DIII), see Wikipedia. In addition, there is a canonical Cartan involution for real semisimple algebras that consist of two isomorphic simple components (ClassB), see here.

even_odd_involution(op)

The Even-Odd involution.

concurrence_involution(op)

The Concurrence Canonical Decomposition \(\Theta(g) = -g^T\) as a Cartan involution function.

khaneja_glaser_involution(op[, wire])

Khaneja-Glaser involution, which is a type-AIII() Cartan involution with p=q.

AI(op)

Canonical Cartan decomposition of type AI, given by \(\theta: x \mapsto x^\ast\).

AII(op[, wire])

Canonical Cartan decomposition of type AII, given by \(\theta: x \mapsto Y_0 x^\ast Y_0\).

AIII(op[, p, q, wire])

Canonical Cartan decomposition of type AIII, given by \(\theta: x \mapsto I_{p,q} x I_{p,q}\).

BDI(op[, p, q, wire])

Canonical Cartan decomposition of type BDI, given by \(\theta: x \mapsto I_{p,q} x I_{p,q}\).

CI(op)

Canonical Cartan decomposition of type CI, given by \(\theta: x \mapsto x^\ast\).

CII(op[, p, q, wire])

Canonical Cartan decomposition of type CII, given by \(\theta: x \mapsto K_{p,q} x K_{p,q}\).

DIII(op[, wire])

Canonical Cartan decomposition of type DIII, given by \(\theta: x \mapsto Y_0 x Y_0\).

ClassB(op[, wire])

Canonical Cartan decomposition of class B, given by \(\theta: x \mapsto Y_0 x Y_0\).