The FoxBox system puts in practice the black box representation of symbolic objects and provides algorithms for performing the symbolic calculus with such representations. Black box objects are stored as functions. For instance: a black box polynomial is a procedure that takes values for the variables as input and evaluates the polynomial at that given point. FoxBox can compute the greatest common divisor and factorize polynomials in black box representation, producing as output new black boxes. It also can compute the standard sparse distributed representation of a black box polynomial, for example, one which was computed for an irreducible factor. We establish that the black box representation of objects can push the size of symbolic expressions far beyond what standard data structures could handle before.
Furthermore, FoxBox demonstrates the generic program design methodology. The FoxBox system is written in C++. C++ template arguments provide for abstract domain types. Currently, FoxBox can be compiled with SACLIB 1.1, Gnu-MP 1.0, and NTL 2.0 as its underlying field and polynomial arithmetic. Multiple arithmetic plugins can be used in the same computation. FoxBox provides an MPI-compliant distribution mechanism that allows for parallel and distributed execution of FoxBox programs. Finally, FoxBox plugs into a server/client-style Maple application interface.