Cadabra
a field-theory motivated approach to computer algebra

New in version 2.x

Many things changed/improved in version 2.x with respect to version 1.x. The key change is probably that old 1.x notebooks are not compatible with the 2.x software. This was done intentionally in order to give maximal flexibility to improve the system. It is conceivable that at some point an automatic converter will be written, but for the time being you will either need to convert the notebook by hand or keep version 1.x around.

The other user-visible changes include:

There are also many changes under the hood:

Algorithm name changes from version 1 to 2

The main change with respect to algorithm names is that the '@' prefix for algorithms is no longer necessary. Algorithms are now standard Python functions. They take an expression as their first argument, and (optionally) further arguments to determine what to do. You can use an underscore to refer to the last entered expression, so you can write collect_factors(_) where you would previously write @collect_factors(%).

Where you would previously use an exclamation mark to act at any level, you now add the deep=True argument to a function. This is the default for many algorithms where that makes sense, so you often do not have to add it at all.

A number of algorithms (and a few properties) have changed name or behaviour while going from version 1 to version 2. This was done mostly to make naming more consistent and to avoid weird acronyms in algorithm names.

Algorithms

In general, all algorithms now have names of the form 'action' or 'action_object'.

old name new name notes
@prodflatten flatten_product to avoid abbreviations
@prodsort sort_product to avoid abbreviations
@rewrite_diracbar expand_diracbar make meaning more clear
@epsprod2gendelta epsilon_to_delta avoid obscure names
@pintegrate integrate_by_parts completely reworked and more powerful

Properties

Copyright © 2001-2025 Kasper Peeters
Questions? info@cadabra.science