Algebraic structures
Note: Algebra requires Python 3.6 or higher.
pip install algebraSee also the instructions here.
This package provides an algebra where the elements can be manipulated
in a natural way, with basic algebraic simplifications happening automatically.
It also support equality checking, which is conservative:
if x == y, then x is equal to y;
but if x != y, then either x is different from y, or it could not be
proven that x is equal to y.
As an example, let's create numbered elements.
from algebra import Element
class Numbered(Element):
total = 0
def __init__(self):
self.num = Numbered.total
Numbered.total += 1
def render(self, formatter):
return f'x{self.num}'Then instances of Numbered can be manipulated as follows.
>>> x0 = Numbered()
>>> x1 = Numbered()
>>> x0 == x0
True
>>> x0 == x1
False
>>> x0 + x1
x0 + x1
>>> x0 + x0
2 * x0
>>> x0 + x1 == x1 + x0
True
>>> x0 - x0
0
>>> 2 + x0
2 * 1 + x0
>>> (2 + x0) * x1
(2 * 1 + x0) * x1
>>> (2 + x0) * x1 * 0
0Coming soon.
Coming soon.
Coming soon.