  In many-particle problems involving interacting fermions or bosons, the most
natural language for expressing the Hamiltonian, the observables, and the basis
states is the language of the second-quantization operators. It thus appears
advantageous to write numerical computer codes which allow the user to define
the problem and the quantities of interest directly in terms of operator
strings, rather than in some low-level programming language. Here I describe a
Mathematica package which provides a flexible framework for performing the
required translations between several different representations of operator
expressions: condensed notation using pure ASCII character strings, traditional
notation ("pretty printing"), internal Mathematica representation using nested
lists (used for automatic symbolic manipulations), and various higher-level
("macro") expressions. The package consists of a collection of transformation
rules that define the algebra of operators and a comprehensive library of
utility functions. While the emphasis is given on the problems from solid-state
and atomic physics, the package can be easily adapted to any given problem
involving non-commuting operators. It can be used for educational and
demonstration purposes, but also for direct calculations of problems of
moderate size.
