Intro to Symbolica

Symbolica is a computer algebra system which aims to handle expressions with billions of terms, taking up terabytes of diskspace. It can easily be incorporated into existing projects using its Python, Rust or C++ bindings.

For example, Symbolica allows you to build and manipulate mathematical expressions through matching and replacing patterns, similar to regular expression for text:

A demo of Symbolica

Why Symbolica?

For many years I have worked on developing computer algebra software used for research at the Large Hadron Collider at CERN. The necessary computations involved expressions with millions of terms that could take up a terabyte of memory. The specialized software used for these problems date back to the 1990s and tend to be hard to use, and very hard to maintain. Commercial computer algebra software on the market these days tends to be relatively easier to use, but is not up to handle the computational challenges of cutting edge problems.

I’ve decided to take all the experience that I gained when writing high-performance computer algebra software and design a new product that is both easy to use and is blazingly fast: Symbolica. Even though I am writing Symbolica for a living and I could keep the entire codebase and discussions private, I decided to go for an open approach while still remaining commercially viable.

The code is freely accessible to learn from, but of course not to copy it into another product without explicit permission. Furthermore, Symbolica is free for non-professional use, i.e., for students and hobbyists.

I hope you enjoy this product as much as I do developing it! You’re welcome to reach out to me via e-mail or via Zulip!

Philosophy

The goal of Symbolica is to provide a state-of-the-art commercial computer algebra system while being as open as possible. As you may have seen, the complete source code is available on Github and the development process is open as well on Zulip. The goal of having the source available is for students to learn about computer algebra, for advanced users to modify the code to their needs, to receive community contributions, and to help identify bugs. Copying or usage of the Symbolica code or code snippets in other projects is only allowed by express permission (to prevent someone copying the code and hard work of the Symbolica team without compensation).

Students and hobbyists can also use Symbolica free. Once Symbolica is being used professionally, either in an academic context or in a commercial company, a license is required.