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
Bwhich stores the normalized nested commutatorsh. The function then returns bothBandV.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.