fastdla.lie_closure

fastdla.lie_closure(generators, *, max_dim=None, print_every=None, **kwargs)

Compute the Lie closure of given generators.

Lie closure generation follows the orthonormalization algorithm in arXiv:2506.01120:

V0 = []
for g in G:
    g_perp = orthogonalize(g, V0)
    if g_perp != 0:
        V0.append(g_perp / norm(g_perp))

V = V0.copy()

Vprev = V0
Vnew = []
while True:
    for g, h in product(V0, Vprev):
        i = commutator(g, h)
        i_perp = orthogonalize(i, V)
        if i_perp != 0:
            Vnew.append(i_perp / norm(i_perp))

    if len(Vnew) == 0:
        break
    V += Vnew
    Vprev = Vnew
    Vnew = []

If keep_original is True, there will be an additional list B which stores the normalized nested commutators h. The function then returns both B and V.

The inputs to this function can be given in the matrix or SparsePauliSum representations. If matrices are given, JAX-based implementation will be called.

Parameters:
  • generators (Any) – Lie algebra elements to compute the closure from.

  • max_dim (Optional[int]) – Cutoff for the dimension of the Lie closure. If set, the algorithm may be halted before a full closure is obtained.

  • print_every (Optional[int]) – Verbosity setting.

Return type:

tuple[Sequence[Any], Sequence[Any]] | Sequence[Any]

Returns:

A basis of the Lie algebra spanned by the nested commutators of the generators. If return_aux=True, a list of auxiliary objects is returned in addition.