pyBoLaNO: A Python symbolic package for normal ordering involving bosonic ladder operators
Hendry M. Lim, Donny Dwiputra, M. Shoufie Ukhtary, Ahmad R. T. Nugraha
TL;DR
pyBoLaNO addresses the computational bottleneck of normal ordering bosonic ladder-operator expressions by implementing Blasiak's formulae in Python using SymPy, and extends this capability to normal-ordered commutators and Lindblad master-equation based expectation-value evolution. The package exposes a compact API (NO, NO_commutator, LME_expval_evo) and supports multipartite systems with multiprocessing, enabling scalable algebraic manipulation for open quantum systems. Demonstrations across representative quantum-oscillator models (e.g., SHO, Rayleigh oscillator, bipartite quantum battery, PT-symmetric trimer, nonreciprocal resonators) validate both correctness and applicability to current quantum optics research. Benchmark results indicate substantial speedups over the default SymPy operator-ordering routines, highlighting the practical impact of using explicit Blasiak-based formulas for large expressions. Overall, pyBoLaNO provides a practical, scalable tool for automated, high-precision symbolic normal ordering and Lindblad-evolution analyses in open quantum systems.
Abstract
We present pyBoLaNO, a Python symbolic package based on SymPy to quickly normal-order (Wick-order) any polynomial in bosonic ladder operators. By extension, this package offers the normal ordering of commutators of any two polynomials in bosonic ladder operators and the evaluation of the normal-ordered expectation value evolution in the Lindblad master equation framework for open quantum systems. The package also supports multipartite descriptions and multiprocessing. We describe the package's workflow, show examples of use, and discuss its computational performance. All codes and examples are available on our GitHub repository.
